У кого под рукой Си-компилятор? (см. 11-ое сообщение треда)

smedya

Подзабыл.
Чтобы ввести в срр-прогу метки 1, ..., 5, нужно ли их описывать в начале?
(типа там же, где описание переменных, надо ли писать: lable 1, 2, 3, 4, 5; ?)
В теле программы они идут просто:
1:
<... >
2:
<... >
3:
<... >
4:
<... >
5:
<... >

Правильно?

apl13

Во-первых, label...

pav7

не нужно описывать в начале
просто в функции где надо пишешь "my_label:" и где надо "goto my_label"

smedya

Спасибо, а во-вторых?...

smedya

Рамштайну - большое спасибо!

sirius

А во вторых, метки - это уж0с

smedya

Да, знаю.
Но - любовь зла, полюбишь и метки!
Мммм, обожаю их!

nas1234

это не уж0с! это ЗЛО!

Olenenok

в небольших функциях (на пару десятков строк) метки вполне допустимы и сокращают количество букаф

Andbar

в небольших функциях (на пару десятков строк) метки вполне допустимы и сокращают количество букаф
... и развивают дурацкий стиль.
топикстартеру: признавайся, в фортране раньше прогал?
В любом случае, уничтожай в себе эту нездоровую любоь к меткам.
Я помню, как мой научник восхваливал фортран за простоту (типа не нужно лишних структур, всё строится на метках его программы отличались излишней нагромаждённостью, слабой читабельностью, игнорированием простейших оптимизаций.

smedya

Не, за всю жизнь работал в qbasic, PASCAL и C/С++
А метки люблю, потому что прощё как-то всё воспринимается с ними, особенно если перед глазами блок-схема алгоритма.
Люди, кому не в лом, можете запустить прогу (см. ниже). Она должна получать на входе положительное число и выдавать его двоичную запись с нужным (спрашивает в начале) количеством цифр после запятой. Прога делалась наспех, по старой памяти, лишь бы что-то было - никакого "стиля" не соблюдал, и алгоритм вряд ли оптимальный, так что прошу не язвить
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<stdio.h>
int odt, odk, k, m, Bila_tochka, tolko_chto;
double X, X_1;
void main
{ // начало основной программы
// Zapasaemsja nachalnimi dannimi
X=-1; // berjom tupoe znachenie
while (X<=0)
{
printf("Vvedite chislo:");
scanf("%lf", &X);
if (X<=0)
{
printf("Vvedite polozhitelnoe chislo!\n");
}
}
odk=0; // berjom tupoe znachenie
while (odk<1)
{
printf("Skolko hotite znakov posle zapjatoj v dvoichnoj zapisi (ne menshe odnogo!):");
scanf("%d", &odk);
if (odk<1)
{
printf("Kolichestvo znakov dolzhno bit' ne menshe odnogo!\n");
}
}
//Nachalis' vichislenija
Bila_tochka=0;
// Istchem naibolshee celoe m takoe, chto 2^m<=X
if(X>=1)
{
X_1=X;
m=-1;
while(X_1>=1)
{
m++;
X_1=X_1/2;
}
}
if(X<1)
{
X_1=X;
m=0;
while(X_1<1)
{
m--;
X_1=X_1*2;
}
}
printf("Dlja proverki: m=%d\n", m);
//nashli takoe m
if(m==0)
{
printf("1.");
odt=0;
Bila_tochka=1;
goto ONE;
}
if(m>=1)
{
printf("1");
odt=m;
goto ONE;
}
if(m==-1)
{
printf("0.1");
odt=0;
odk=odk-1;
Bila_tochka=1;
if(odk>0) goto ONE;
if(odk==0) goto TWO;
}
if(m<-1)
{
if(odk>(-1)*m)
{
printf("0.");
for(k=1;k<-1)*m-1);k++)
{
printf("0");
}
printf("1");
odt=0;
Bila_tochka=1;
odk=odk+m;
goto ONE;
}
if(odk=(-1)*m)
{
printf("0.");
for(k=1;k<-1)*m-1);k++)
{
printf("0");
}
printf("1");
goto TWO;
}
if(odk<(-1)*m)
{
printf("0.");
for(k=1;k<=odk;k++)
{
printf("0");
}
goto TWO;
}
}
ONE:
tolko_chto=1;
goto THREE;
THREE:
if(tolko_chto==1)
{
X=X-(2^m);
goto FOUR;
}
if(tolko_chto==0)
{
goto FOUR;
}
FOUR:
if2^(m-1>X)
{
printf("0");
tolko_chto=0;
goto FIVE;
}
if2^(m-1<=X)
{
printf("1");
tolko_chto=1;
goto FIVE;
}
FIVE:
m=m-1;
if(odt>0)
{
odt=odt-1;
if(odt==0)
{
printf(".");
Bila_tochka=1;
goto THREE;
}
if(odt>0)
{
goto THREE;
}
}
if(odt==0)
{
odk=odk-1;
if(odk==0)
{
goto TWO;
}
if(odt>0)
{
goto THREE;
}
}
TWO: printf ("Programma zakonchila rabotu\n");
} //konec

