Крестики-нолики - найти ошибку - 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
Листинг программы
'- '

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5