Крестики-нолики - найти ошибку - C (СИ)
Формулировка задачи:
Крестики - нолики. Поле 3х3. Играют два игрока. Первый крестиками,второй ноликами.Ходы задаются цифрами так как показано ниже:
7 8 9
4 5 6
1 2 3
Проблема:при запуске проги выводится "игрок номер 1 сделайте ход.."
ввожу цифру,ход делается..крестик выводится. далее ентер...но ничего.и пока я не введу ещё одну цифру программа не продолжает действия далее "игрок номер два сделайте ход" сделав ход за второго игрока выводится не только 0 который я ввожу но и крестик который я ввел перед этим(когда я вводил цифру потому что программа не продолжалась).
Вот как то так. Пересмотрел несколько раз. но ошибку так и не нашёл.
Помогите пожалуйста =) Осталось устранить только этот недочет и курсовик будет готов.
Тело проги:
#include<stdio.h> #include<conio.h> #include<stdlib.h> void main(void) { char st[9]; int c,b,a,i,j,k; clrscr(); for(i=1;i<10;i++) { st[i]='- '; printf("%c",st[i]); if(i%3==0) printf("\n"); } for(i=1;i<10;i++) { if ((st[1]=='X')&&(st[2]=='X')&&(st[3]=='X')) {printf("IIobeda 1-ogo ugroka\n");goto a;} if ((st[4]=='X')&&(st[5]=='X')&&(st[6]=='X')) {printf("IIobeda 1-ogo ugroka\n");goto a;} if ((st[7]=='X')&&(st[8]=='X')&&(st[9]=='X')) {printf("IIobeda 1-ogo ugroka\n");goto a;} if ((st[1]=='X')&&(st[4]=='X')&&(st[7]=='X')) {printf("IIobeda 1-ogo ugroka\n");goto a;} if ((st[2]=='X')&&(st[5]=='X')&&(st[8]=='X')) {printf("IIobeda 1-ogo ugroka\n");goto a;} if ((st[3]=='X')&&(st[6]=='X')&&(st[9]=='X')) {printf("IIobeda 1-ogo ugroka\n");goto a;} if ((st[1]=='X')&&(st[5]=='X')&&(st[9]=='X')) {printf("IIobeda 1-ogo ugroka\n");goto a;} if ((st[3]=='X')&&(st[5]=='X')&&(st[7]=='X')) {printf("IIobeda 1-ogo ugroka\n");goto a;} if ((st[1]=='0')&&(st[2]=='0')&&(st[3]=='0')) {printf("IIobeda 2-ogo ugroka\n");goto a;} if ((st[4]=='0')&&(st[5]=='0')&&(st[6]=='0')) {printf("IIobeda 2-ogo ugroka\n");goto a;} if ((st[7]=='0')&&(st[8]=='0')&&(st[9]=='0')) {printf("IIobeda 2-ogo ugroka\n");goto a;} if ((st[1]=='0')&&(st[4]=='0')&&(st[7]=='0')) {printf("IIobeda 2-ogo ugroka\n");goto a;} if ((st[2]=='0')&&(st[5]=='0')&&(st[8]=='0')) {printf("IIobeda 2-ogo ugroka\n");goto a;} if ((st[3]=='0')&&(st[6]=='0')&&(st[9]=='0')) {printf("IIobeda 2-ogo ugroka\n");goto a;} if ((st[1]=='0')&&(st[5]=='0')&&(st[9]=='0')) {printf("IIobeda 2-ogo ugroka\n");goto a;} if ((st[3]=='0')&&(st[5]=='0')&&(st[7]=='0')) {printf("IIobeda 2-ogo ugroka\n");goto a;} if(i%2==1) //proveriaem 4et,ne4et; ne4et - X,4et - 0// printf("ugrok No1 sdelaite xod\n"); { b:scanf("%d",&k); switch(k) { case 1:{ if (st[7]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} if (st[7]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} st[7]='X';break;} case 2:{ if (st[8]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} if (st[8]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} st[8]='X';break;} case 3:{ if (st[9]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} if (st[9]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} st[9]='X';break;} case 4:{ if (st[4]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} if (st[4]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} st[4]='X';break;} case 5: { if (st[5]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} if (st[5]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} st[5]='X';break;} case 6:{ if (st[6]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} if (st[6]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} st[6]='X';break;} case 7:{ if (st[1]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} if (st[1]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} st[1]='X';break;} case 8:{ if (st[2]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} if (st[2]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} st[2]='X';break;} case 9:{ if (st[3]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} if (st[3]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto b;} st[3]='X';break;} }; } if(i%2==0) { //uslovie 4et// printf("ugrok No2 sdelaite xod\n"); с:scanf("%d",&k); switch(k) { case 1:{ if (st[7]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} if (st[7]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} st[7]='0';break;} case 2:{ if (st[8]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} if (st[8]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} st[8]='0';break;} case 3:{ if (st[9]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} if (st[9]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} st[9]='0';break;} case 4:{ if (st[4]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} if (st[4]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} st[4]='0';break;} case 5:{ if (st[5]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} if (st[5]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} st[5]='0';break;} case 6:{ if (st[6]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} if (st[6]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} st[6]='0';break;} case 7:{ if (st[1]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} if (st[1]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} st[1]='0';break;} case 8:{ if (st[2]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} if (st[2]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} st[2]='0';break;} case 9:{ if (st[3]=='X') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} if (st[3]=='0') {printf("Nevern xod,sdelaite xod zanovo\n");goto с;} st[3]='0';break;} clrscr(); for(j=1;j<10;j++) { printf("%c",st[j]); if(j%3==0) printf("\n"); } getch(); } a : printf("ugra okon4ena!"); getch(); }
Решение задачи: «Крестики-нолики - найти ошибку»
textual
Листинг программы
'- '
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д