Нахождение суммы элементов диагоналей - Pascal
Формулировка задачи:
Дана матрица А размера n на n. Найти сумму элементов главной и побочной диагонали. Минимальное и максимальное значения среди этих элементов. Как будет выглядеть эта программа?
Решение задачи: «Нахождение суммы элементов диагоналей»
textual
Листинг программы
uses crt;
const nmax=20;
var a,at:array[1..nmax,1..nmax] of integer;
n,i,j,s,mn,mx:integer;
begin
clrscr;
randomize;
repeat
write('Размер матрицы ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Матрица A:');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(50);
write(a[i,j]:4);
end;
writeln;
end;
writeln;
mx:=a[1,1];
mn:=a[1,1];
s:=0;
for i:=1 to n do
begin
s:=s+a[i,i]+a[i,n-i+1];{сумма на диагоналях}
if a[i,i]>mx then mx:=a[i,i];{главная диагональ}
if a[i,n-i+1]>mx then mx:=a[i,n-i+1];{побочная диагональ}
if a[i,i]<mn then mn:=a[i,i];
if a[i,n-i+1]<mn then mn:=a[i,n-i+1];
end;
if odd(n) then s:=s-a[n div 2+1,n div 2+1];{если матрица нечетная, центральный элемент посчитан 2 раза}
writeln('Сумма диагональных элементов=',s);
writeln('Минимальный из них=',mn);
writeln('Максимальный из них=',mx);
readln
end.
Объяснение кода листинга программы
- Создается переменная
nmaxи присваивается ей значение 20. - Создается массив
aтипаarray[1..nmax,1..nmax] of integer. - Создаются переменные
n,i,j,s,mn,mxи присваиваются им начальные значения. - Выводится запрос на ввод размера матрицы, и считывается введенное значение.
- Для каждого элемента матрицы
a[i,j]выводится его значение. - Вычисляются минимальный и максимальный элементы матрицы
a. - Вычисляется сумма элементов диагоналей матрицы
a. - Если размер матрицы нечетный, то вычисляется сумма элементов центральной диагонали и вычитается из общей суммы.
- Выводится сумма диагональных элементов, минимальный и максимальный элементы.
- Программа завершается, ожидая ввода пользователя.