Моя программа должна проверить, является ли матрица ввода магический квадрат .
Это почти сделано, но у меня проблема с фукцией.Я не уверен, почему, но он возвращает неправильные значения.Мне нужна функция, чтобы вернуть 1, если квадрат является магией, и вернуть 0, если квадрат не является магией.Я получаю странный вывод и ошибка сегментации.
пример ввода:
3 - size of square, square:
8 1 6
3 5 7
4 9 2
пример вывода (функция возвращает 1, потому что квадрат - это магия), напечатанный на экране, это квадрат - это магия.
Код:
#include<stdio.h>
#include <stdlib.h>
int is_magic(int m[][size], size_t size)
{
int sum = 0;
for(size_t col = 0; col < size; col++)
{
sum += m[col];
}
for(size_t row = 1; row < size; row++)
{
int psum = 0;
for(size_t col = 0; col < size; col++)
{
psum += m[col + row * size];
}
if(psum != sum) return 0;
}
for(size_t col = 0; col < size; col++)
{
int psum = 0;
for(size_t row = 0; row < size; row++)
{
psum += m[col + row * size];
}
if(psum != sum) return 0;
}
return 1;
}
int main()
{
int size,row,column;
scanf("%d",&size);
int *matrix
matrix = (int**)malloc(size * sizeof(int*));
for (row = 0; row < size; row++)
matrix[row] = (int*)malloc(size * sizeof(int));
for (row = 0; row < size; row++)
for (column = 0; column < size; column++)
scanf("%d ", &matrix[row][column]);
if(is_magic(matrix, size))
{
printf("Magic square");
}
else
{
printf("Not magic square");
}
return 0;
}