Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Убираем ошибки в программе.

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Убираем ошибки в программе.
Имя
Сообщение << Старые топики   Новые топики >>
Убираем ошибки в программе. - 2011-04-06 21:36:26.120000   
Alexvoin7

Сообщений: 94
Оценки: 0
Присоединился: 2010-09-04 10:35:19.600000
Компилирую программу, запускаю и вот такие ошибки:
- Калькулятор пропускает ввод первого числа
- Matrix пропускает ввод Y/N
Все мои попытки исправить ошибки не к чему не приходили.
Пожалуйста помогите.
Заранее спасибо!
Вот исходник:
#include &lt;windows.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;conio.h&gt; void Calculator(void); void Game(void); int rnd(int range); void seedrnd(void); void Matrix(void); int rnd(int range); void seedrnd(void); int main() { &nbsp;&nbsp;&nbsp; char num; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("*********************************************\n"); &nbsp;&nbsp;&nbsp; printf("Enter number, what do you want:\n\n"); &nbsp;&nbsp;&nbsp; printf("1.Calculator\n"); &nbsp;&nbsp;&nbsp; printf("2.Game\n"); &nbsp;&nbsp;&nbsp; printf("Bonus:\n\n"); &nbsp;&nbsp;&nbsp; printf("9.Matrix\n\n\n"); &nbsp;&nbsp;&nbsp; num=getchar(); &nbsp;&nbsp;&nbsp; switch(num) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '1': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Calculator(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '2': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Game(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '9': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Matrix(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; default: &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("OK. Goodbye!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; getch(); &nbsp;&nbsp;&nbsp; return(0); } void Calculator(void) { &nbsp;&nbsp;&nbsp; int a; &nbsp;&nbsp;&nbsp; int b; &nbsp;&nbsp;&nbsp; int c; &nbsp;&nbsp;&nbsp; int c1; &nbsp;&nbsp;&nbsp; char A[8]; &nbsp;&nbsp;&nbsp; char B[8]; &nbsp;&nbsp;&nbsp; char C[8]; &nbsp;&nbsp;&nbsp; char ch; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("Press first number...\n"); &nbsp;&nbsp;&nbsp; gets(A); &nbsp;&nbsp;&nbsp; a=atoi(A); &nbsp;&nbsp;&nbsp; printf("Press + or - or * or /\n"); &nbsp;&nbsp;&nbsp; gets(C); &nbsp;&nbsp;&nbsp; printf("Press second number...\n"); &nbsp;&nbsp;&nbsp; gets(B); &nbsp;&nbsp;&nbsp; b=atoi(B); &nbsp;&nbsp;&nbsp; switch(c) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '+': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a+b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '-': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a-b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '*': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a*b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '/': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a/b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; printf("Your number %i",c); } void Game(void) { &nbsp;&nbsp;&nbsp; int you; &nbsp;&nbsp;&nbsp; int PC; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("Press Enter to throw dices\n"); &nbsp;&nbsp;&nbsp; printf("Press Enter to START...\n"); &nbsp;&nbsp;&nbsp; getch(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; srand(time(NULL)); &nbsp;&nbsp;&nbsp; you=rand() % 12 + 1; &nbsp;&nbsp;&nbsp; printf("%i\n",you); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PC=rand() % 12 + 1; &nbsp;&nbsp;&nbsp; printf("%i\n",PC); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(you&gt;PC) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("You WIN!!!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; else if(PC&gt;you) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("You LOSE!!!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("DRAW!!!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; getch(); } void Matrix(void) { &nbsp;&nbsp;&nbsp; int i; &nbsp;&nbsp;&nbsp; char A[8]; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("Do you want to start matrix? (Y/N)\n"); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; HANDLE consoleOutput; &nbsp;consoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);&nbsp;&nbsp; &nbsp; SetConsoleTextAttribute(consoleOutput, 0 | 0 | 10); &nbsp;&nbsp;&nbsp; gets(A); &nbsp;&nbsp;&nbsp; if(A[0]=='Y' || A[0]=='y') &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(;;) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%d",rnd); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("OK! Goodbye!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; getch(); } int rnd(int range) { &nbsp;&nbsp;&nbsp; int r; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; r=rand()%range; &nbsp;&nbsp;&nbsp; return(r); } void seedrnd(void) { &nbsp;&nbsp;&nbsp; srand((unsigned)time (NULL)); }
Post #: 1
RE: Убираем ошибки в программе. - 2011-04-07 12:37:43.436666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Перед gets делай fflush(stdin), а лучше используй scanf, которая предназначена для чтения чисел с клавиатуры.
Post #: 2
RE: Убираем ошибки в программе. - 2011-04-07 17:43:13.440000   
Alexvoin7

