- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
#include <stdio.h>
#include <conio.h>
#include <windows.h>
int main()
{
nachalo: system("cls");
int a;
printf("Write first number...");
scanf("%i", &a);
int b;
printf("Write second number...");
scanf("%i", &b);
int res1;
res1=a+b;
int res2;
res2=a-b;
int res3;
res3=a*b;
float res4;
res4=(float)a/b;
int res5;
res5=a*a;
int res6;
res6=b*b;
printf("\nSumm of %i + %i = %i\n", a, b, res1);
printf("Difference of %i - %i = %i\n", a, b, res2);
printf("Production of %i * %i = %i\n", a, b, res3);
printf("Private of %i / %i = %.4f\n\n", a, b, res4);
printf("Square of %i is %i\n", a, res5);
printf("Square of %i is %i\n\n", b, res6);
int max;
max = (b>a) ? b:a;
printf("The greatest number of %i and %i is %d\n\n", a, b, max);
int choice;
printf("To run program again, press number 1, else numbers \nor symbols will close the program...\n> ");
scanf("%i", &choice);
if (choice == 1)
{
goto nachalo;
}
else (choice != 1);
{
return 0;
}
}
Калькулятор. Nuff said
govnomonad 11.12.2012 07:32 # +5
heivizi 11.12.2012 08:27 # 0
Steve_Brown 11.12.2012 09:54 # +3
bormand 11.12.2012 15:02 # 0
P.P.S. А в остальном, для первой лабы, очень даже хорошо. можно совместить в Конструкцию с goto стоит переделать на while. Например так: P.S. system("cls"), имхо, не нужен. Красоты и удобства эта очистка не добавляет. <windows.h> тоже не нужен, и без него должно собраться.
TarasB 11.12.2012 18:45 # +1
следует заменить на
bormand 11.12.2012 20:30 # +1
Тонко. Я даже ощутил сишкобатхерт и проверил.
3.14159265 11.12.2012 21:53 # +4
LispGovno 11.12.2012 21:58 # 0
http://ideone.com/F2tR3o
TarasB 12.12.2012 18:42 # 0
LispGovno 12.12.2012 22:27 # 0
LispGovno 12.12.2012 22:54 # 0
http://liveworkspace.org/code/4skHZ7$13
TarasB 13.12.2012 10:35 # 0
eth0 11.12.2012 11:43 # 0
Неужели такую лаботу могли принять?
bormand 11.12.2012 15:06 # 0
Верно. Но и верховным злом считать goto не стоит. При программировании на Си встречаются ситуации в которых goto упрощает код и делает его более понятным (код ОПа, естественно, не такая ситуация, и здесь goto не нужен).
> Неужели такую лаботу могли принять?
Почему нет? Я бы на месте препода пояснил неудачные моменты и принял. Пересдавать лабу из-за мелких придирок считаю пустой тратой времени. Пусть лучше студент вместо этого потратит время на следующую лабу, и попробует там избежать этих проблем.
eth0 11.12.2012 17:13 # 0
bormand 11.12.2012 18:09 # 0
P.S. Но я считаю, что задача препода при приеме лаб - раскрыть студенту его ошибки, и пояснить способы, как их избежать (к сожалению таких очень мало), а не сказать ему "ты мудак, иди нахуй отсюда, ниче я тебе не расскажу, придешь с переписанной лабой" (как делают многие преподы). На лекции ведь все тонкости не раскроешь, да и никто не запомнит их, пока не нарвется сам. Ведь в мозг врезаются именно ситуации в которых участвовал ты сам, а не абстрактные советы в вакууме.
defecate-plusplus 11.12.2012 22:07 # 0
у меня преподы на лабах просто проверяли что работает на их введенных значениях, ну а малознакомые иногда просили на месте что-нибудь изменить, чтобы удостовериться, что лаба писана мной
bormand 12.12.2012 05:37 # 0
Маловероятно. Жаль конечно.
> у меня преподы на лабах просто проверяли что работает на их введенных значениях
А у нас был эпичный препод, который лабу проверял строго на тех числах, которые даны заранее, и ни на каких более, и, при этом, совершенно не интересовался исходниками. В результате каждый год половина студентов сдавала ему прогу, в которой по нажатию на кнопку "рассчитать" появляется намертво вбитый ответ.
3.14159265 11.12.2012 17:17 # +1
90 процентов этих goto суть breakи. Остальные 10% не нужны и могут быть заменены структурным кодом. Из этих 10% - половина duff device-подобные извраты.
bormand 11.12.2012 17:39 # +1
break'и из двух циклов да, структурно они смотрятся как флажкоебское говно, или внешний цикл засран копиями условий выхода из внутренего, что еще хуже.
Прыжок к концу функции для освобождения ресурсов. Были бы исключения или RAII - был бы не нужен.
Ну и реализация конечных автоматов (в сгенеренном коде).
Других полезных применений не попадалось.
LispGovno 11.12.2012 18:09 # −1
Структурно и никакого флашкоёбского говна.
LispGovno 11.12.2012 18:14 # 0
bormand 11.12.2012 18:23 # 0
P.S. Флашкоебского говна нет, но код стал намного непонятнее чем какой-нибудь такой
LispGovno 11.12.2012 18:29 # 0
http://govnokod.ru/12269#comment163986
LispGovno 11.12.2012 18:30 # 0
bormand 11.12.2012 18:34 # 0
Естественно, что goto нужен не для каждого выхода из двух циклов (в 90% случаев сойдет return, особенно в крестах). А только для тех, где после них нужно что-то освободить или доделать, и при этом должны быть доступны некие переменные как внутри цикла, так и после него. Вот тогда функция становится неудобной (у нее много не особо осмысленных аргументов, да еще и переданных по указателю).
LispGovno 12.12.2012 23:06 # 0
ко ко ко
http://liveworkspace.org/code/36ND6p$1
bormand 13.12.2012 16:19 # +1
LispGovno 13.12.2012 17:03 # +1
Ты прямо как про религию какую-то говоришь.
defecate-plusplus 13.12.2012 17:06 # +3
ещё кто-то сомневается, что с/с++ - самый эротичный язык программирования?
bormand 11.12.2012 18:16 # +2
P.S. Чем доставляют gotoфобы - так это тем, что они готовы наворотить конструкции вдвое превышающие по длине код с goto, и, при этом, еще более сомнительные по понятности, лишь бы не ставить goto.
bormand 11.12.2012 18:38 # +1
LispGovno 11.12.2012 22:25 # +1
TarasB 11.12.2012 18:47 # +1