Объясните код - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д