Магический квадрат. Написать функцию проверки магического квадрата на правильность - C (СИ)
Формулировка задачи:
Создание магического квадрата, если сумма элементов во всех строках, столбцах и диагоналей то же самое. Напишите функцию int is_magic (int **a, Int n), который определяет, является ли магический квадрат правильным. Аргумент содержит квадратную размер n. Размеры n площади составляет 20. Функция возвращает 1, если магический квадрат
Здесь вроде все работает, толь нужно немного исправить код
Заранее спасибо!!!
а
, в противном случае возвращает 0. Пример магического квадрата:8 1 6 3 5 7 4 9 2
Вот что я написал....C |
Решение задачи: «Магический квадрат. Написать функцию проверки магического квадрата на правильность»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int is_magic(int **a, int n) { int i, j, orig = 0, summ = 0; for (i = 0; i < n; i++) orig += a[i][i]; for (i = 0; i < n; i++) summ += a[i][n-1-i]; if (orig != summ) return 0; for (i = 0; i < n; i++) { summ = 0; for (j = 0; j < n; j++) summ += a[i][j]; if (orig != summ) return 0; } for (i = 0; i < n; i++) { summ = 0; for (j = 0; j < n; j++) summ += a[j][i]; if (orig != summ) return 0; } return 1; } int main(int argc, char **argv) { int i, j, **s; s = (int**)malloc(3 * sizeof(int*)); for (i = 0; i < 3; i++) s[i] = (int*)malloc(3 * sizeof(int)); s[0][0] = 8; s[0][1] = 1; s[0][2] = 6; s[1][0] = 3; s[1][1] = 5; s[1][2] = 7; s[2][0] = 4; s[2][1] = 9; s[2][2] = 2; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) printf("%d ", s[i][j]); printf("\n"); } printf("Res: %i", is_magic(s, 3)); return 0; }
Объяснение кода листинга программы
- В функции
is_magic
используются две вложенные циклы для суммирования элементов каждого подмассива. - Первая вложенная итерация суммирует элементы главной диагонали массива.
- Вторая вложенная итерация суммирует элементы побочной диагонали массива.
- Третья вложенная итерация проверяет равенство сумм главной и побочной диагоналей.
- Если суммы не равны, функция возвращает
0
, иначе продолжает дальнейшую проверку. - Четвертая и пятая вложенные итерации проверяют суммарное значение каждого подмассива на равенство сумме элементов главного массива.
- Если найдены неравные суммы, функция возвращает
0
. - Если все суммы равны, функция возвращает
1
. - В функции
main
объявлен двумерный массивs
размером 3x3. - Элементы массива
s
инициализированы значениями 8, 1, 6; 3, 5, 7; 4, 9, 2. - С помощью вложенных циклов элементы массива выводятся на экран.
- Вызывается функция
is_magic
для проверки правильности массиваs
размером 3x3. - Результат проверки выводится на экран.
- Программа возвращает
0
в конце работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д