Неправильная работа программы определения "магического квадрата" - C (СИ)
Формулировка задачи:
Дана целая квадратная матрица n-го порядка. Определить, является ли она магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.
В частности, программа несколько раз выводит фразы и мне лично кажется, что я неверно организовал сбор данных, хотя не понимаю, как это исправить.
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> #define n 4 #define m 4 void main() { int sum1[n],mas[n][m],i,j,sum2[m]; randomize(); for(i=0;i<n;i++) { sum1[i]=0; for(j=0;j<m;j++) { sum2[j]=0; mas[i][j]=random(6); sum2[j]+=mas[i][j]; printf("%d\t",sum2[i]); } sum1[i]=mas[i][j]; printf("%d\t",sum1[i]); } for(i=0;i<n;i++) for(j=0;j<m;j++) if(sum1[i]==sum2[i]) printf("Square IS magical\n"); else printf("Square is NOT magical\n"); getch(); }
Решение задачи: «Неправильная работа программы определения "магического квадрата"»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define n 4 #define m 4 int main() { int sum_row,sum_column,mas[n][m],i,j; srand(time(NULL)); for (i=0;i<n;i++) { for(j=0;j<n;j++) mas[i][j]=rand()%6; //mas[i][j]=1; //для проверки можно заполнить массив единицами } for(i=0;i<n;i++) { sum_column=0; // колонка sum_row=0; // строка for(j=0;j<n;j++) { sum_row+=mas[i][j]; sum_column+=mas[j][i]; } printf("%d\t",sum_row); printf("%d\n",sum_column); if(sum_row!=sum_column) { printf("Square is NOT magical\n"); return 0; } } printf("Square IS magical\n"); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами, генерацией случайных чисел и временем.
- Определение размера массива n и m.
- Объявление переменных: sum_row, sum_column и массив mas[n][m].
- Инициализация генератора случайных чисел с помощью функции srand(time(NULL)).
- Заполнение массива mas[n][m] случайными числами с помощью цикла for и функции rand()%6.
- Вычисление суммы элементов каждой строки и столбца с помощью циклов for и переменных sum_row и sum_column.
- Вывод значения суммы строки на экран с помощью функции printf().
- Проверка условия if(sum_row!=sum_column) для определения является ли квадрат
магическим
. - Вывод соответствующего сообщения на экран с помощью функции printf().
- Возврат значения 0, обозначающего успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д