Var
X:array [1..20,1..20] of integer; {Матрица целых чисел максимальной размерности 20x20}
N:integer; {Размерность матрицы}
i,j:integer; {i, j - счётчики циклов}
S,T:integer; {S - "сумма" магического квадрата, T - вспомогательная переменная}
Flag:boolean;
begin
writeln('Проверка матрицы на "магический квадрат".'); {Формулировка цели алгоритма}
write('Введите размерность квадратной матрицы: ');
readln(N);
writeln('Введите поочередно элементы таблицы:');
for i:=1 to N do {Цикл для i от 1 до N}
for j:=1 to N do {Цикл для j от 1 до N}
begin
write('X[',i,',',j,']=');
readln(X[i,j]); {Ввод очередного элемента матрицы X}
end;
writeln;
for i:=1 to N do {Цикл для i от 1 до N}
begin
for j:=1 to N do {Цикл для j от 1 до N}
write (X[i,j]:5); {Форматированный вывод в строку очередного элемента массива X}
writeln;
end;
S:=0; {Начальное значение S присваиваем равным 0}
for i:=1 to N do {Цикл для i от 1 до N}
S:=S+X[1,i]; {Накапливаем в S сумму элементов первой строки}
Flag:=True; {Присваиваем Flag=True, т.е. матрица ПОКА удовлетворяет требованиям}
for i:=1 to N do {Цикл для i от 1 до N}
begin
T:=0; {Присваиваем T = 0}
for j:=1 to N do {Цикл для j от 1 до N}
T:=T+X[i,j]; {Накапливаем в T сумму элементов j-ой строки}
if T<>S then Flag:=False; {Если найденное T не равно S, то матрица УЖЕ не удовлетворяет требованиям}
end;
for j:=1 to N do {Цикл для j от 1 до N}
begin
T:=0;
for i:=1 to N do {Цикл для i от 1 до N}
T:=T+X[i,j]; {Накапливаем в T сумму элементов i-го столбца}
if T<>S then Flag:=False; {Eсли найденное T не равно S, то матрица УЖЕ не удовлетворяет требованиям}
end;
T:=0;
for i:=1 to N do T:=T+X[i,i]; {В цикле для i от 1 до N накапливаем в T сумму эл-тов главной диагонали}
if T<>S then Flag:=False; {Если найденное T не равно S, то матрица УЖЕ не удовлетворяет требованиям}
T:=0;
for i:=1 to N do T:=T+X[i,N-i+1]; {В цикле для i от 1 до N накапливаем в T сумму эл-тов побочной диагонали}
if T<>S then Flag:=False; {Если найденное T не равно S, то матрица УЖЕ не удовлетворяет требованиям}
if (Flag:=True) then writeln('Матрица является "магическим квадратом".')
else writeln('Матрица не является "магическим квадратом".');
readln;
end.
Похожие записи/страницы:
- Проверка матрицы на "магический квадрат" - Pascal(Паскаль)
- дана целая квадратная матрица n-порядка. Определить, является ли она магическим квадратом, т.е. такой, в которой…
- Проверить, является ли заданная целочисленная матрица A(N, N) "магическим квадратом" - Pascal(Паскаль)
- Дана целая квадратная матрица n-го порядка . Определить, является ли она логическим квадратом , т.е во всех…
- Транспонирование квадратной матрицы - Pascal(Паскаль)
- Дана целочисленная прямоугольная матрица. Определить количество отрицательных элементов в тех строках, которые…
- Дана целочисленная матрица A(N, M). Определить, встречается ли заданное целое K среди максимальных элементов…
- Дана матрица A(N, N). Если хотя бы один элемент строки матрицы отрицателен, то все элементы этой строки заменить…