Сообщений: 94
Оценки: 0
Присоединился: 2010-09-04 10:35:19.600000
Сделал, все вводится, но в ответе всегда -1. Почему?
Я пытался возвращать значение, но это не помогло.
#include &lt;windows.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;conio.h&gt; int Calculator(void); void Game(void); int rnd(int range); void seedrnd(void); void Matrix(void); int rnd(int range); void seedrnd(void); int main() { &nbsp;&nbsp;&nbsp; char num; &nbsp;&nbsp;&nbsp; int i; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("*********************************************\n"); &nbsp;&nbsp;&nbsp; printf("Enter number, what do you want:\n\n"); &nbsp;&nbsp;&nbsp; printf("1.Calculator\n"); &nbsp;&nbsp;&nbsp; printf("2.Game\n"); &nbsp;&nbsp;&nbsp; printf("Bonus:\n\n"); &nbsp;&nbsp;&nbsp; printf("9.Matrix\n\n\n"); &nbsp;&nbsp;&nbsp; num=getchar(); &nbsp;&nbsp;&nbsp; switch(num) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '1': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Calculator(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '2': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Game(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '9': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Matrix(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; default: &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("OK. Goodbye!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; getch(); &nbsp;&nbsp;&nbsp; return(0); } int Calculator(void) { &nbsp;&nbsp;&nbsp; int a; &nbsp;&nbsp;&nbsp; int b; &nbsp;&nbsp;&nbsp; int c; &nbsp;&nbsp;&nbsp; char A[8]; &nbsp;&nbsp;&nbsp; char B[8]; &nbsp;&nbsp;&nbsp; char C[8]; &nbsp;&nbsp;&nbsp; char ch; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("Press first number...\n"); &nbsp;&nbsp;&nbsp; fflush(stdin); &nbsp;&nbsp;&nbsp; scanf("%d",A); &nbsp;&nbsp;&nbsp; a=atoi(A); &nbsp;&nbsp;&nbsp; printf("Press + or - or * or /\n"); &nbsp;&nbsp;&nbsp; fflush(stdin); &nbsp;&nbsp;&nbsp; gets(C); &nbsp;&nbsp;&nbsp; printf("Press second number...\n"); &nbsp;&nbsp;&nbsp; fflush(stdin); &nbsp;&nbsp;&nbsp; scanf("%d",B); &nbsp;&nbsp;&nbsp; b=atoi(B); &nbsp;&nbsp;&nbsp; switch(c) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '+': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a+b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '-': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a-b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '*': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a*b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '/': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a/b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; printf("Your number %d",c); } void Game(void) { &nbsp;&nbsp;&nbsp; int you; &nbsp;&nbsp;&nbsp; int PC; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("Press Enter to throw dices\n"); &nbsp;&nbsp;&nbsp; printf("Press Enter to START...\n"); &nbsp;&nbsp;&nbsp; getch(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; srand(time(NULL)); &nbsp;&nbsp;&nbsp; you=rand() % 12 + 1; &nbsp;&nbsp;&nbsp; printf("%i\n",you); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PC=rand() % 12 + 1; &nbsp;&nbsp;&nbsp; printf("%i\n",PC); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(you&gt;PC) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("You WIN!!!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; else if(PC&gt;you) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("You LOSE!!!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("DRAW!!!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; getch(); } void Matrix(void) { &nbsp;&nbsp;&nbsp; int i; &nbsp;&nbsp;&nbsp; char A[8]; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("Do you want to start matrix? (Y/N)\n"); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; HANDLE consoleOutput; &nbsp;consoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);&nbsp;&nbsp; &nbsp; SetConsoleTextAttribute(consoleOutput, 0 | 0 | 10); &nbsp;&nbsp;&nbsp; gets(A); &nbsp;&nbsp;&nbsp; if(A[0]=='Y' || A[0]=='y') &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(;;) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%d",rnd); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("OK! Goodbye!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; getch(); } int rnd(int range) { &nbsp;&nbsp;&nbsp; int r; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; r=rand()%range; &nbsp;&nbsp;&nbsp; return(r); } void seedrnd(void) { &nbsp;&nbsp;&nbsp; srand((unsigned)time (NULL)); }
Post #: 3
RE: Убираем ошибки в программе. - 2011-04-07 19:37:48.323333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
fflush(stdin);
scanf("%d",A);
a=atoi(A);

