Двумерный массив, содержащий равное количество строк и столбцов, называется магическим квадратом, если суммы чисел, записанных в каждой строке, каждом столбце и каждой
из двух больших диагоналей, равны одному и тому же числу. Определить, является ли данный массив
А с n строк и n столбцов магическим квадратом.На мове c можно и с++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int *arr;
int x, y, i, j, sum = 0, min = 0, minstr = 0;
srand(time(NULL));
x = 2 + rand() % 10;
y = 2 + rand() % 6;
arr = (int*)malloc(x*y*sizeof(int));
printf("Array %d x %d: \n", x, y);
for (i = 0; i < x; i++){
for (j = 0; j < y; j++){
*(arr + i*y + j) = -50 + rand() % 100;
printf("arr[%d][%d] = %3d; ", i, j, *(arr + i*y + j));
}
printf("\n");
}
for (i = 0; i < y; i++)
min += *(arr + i);
minstr = 0;
for (i = 1; i < x; i++){
for (j = 0; j < y; j++)
sum += *(arr + i*y + j);
if (sum < min) {
min = sum;
minstr = i+1;
}
sum = 0;
}
printf("Minimum amount: %d (%d line)", min, minstr);
free(arr);
return 0;
Объяснение:
это пример как делать