Объясните код - C (СИ) (157329)

Узнай цену своей работы

Формулировка задачи:

#include <stdio.h>
#include <stdlib.h>
 
int a[3][3];
 
void print_field()
{
   int i, j;
   system("clear");
   printf("_______\n");
   for(i=0;i<3;i++)
   {   
      for(j=0;j<3;j++)
      {   
         printf("|");
         if (a[i][j] == 1) printf("X");
         else if (a[i][j] == -1) printf("0");
         else printf(" ");
      }   
      printf("|\n_______\n");
   }   
}
 
int test_for_win(int x,int y)
{
   if((a[y][0] == a[y][1]) && (a[y][1] == a[y][2]) && (a[y][0] != 0)) return 1;
   if((a[0][x] == a[1][x]) && (a[1][x] == a[2][x]) && (a[0][x] != 0)) return 1;
   if(((a[0][0] == a[1][1]) && (a[1][1] == a[2][2]) && (a[0][0] != 0) || ((a[0][2] == a[1][1]) && (a[1][1] == a[2][0]) && a[0][2] != 0))) return 1;
   return 0;
}
 
int main(int argc, char *argv[])
{
   int i, j, val, c;
   for(c =0;c<9;c++)
   {   
      printf("Coordinates: ");
      scanf("%d %d", &i, &j);
      if (a[i-1][j-1] != 0) {printf("Already set. Retype.\n"); continue;}
      if(c % 2 == 0) a[i-1][j-1] = -1; 
      else a[i-1][j-1] = 1;
      print_field();
      if (test_for_win(j-1, i-1))
      {   
         exit(0);
      }   
   }   
   return 0;
}

Решение задачи: «Объясните код»

textual
Листинг программы
//Название метода объясняет для чего он служит.
//test_for_win - Тест для победы.
int test_for_win(int x,int y)
{
   //проверка строк.
   if((a[y][0] == a[y][1]) && (a[y][1] == a[y][2]) && (a[y][0] != 0)) 
        return 1;
   //проверка столбцов.
   if((a[0][x] == a[1][x]) && (a[1][x] == a[2][x]) && (a[0][x] != 0)) 
        return 1;
   //проверяется диагональ матрицы. равно ли элементы диагонали и не равны ли они нулю
   if(((a[0][0] == a[1][1]) && (a[1][1] == a[2][2]) && (a[0][0] != 0) || ((a[0][2] == a[1][1]) && (a[1][1] == a[2][0]) && a[0][2] != 0))) 
        return 1;
   return 0;
}

Объяснение кода листинга программы

  1. Метод test_for_win проверяет наличие победителя в игре.
  2. В методе используются массивы a[y][x], где y - номер строки, а x - номер столбца.
  3. Первая проверка - это проверка строк матрицы. Если все элементы в строке равны между собой и не равны нулю, то возвращается 1.
  4. Вторая проверка - это проверка столбцов матрицы. Если все элементы в столбце равны между собой и не равны нулю, то возвращается 1.
  5. Третья проверка - это проверка диагонали матрицы. Если элементы главной диагонали или побочной диагонали равны между собой и не равны нулю, то возвращается 1.
  6. Если ни одна из проверок не вернула 1, то возвращается 0.

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


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

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

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