Магический квадрат, где пользователь может сам задать количество элементов в стороне квадрата - C (СИ)
Формулировка задачи:
Как изменить этот код, чтобы N не была константой, а пользователь сам вводил значение N. Заранее благодарен за ответ
#include <stdio.h> const int N=3; int main (void) { int mass[N][N]; int i,j,p,g,k,t; int m=0; int sumSTR=0; int sumSTB=0; int diag1=0; int diag2=0; printf ("\n"); for (i=0; i<N; i++){ for (j=0; j<N; j++){ printf ("mass[%d][%d]= ", i,j); scanf ("%d", &mass[i][j]); } } for (i=0,j=0; j<N; j++){ m+=mass[i][j]; } for (i=1; i<N; i++){ sumSTR=0; for (j=0; j<N; j++) sumSTR+=mass[i][j]; if (sumSTR != m){ printf ("It s not magic"); return 0; } } for (j=0; j<N; j++){ sumSTB = 0; for (t=0; t<N; t++) sumSTB+=mass[t][j]; if (sumSTB != m){ printf ("It s not magic"); return 0; } } for (p=0,j=0; p<N; p++,j++) diag1+=mass[p][j]; if (diag1 != m){ printf ("It s not magic"); return 0; } for (g=0, k=N-1; g<N; g++, k--) diag2+=mass[g][k]; if (diag2 != m){ printf ("It s not magic"); return 0; } printf("\n%d",sumSTR);printf("\n"); printf("%d",sumSTB);printf("\n"); printf("%d",diag1);printf("\n"); printf("%d",diag2);printf("\n"); int CONTROL = m; if ((sumSTR == CONTROL) && (sumSTB == CONTROL) && (diag1 == CONTROL) && (diag2 == CONTROL)){ printf ("Magic matrix"); } else { printf ("not magic matrix"); } return 0; }
Решение задачи: «Магический квадрат, где пользователь может сам задать количество элементов в стороне квадрата»
textual
Листинг программы
int **mass; int N; ......... printf("N:"); scanf("%d",&N); mass=(int**)malloc(N*sizeof(int*)); for(i=0; i<N; i++) mass[i]=(int*)malloc(N*sizeof(int)); //тут все твое ............... //закончил for(i=0; i<N; i++) free(mass[i]); free(mass);
Объяснение кода листинга программы
В этом коде:
- Объявляются две переменные: mass (указатель на массив указателей на int) и N (целое число).
- С помощью функции scanf вводится значение переменной N.
- С помощью функции malloc выделяется память под массив указателей на int, а затем с помощью цикла for выделяется память под каждый элемент массива.
- В этом месте кода (после комментария
тут все твое
) происходит какая-то конкретная реализация алгоритма для магического квадрата (но это не указано в вопросе, поэтому мы не будем рассматривать этот блок). - После окончания работы с массивом, с помощью цикла for освобождается память, выделенная под каждый элемент массива.
- Освобождается память, выделенная под массив указателей на int.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д