замени на
scanf( "%d", &a );

и удали все свои массивы char A[8], B[8] и т.п.
Post #: 4
RE: Убираем ошибки в программе. - 2011-04-07 19:47:20.923333   
Alexvoin7

Сообщений: 94
Оценки: 0
Присоединился: 2010-09-04 10:35:19.600000
Это наверно заколдованный круг, но ошибка та же самая.:)
А код такой:
#include &lt;windows.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;conio.h&gt; int Calculator(void); void Game(void); int rnd(int range); void seedrnd(void); void Matrix(void); int rnd(int range); void seedrnd(void); int main() { &nbsp;&nbsp; char num; &nbsp;&nbsp; int i; &nbsp;&nbsp; &nbsp;&nbsp; printf("*********************************************\n"); &nbsp;&nbsp; printf("Enter number, what do you want:\n\n"); &nbsp;&nbsp; printf("1.Calculator\n"); &nbsp;&nbsp; printf("2.Game\n\n"); &nbsp;&nbsp; printf("Bonus:\n\n"); &nbsp;&nbsp; printf("9.Matrix\n\n\n"); &nbsp;&nbsp; num=getchar(); &nbsp;&nbsp; switch(num) &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '1': &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Calculator(); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '2': &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Game(); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '9': &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Matrix(); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; default: &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("OK. Goodbye!\n"); &nbsp;&nbsp; } &nbsp;&nbsp; getch(); &nbsp;&nbsp; return(0); } int Calculator(void) { &nbsp;&nbsp; int a; &nbsp;&nbsp; int b; &nbsp;&nbsp; int c; &nbsp;&nbsp; int d; &nbsp;&nbsp; printf("Press first number...\n"); &nbsp;&nbsp; scanf( "%d", &amp;a ); &nbsp;&nbsp; printf("Press + or - or * or /\n"); &nbsp;&nbsp; scanf( "%d", &amp;d ); &nbsp;&nbsp; printf("Press second number...\n"); &nbsp;&nbsp; scanf( "%d", &amp;b ); &nbsp;&nbsp; switch(d) &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '+': &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a+b; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '-': &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a-b; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '*': &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a*b; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '/': &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a/b; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp; } &nbsp;&nbsp; printf("Your number %d",c); } void Game(void) { &nbsp;&nbsp; int you; &nbsp;&nbsp; int PC; &nbsp;&nbsp; char i; &nbsp;&nbsp; &nbsp;&nbsp; printf("Press Enter to throw dices\n"); &nbsp;&nbsp; printf("If you want repeat, press Enter. To Exit press ~ and Enter.\n"); &nbsp;&nbsp; printf("Press Enter to START...\n"); &nbsp;&nbsp; getch(); &nbsp;&nbsp; &nbsp;&nbsp; do &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; srand(time(NULL)); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; you=rand() % 12 + 1; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%i\n",you); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PC=rand() % 12 + 1; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%i\n",PC); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(you&gt;PC) &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("You WIN!!!\n"); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else if(PC&gt;you) &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("You LOSE!!!\n"); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else if(PC==you) &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("DRAW!!!\n"); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("Repeat?\n"); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; i=getch(); &nbsp;&nbsp; } &nbsp;&nbsp; while (i!='~'); &nbsp;&nbsp; return(0); } void Matrix(void) { &nbsp;&nbsp; int i; &nbsp;&nbsp; char A[8]; &nbsp;&nbsp; &nbsp;&nbsp; printf("Do you want to start matrix? (Y/N)\n"); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; fflush(stdin); &nbsp;&nbsp; gets(A); &nbsp;&nbsp; HANDLE consoleOutput; consoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);&nbsp;&nbsp; SetConsoleTextAttribute(consoleOutput, 0 | 0 | 10); &nbsp;&nbsp; if(A[0]=='Y' || A[0]=='y') &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(;;) &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%d",rnd); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; } &nbsp;&nbsp; else &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("OK! Goodbye!\n"); &nbsp;&nbsp; } } int rnd(int range) { &nbsp;&nbsp; int r; &nbsp;&nbsp; &nbsp;&nbsp; r=rand()%range; &nbsp;&nbsp; return(r); } void seedrnd(void) { &nbsp;&nbsp; srand((unsigned)time (NULL)); } Кстати, ошибку в Matrix исправил.
Post #: 5
RE: Убираем ошибки в программе. - 2011-04-07 23:57:36.906666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Alexvoin7
Сделал, все вводится, но в ответе всегда -1. Почему?

