Является ли данный двумерный массив магическим квадратом - Pascal
Формулировка задачи:
Помогите пожалуйста решить задачки на массив в паскале :
6-Выясните,является ли предложенный двумерный массив размером N*N магическим квадратом,т.е. массивом,суммы элементов которого по столбцам,по строкам и по обеим диагоналям равны.
помогите пожалуста я новичёк пишите всю программу ..........заранее благодарю...........
Решение задачи: «Является ли данный двумерный массив магическим квадратом»
textual
Листинг программы
uses CRT; const matr_max = 50; var matrica : array[1..matr_max, 1..matr_max] of integer; matrica_count : integer; q, r, c, t : integer; bMagicSquare : Boolean; begin ClrScr; Write('Введите размерность матрицы (N<=', matr_max,'): '); ReadLn(matrica_count); if matrica_count > matr_max then matrica_count := matr_max; { забиваем рандомными значениями} Randomize; WriteLn('НАША МАТРИЦА'); for r := 1 to matrica_count do begin for c := 1 to matrica_count do begin matrica[r, c] := random(20)+1; Write(matrica[r, c]:3, ' '); end; WriteLn; end; bMagicSquare := True; { считаем сумму элементов первой строки } t := 0; for c := 1 to matrica_count do t := t + matrica[1, c]; { работаем по строкам } for r := 2 to matrica_count do begin q := 0; for c := 1 to matrica_count do q := q + matrica[r, c]; if q<>t then begin bMagicSquare := False; break; end; end; if bMagicSquare then begin { работаем по столбцам } for r := 1 to matrica_count do begin q := 0; for c := 1 to matrica_count do q := q + matrica[c, r]; if q<>t then begin bMagicSquare := False; break; end; end; if bMagicSquare then begin {проверяем диагонали} {главная диагональ} q := 0; for c := 1 to matrica_count do q := q + matrica[c, r]; if q=t then begin {вторая диагональ} r:=1; c:=matrica_count; q:=0; while r<=matrica_count do begin q:=q+matrica[r,c]; Inc(r); Dec(c); end; if q<>t then bMagicSquare := False; end; end; end; { выводим результаты } if bMagicSquare then WriteLn('Матрица является магическим квадратом.') else WriteLn('Матрица НЕ является магическим квадратом.'); WriteLn; Write('Для продолжения нажмите любую кнопку...'); ReadLn; end.
Объяснение кода листинга программы
- Объявлены переменные: — matr_max — максимальная размерность матрицы (константа) — matrica — двумерный массив для хранения чисел — matrica_count — количество строк в матрице (вводится пользователем) — q, r, c, t — вспомогательные переменные для выполнения различных операций — bMagicSquare — булевая переменная, определяющая является ли матрица магическим квадратом
- Заполнение матрицы случайными числами от 1 до 20.
- Проверка суммы элементов первой строки матрицы.
- Проверка равенства сумм элементов каждой последующей строки матрицы сумме элементов первой строки. Если суммы не равны, то матрица не является магическим квадратом.
- Проверка равенства сумм элементов каждого столбца матрицы сумме элементов первой строки. Если суммы не равны, то матрица не является магическим квадратом.
- Проверка главной и второй диагоналей матрицы. Если суммы не равны, то матрица не является магическим квадратом.
- Вывод сообщения о том, является ли матрица магическим квадратом или нет.
- Завершение работы программы и ожидание нажатия кнопки для продолжения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д