Вычислить количество положительных и отрицательных элементов над главной диагональю матрицы - Pascal ABC
Формулировка задачи:
Необходимо решить задачу:
Дана целочисленная матрица N*N где N<=20 Вычислить количество положительных и отрицательных элементов над главной диагональю (не включая диагональ). Если больше положительных элементов, то подсчитать среднее арифметическое всех элементов, в противном случае обнулить все элементы под главной диагональю (включая саму диагональ ). Исходную и полученный матрицы вывести на экран
Решение задачи: «Вычислить количество положительных и отрицательных элементов над главной диагональю матрицы»
textual
Листинг программы
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
n,i,j,ko,kp:integer;
s:real;
begin
randomize;
repeat
write('Размер матрицы от 3 до ',nmax,' n=');
readln(n);
until n in [3..nmax];
writeln('Исходная матрица');
kp:=0;ko:=0;
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=-10+random(21);
write(a[i,j]:4);
if j>i then
begin
if a[i,j]>0 then inc(kp)
else if a[i,j]<0 then inc(ko);
end;
end;
writeln;
end;
writeln('Количество положительных над главной диагональю=',kp);
writeln('Количество отрицательных над главной диагональю=',ko);
if kp>ko then
begin
writeln('Положительных больше');
s:=0;
for i:=1 to n do
for j:=1 to n do
s:=s+a[i,j];
s:=s/n/n;
write('Срелнее арифметическое всех элементов=',s:0:2);
end
else
begin
writeln('Положительных не больше');
writeln('Обнуление элементов на главной диагонали и под ней');
for i:=1 to n do
begin
for j:=1 to n do
begin
if j<=i then a[i,j]:=0;
write(a[i,j]:4);
end;
writeln;
end;
end;
end.
Объяснение кода листинга программы
- Создается константа nmax, которая определяет максимальное значение для переменной n.
- Создается переменная a, которая представляет собой матрицу размером от 3 до nmax на 1 до nmax.
- Задаются три переменные kp, ko и i, которые будут использоваться для подсчета количества положительных и отрицательных элементов над главной диагональю матрицы.
- Задается переменная s, которая будет использоваться для вычисления среднего арифметического всех элементов матрицы.
- В цикле повторяется следующий код:
- Выводится запрос на ввод размера матрицы от 3 до nmax.
- Введенный размер сохраняется в переменной n.
- Инициализируются переменные kp и ko нулем.
- В цикле for перебираются все элементы матрицы a[i,j].
- Если j больше i, то вычисляется значение a[i,j] и проверяется, положительное оно или отрицательное.
- Если a[i,j] положительное, то увеличивается значение kp.
- Если a[i,j] отрицательное, то увеличивается значение ko.
- После завершения внутреннего цикла выводится значение kp и ko.
- Если kp больше ko, то выводится сообщение
Положительных большеи вычисляется среднее арифметическое всех элементов матрицы. - Если kp меньше или равно ko, то выводится сообщение
Положительных не большеи выполняется обнуление элементов на главной диагонали и под ней. - Для каждого элемента матрицы a[i,j] выводится его значение.