Потому что для чтения знака операции, ты используешь спецификатор %d. scanf ищет число, не находит его, и сообщает об ошибке. Но ты ведь не проводишь обработку ошибок ввода, поэтому в switch'е идёшь на ветку default, которая отсутствует, то есть switch ничего не делает вообще, и ты выводишь на экран в качестве результата значение неинициализированной переменной.
Post #: 6
RE: Убираем ошибки в программе. - 2011-04-08 08:19:51.386666   
Alexvoin7

Сообщений: 94
Оценки: 0
Присоединился: 2010-09-04 10:35:19.600000
А как провести обработку ошибок ввода.
Кстати, я в switch добавил в default и в ней прописал c=a+b; и теперь калькулятор хотя бы складывает.
Post #: 7
RE: Убираем ошибки в программе. - 2011-04-08 12:38:18.540000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Почитай описание функции scanf. Начни с секции return value.
Post #: 8
RE: Убираем ошибки в программе. - 2011-04-08 13:16:30.716666   
BrainKill

Сообщений: 18
Оценки: 0
Присоединился: 2011-04-04 01:57:14.586666
1. не вижу смысла "num" декларировать как char

int num; int i; printf("*********************************************\n"); printf("Enter number, what do you want:\n\n"); printf("1.Calculator\n"); printf("2.Game\n\n"); printf("Bonus:\n\n"); printf("9.Matrix\n\n\n"); scanf( "%d", &amp;num );
2. Давно ли '+' '/' итп это int?

int Calculator(void) { int a; int b; int c; char d; printf("Press first number...\n"); scanf( "%d", &amp;a ); printf("Press + or - or * or /\n"); scanf( "%c", &amp;d ); printf("Press second number...\n"); scanf( "%d", &amp;b ); switch(d) { &nbsp;&nbsp;&nbsp;&nbsp; case '+': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c=a+b; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp;&nbsp; case '-': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c=a-b; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp;&nbsp; case '*': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c=a*b; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp;&nbsp; case '/': &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c=a/b; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break; } printf("Your number %d",c); }
попробуй так, правда может где и ошибся, так как сам работаю с cout, cin.
Post #: 9
RE: Убираем ошибки в программе. - 2011-04-08 23:51:56.570000   
Alexvoin7