Ivan8209

> Не, за всю жизнь работал в qbasic
> А метки люблю, потому что прощё как-то всё воспринимается
> с ними, особенно если перед глазами блок-схема алгоритма.
"It is practically impossible to teach good programming to students
that have had a prior exposure to BASIC: as potential programmers
they are mentally mutilated beyond hope of regeneration."
---
"Стране нужен МЕТАН."

Elina74

#include <stdio.h>
m:=m-1;
это практически несовместные строки, пиши на одном каком-нибудь языке, например на С

smedya

мои познания не настолько глубоки, чтобы различать си и си++
как исправить так, чтобы прога была на си++?
я думаю, из той кучи библиотек, которую я, как всегда, подключил, нужна одна, максимум две
скорее всего, не нужны матх.аш и стринг.аш

Elina74

тебе нужно писать на С++ или С, но никак не на паскале

smedya

мне нужно на Си++

smedya

или вместо
m:=m-1;
в си++ надо писать чо-нить типа этого
m_new:=m;
m:=m_new-1;
да?

Elina74

вторая строчка написана на паскале или паскалеподобном языке, скорее всего

smedya

а как в си++ надо?

Ivan8209

> а как в си++ надо?
А книжку прочитать?
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

Andbar

почитай какую-нить простейшую книжку по с или с++
Ты пока непонятно на чем пишешь.

sirius

m--;
or
m-=1;
or
m=m-1;

smedya

вот блин, жалко ответить про какой-то несчастный знак равно/присваивания

Andbar

вот блин, жалко ответить про какой-то несчастный знак равно/присваивания
у тебя там не только он один... Или ты будешь весь свой код верифаить в форуме?

Andbar

Особенно понравилось это:
if (X<=0)
{
printf("Vvedite polozhitelnoe chislo!\n");
}
...
if(X>=1)
{
...
}
if(X<1)
...
Тебе действительно книжку надо читать, т.к. с ветвлением ты плохо знаком.

smedya

да знаю я про
if(X<1) {...}
else {...}
и про то, что метки - это плохой стиль
Ребят, вы можете что-нибудь по существу дела сказать, а не к стилю прикапываться?
Мне главное, чтоб рез-т был, а не бантики всюду подвязаны и ГОСТы выдержаны.

RomanLeon

ну и быдлопрограмма, такого гавеного кода давно не видел
a=b (a:=b в паскале) присваивание
a==b (a=b в паскале, результат bool) равенство, и чо эта тема делает в ХиС >> Development

smedya

RomanLeon

открой для себя функции и забудь про метки, читать код невозможно

Andbar

Ребят, вы можете что-нибудь по существу дела сказать, а не к стилю прикапываться?
По существу: сперва ознакомься подробнее с простейшими элеметнами языка, научись их активно использовать, а потом программируй на этом языке. Я так понял, что ты очень мало писал на паскале и на сях: ни в одном из этих языков метки не приветствуются (и, вообще-то, начинающих про это извещают обычно).

Boris1980

Ребят, вы можете что-нибудь по существу дела сказать, а не к стилю прикапываться?
Мне главное, чтоб рез-т был, а не бантики всюду подвязаны и ГОСТы выдержаны.
Часа два назад в твоем сообщении было, что ты прогу кому-то на заказ пишешь?
Мало того что негде писать, так еще и не делал этого ни разу. Жуть...

smedya

Делал, но давно это было, уж года два как, всё теперь позабылось...
Хоть благодаря вам что-нибудь освежу в памяти

Maurog

начни новый топик

"Напишите простую программу на си"
Ребята, напишите мне простую программу, которая считывает натуральное число и печатает его двоичную запись.
всем откликнувшимся спасибо!

apl13

"It is practically impossible to teach good programming to students
that have had a prior exposure to BASIC: as potential programmers
they are mentally mutilated beyond hope of regeneration."
Пойду убью себя апстену.

Ober

Пойду убью себя апстену.
Пожалей стену! =/

kruzer25

Ты учился программированию по бейсику?
Оставить комментарий
Имя или ник:
Комментарий: