Объясните код - 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; }
Объяснение кода листинга программы
- Метод
test_for_win
проверяет наличие победителя в игре. - В методе используются массивы
a[y][x]
, гдеy
- номер строки, аx
- номер столбца. - Первая проверка - это проверка строк матрицы. Если все элементы в строке равны между собой и не равны нулю, то возвращается 1.
- Вторая проверка - это проверка столбцов матрицы. Если все элементы в столбце равны между собой и не равны нулю, то возвращается 1.
- Третья проверка - это проверка диагонали матрицы. Если элементы главной диагонали или побочной диагонали равны между собой и не равны нулю, то возвращается 1.
- Если ни одна из проверок не вернула 1, то возвращается 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д