|
|
zadach320.PAS |
|
{* Задача 320 *}Unit ZADACH320;Interface Implementation Begin writeln('Ввести с клавиатуры матрицу 5х5, составленную из чисел 1, 2,…25. Определить является ли заданная целочисленная матрица «магическим квадратом», т.е. такой, в которой сумма элементов в каждой строке, в каждом столбце, и в каждой диагонали одинаковы (равны между собой). Вывести сообщение о результатах своего исследования. Если матрица является «магическим квадратом», то умножить её на матрицу, составленную из числа, которому равны сумма элементов строк, столбцов, диагоналей, иначе умножить её на матрицу, составленную из сумм индексов элементов исходной матрицы.'); End. Program lab_5; Uses zadach320.pas; {* Эту строку можно удалить *} Uses crt; {* Подключаем внешние файлы *} Var {* Необходимые переменные *} A : Array[1..5, 1..5] Of integer; B : Array[1..5, 1..5] Of integer; i : integer; j : integer; sum : integer; k : integer; sumj : integer; g : integer; sumi : integer; sumd1 : integer; sumd2 : integer; sumin : integer; flag : boolean; Begin clrscr; {* Очищаем экран *} randomize; flag := false; k := 1; writeln('Магический квадрат'); For i := 1 To 5 Do {* Увеличиваем i от 1 до 5 с шагом 1 *} For j := 1 To 5 Do {* Увеличиваем j от 1 до 5 с шагом 1 *} Repeat {read(A[i, j]); } A[i, j] := random(4); Until (A[i, j]1); For i := 1 To 5 Do {* Переменная i увеличивается с 1 до 5 *} Begin For j := 1 To 5 Do {* Переменная j увеличивается с 1 до 5 *} Begin If i = j Then sumd1 := sumd1 + A[i, j]; If i + j = 6 Then sumd2 := sumd2 + A[i, j]; sumin := sumin + i + j; write(A[i, j] : 4); End; writeln; {* Пропускаем одну строку *} writeln; {* Пустая строка *} End; For i := 1 To 5 Do {* Переменная i увеличивается с 1 до 5 *} Begin For j := 1 To 5 Do {* Цикл для j => [1 .. 5] *} Begin sumi := sumi + A[i, j]; sumj := sumj + A[j, i]; End; If (sumjsumd1) Or (sumisumd1) Or (sumd1sumd2) Then flag := true; sumi := 0; sumj := 0; End; If flag = false Then Begin writeln('Матрица является магическим квадратом'); For i := 1 To 5 Do {* Цикл для i => [1 .. 5] *} Begin For j := 1 To 5 Do {* Увеличиваем j от 1 до 5 с шагом 1 *} Begin B[i, j] := sumd1 * sumd1; write(B[i, j] : 4); End; writeln; {* Пропускаем одну строку *} writeln; {* Пустая строка *} End; End; Else Begin writeln('Матрица не является магическим квадратом'); For i := 1 To 5 Do {* Увеличиваем i от 1 до 5 с шагом 1 *} Begin For j := 1 To 5 Do {* Переменная j увеличивается с 1 до 5 *} Begin For g := 1 To 5 Do {* Цикл для g => [1 .. 5] *} B[i, j] := B[i, j] + A[i, g] * (g + j); write(B[i, j] : 4); End; writeln; {* Пустая строка *} writeln; {* Пустая строка *} End; End; readln; {* Ждем подтверждения пользователя *} readln; {* Приостановка программы. Ожидание Enter *} End... 07.08.2014 - Breakpoint - точка остановки 07.08.2014 - Топ-10 самых популярных приложений в Facebook 18.11.2013 - Панель управления и персонализация системы. Windows Vista 18.11.2013 - Логические и физические диски. Windows Vista 18.11.2013 - Удаление файлов и папок 01.11.2013 - Программирование дисковых подсистем: возможности 31.10.2013 - Windows8 или Windows7? 31.10.2013 - Windows8, игры |
|
Non-commercial fansite
|