Неправильная работа программы определения "магического квадрата" - 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;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с файлами, генерацией случайных чисел и временем.
  2. Определение размера массива n и m.
  3. Объявление переменных: sum_row, sum_column и массив mas[n][m].
  4. Инициализация генератора случайных чисел с помощью функции srand(time(NULL)).
  5. Заполнение массива mas[n][m] случайными числами с помощью цикла for и функции rand()%6.
  6. Вычисление суммы элементов каждой строки и столбца с помощью циклов for и переменных sum_row и sum_column.
  7. Вывод значения суммы строки на экран с помощью функции printf().
  8. Проверка условия if(sum_row!=sum_column) для определения является ли квадрат магическим.
  9. Вывод соответствующего сообщения на экран с помощью функции printf().
  10. Возврат значения 0, обозначающего успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5
Похожие ответы