У кого под рукой Си-компилятор? (см. 11-ое сообщение треда)
Во-первых, label...
просто в функции где надо пишешь "my_label:" и где надо "goto my_label"
Спасибо, а во-вторых?...
Рамштайну - большое спасибо!
А во вторых, метки - это уж0с
Но - любовь зла, полюбишь и метки!
Мммм, обожаю их!
это не уж0с! это ЗЛО!
в небольших функциях (на пару десятков строк) метки вполне допустимы и сокращают количество букаф
в небольших функциях (на пару десятков строк) метки вполне допустимы и сокращают количество букаф... и развивают дурацкий стиль.
топикстартеру: признавайся, в фортране раньше прогал?
В любом случае, уничтожай в себе эту нездоровую любоь к меткам.
Я помню, как мой научник восхваливал фортран за простоту (типа не нужно лишних структур, всё строится на метках его программы отличались излишней нагромаждённостью, слабой читабельностью, игнорированием простейших оптимизаций.
А метки люблю, потому что прощё как-то всё воспринимается с ними, особенно если перед глазами блок-схема алгоритма.
Люди, кому не в лом, можете запустить прогу (см. ниже). Она должна получать на входе положительное число и выдавать его двоичную запись с нужным (спрашивает в начале) количеством цифр после запятой. Прога делалась наспех, по старой памяти, лишь бы что-то было - никакого "стиля" не соблюдал, и алгоритм вряд ли оптимальный, так что прошу не язвить
#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
> А метки люблю, потому что прощё как-то всё воспринимается
> с ними, особенно если перед глазами блок-схема алгоритма.
"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."
---
"Стране нужен МЕТАН."
#include <stdio.h>это практически несовместные строки, пиши на одном каком-нибудь языке, например на С
m:=m-1;
как исправить так, чтобы прога была на си++?
я думаю, из той кучи библиотек, которую я, как всегда, подключил, нужна одна, максимум две
скорее всего, не нужны матх.аш и стринг.аш
тебе нужно писать на С++ или С, но никак не на паскале
мне нужно на Си++
m:=m-1;
в си++ надо писать чо-нить типа этого
m_new:=m;
m:=m_new-1;
да?
вторая строчка написана на паскале или паскалеподобном языке, скорее всего
а как в си++ надо?
А книжку прочитать?
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
Ты пока непонятно на чем пишешь.
or
m-=1;
or
m=m-1;
вот блин, жалко ответить про какой-то несчастный знак равно/присваивания
вот блин, жалко ответить про какой-то несчастный знак равно/присваиванияу тебя там не только он один... Или ты будешь весь свой код верифаить в форуме?
if (X<=0)Тебе действительно книжку надо читать, т.к. с ветвлением ты плохо знаком.
{
printf("Vvedite polozhitelnoe chislo!\n");
}
...
if(X>=1)
{
...
}
if(X<1)
...
if(X<1) {...}
else {...}
и про то, что метки - это плохой стиль
Ребят, вы можете что-нибудь по существу дела сказать, а не к стилю прикапываться?
Мне главное, чтоб рез-т был, а не бантики всюду подвязаны и ГОСТы выдержаны.
a=b (a:=b в паскале) присваивание
a==b (a=b в паскале, результат bool) равенство, и чо эта тема делает в ХиС >> Development
открой для себя функции и забудь про метки, читать код невозможно
Ребят, вы можете что-нибудь по существу дела сказать, а не к стилю прикапываться?По существу: сперва ознакомься подробнее с простейшими элеметнами языка, научись их активно использовать, а потом программируй на этом языке. Я так понял, что ты очень мало писал на паскале и на сях: ни в одном из этих языков метки не приветствуются (и, вообще-то, начинающих про это извещают обычно).
Ребят, вы можете что-нибудь по существу дела сказать, а не к стилю прикапываться?Часа два назад в твоем сообщении было, что ты прогу кому-то на заказ пишешь?
Мне главное, чтоб рез-т был, а не бантики всюду подвязаны и ГОСТы выдержаны.
Мало того что негде писать, так еще и не делал этого ни разу. Жуть...
Хоть благодаря вам что-нибудь освежу в памяти
"Напишите простую программу на си"
Ребята, напишите мне простую программу, которая считывает натуральное число и печатает его двоичную запись.
всем откликнувшимся спасибо!
"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."
Пойду убью себя апстену.Пожалей стену! =/
Ты учился программированию по бейсику?
Оставить комментарий
smedya
Подзабыл.Чтобы ввести в срр-прогу метки 1, ..., 5, нужно ли их описывать в начале?
(типа там же, где описание переменных, надо ли писать: lable 1, 2, 3, 4, 5; ?)
В теле программы они идут просто:
1:
<... >
2:
<... >
3:
<... >
4:
<... >
5:
<... >
Правильно?