Сообщений: 94
Оценки: 0
Присоединился: 2010-09-04 10:35:19.600000
СПАСИБО ВСЕМ!!!!
Программа наконец работает в полном объеме.
Вот код:
#include &lt;windows.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;conio.h&gt; int Calculator(void); void Game(void); int rnd(int range); void seedrnd(void); void Matrix(void); int rnd(int range); void seedrnd(void); int main() { &nbsp;&nbsp;&nbsp; int num; &nbsp;&nbsp;&nbsp; int i; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Welcome to MuhaNaizer 1.0\n"); &nbsp;&nbsp;&nbsp; printf("********************************************************************************\n"); &nbsp;&nbsp;&nbsp; printf("Enter number, what do you want:\n\n"); &nbsp;&nbsp;&nbsp; printf("1.Calculator\n"); &nbsp;&nbsp;&nbsp; printf("2.Game\n\n"); &nbsp;&nbsp;&nbsp; printf("Bonus:\n\n"); &nbsp;&nbsp;&nbsp; printf("9.Matrix\n\n\n"); &nbsp;&nbsp;&nbsp; num=getchar(); &nbsp;&nbsp;&nbsp; switch(num) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '1': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Calculator(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '2': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Game(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '9': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Matrix(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; default: &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("OK. Goodbye!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; getch(); &nbsp;&nbsp;&nbsp; return(0); } int Calculator(void) { &nbsp;&nbsp;&nbsp; int a; &nbsp;&nbsp;&nbsp; int b; &nbsp;&nbsp;&nbsp; int c; &nbsp;&nbsp;&nbsp; char d; &nbsp;&nbsp;&nbsp; printf("Press first number...\n"); &nbsp;&nbsp;&nbsp; scanf( "%d", &amp;a ); &nbsp;&nbsp;&nbsp; printf("Press + or - or * or /\n"); &nbsp;&nbsp;&nbsp; fflush(stdin); &nbsp;&nbsp;&nbsp; scanf( "%c", &amp;d ); &nbsp;&nbsp;&nbsp; printf("Press second number...\n"); &nbsp;&nbsp;&nbsp; scanf( "%d", &amp;b ); &nbsp;&nbsp;&nbsp; switch(d) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '+': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a+b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '-': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a-b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '*': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a*b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; case '/': &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c=a/b; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; default: &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("I don't understand it!\n"); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; printf("Your number %d",c); } void Game(void) { &nbsp;&nbsp;&nbsp; int you; &nbsp;&nbsp;&nbsp; int PC; &nbsp;&nbsp;&nbsp; char i; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("Press Enter to throw dices\n"); &nbsp;&nbsp;&nbsp; printf("If you want repeat, press Enter. To Exit press ~ and Enter.\n"); &nbsp;&nbsp;&nbsp; printf("Press Enter to START...\n"); &nbsp;&nbsp;&nbsp; getch(); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; do &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; srand(time(NULL)); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; you=rand() % 12 + 1; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%i\n",you); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; PC=rand() % 12 + 1; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%i\n",PC); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(you&gt;PC) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("You WIN!!!\n"); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else if(PC&gt;you) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("You LOSE!!!\n"); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else if(PC==you) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("DRAW!!!\n"); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("Repeat?\n"); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; i=getch(); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; while (i!='~'); &nbsp;&nbsp;&nbsp; return(0); } void Matrix(void) { &nbsp;&nbsp;&nbsp; int i; &nbsp;&nbsp;&nbsp; char A[8]; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("Do you want to start matrix? (Y/N)\n"); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; fflush(stdin); &nbsp;&nbsp;&nbsp; gets(A); &nbsp;&nbsp;&nbsp; HANDLE consoleOutput; &nbsp;consoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);&nbsp;&nbsp; &nbsp; SetConsoleTextAttribute(consoleOutput, 0 | 0 | 10); &nbsp;&nbsp;&nbsp; if(A[0]=='Y' || A[0]=='y') &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(;;) &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%d",rnd); &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("OK! Goodbye!\n"); &nbsp;&nbsp;&nbsp; } } int rnd(int range) { &nbsp;&nbsp;&nbsp; int r; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; r=rand()%range; &nbsp;&nbsp;&nbsp; return(r); } void seedrnd(void) { &nbsp;&nbsp;&nbsp; srand((unsigned)time (NULL)); } Еще раз ВСЕМ СПАСИБО!!!
P.S. Завтра начинаю изучать Java, а потом и С++.
Post #: 10
RE: Убираем ошибки в программе. - 2011-04-09 03:02:00.843333   
BrainKill

Сообщений: 18
Оценки: 0
Присоединился: 2011-04-04 01:57:14.586666
.del
Post #: 11
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Убираем ошибки в программе.







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.