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

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

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

Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int a[3][3];
  4. void print_field()
  5. {
  6. int i, j;
  7. system("clear");
  8. printf("_______\n");
  9. for(i=0;i<3;i++)
  10. {
  11. for(j=0;j<3;j++)
  12. {
  13. printf("|");
  14. if (a[i][j] == 1) printf("X");
  15. else if (a[i][j] == -1) printf("0");
  16. else printf(" ");
  17. }
  18. printf("|\n_______\n");
  19. }
  20. }
  21. int test_for_win(int x,int y)
  22. {
  23. if((a[y][0] == a[y][1]) && (a[y][1] == a[y][2]) && (a[y][0] != 0)) return 1;
  24. if((a[0][x] == a[1][x]) && (a[1][x] == a[2][x]) && (a[0][x] != 0)) return 1;
  25. 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;
  26. return 0;
  27. }
  28. int main(int argc, char *argv[])
  29. {
  30. int i, j, val, c;
  31. for(c =0;c<9;c++)
  32. {
  33. printf("Coordinates: ");
  34. scanf("%d %d", &i, &j);
  35. if (a[i-1][j-1] != 0) {printf("Already set. Retype.\n"); continue;}
  36. if(c % 2 == 0) a[i-1][j-1] = -1;
  37. else a[i-1][j-1] = 1;
  38. print_field();
  39. if (test_for_win(j-1, i-1))
  40. {
  41. exit(0);
  42. }
  43. }
  44. return 0;
  45. }

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

textual
Листинг программы
  1. //Название метода объясняет для чего он служит.
  2. //test_for_win - Тест для победы.
  3. int test_for_win(int x,int y)
  4. {
  5.    //проверка строк.
  6.    if((a[y][0] == a[y][1]) && (a[y][1] == a[y][2]) && (a[y][0] != 0))
  7.         return 1;
  8.    //проверка столбцов.
  9.    if((a[0][x] == a[1][x]) && (a[1][x] == a[2][x]) && (a[0][x] != 0))
  10.         return 1;
  11.    //проверяется диагональ матрицы. равно ли элементы диагонали и не равны ли они нулю
  12.    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)))
  13.         return 1;
  14.    return 0;
  15. }

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут