Определить, в какой из 3 матриц среднее арифметическое положительных элементов больше - Free Pascal
Формулировка задачи:
Даны три матрицы: a, b, c размером n m(n,m<=12). Определить в какой из них среднее арифметическое положительных элементов больше.
Program tlen;
Uses crt;
const nmax=12;
mmax=12;
type matr=array[1..nmax,1..mmax] of integer;
procedure matrix(var a:matr;var n, m:integer);
var i, j:integer;
begin
writeln('введите размер матрицы');
readln(n,m);
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(60)-10;
write(a[i,j]:4);
end;
writeln;
end;
end;
function srednee(a:matr;n,m:integer):real;
var i, j:integer;
s, k:real;
begin
s:=0; k:=0;
for i:=1 to n do
for j:=1 to m do
if a[i,j]>0 then
begin
s:=s+a[i,j];
k:=k+1;
end;
srednee:=s/k;
end;
Var a,b,c:matr;
na,nb,nc:integer;
Begin
clrscr;
matrix(a,na,'A');
writeln('ср. ариф ',srednee(a,na):0:2);
matrix(b,nb,'B');
writeln('ср. ариф ',srednee(b,nb):0:2);
matrix(c,nc,'C');
writeln('ср. ариф ',srednee(c,nc):0:2);
if (srednee(a,na)>srednee(b,nb)) or (srednee(a,na)>srednee(c,nc)) then writeln('в матрице А ср. ариф. больше') else
if (srednee(b,nb)>srednee(a,na)) or (srednee(b,nb)>srednee(c,nc)) then writeln('в матрице Б ср. ариф. больше') else
if (srednee(c,nc)>srednee(a,na)) or (srednee(c,nc)>srednee(b,nb)) then writeln('в матрице С ср. ариф. больше');
readln;
end.Решение задачи: «Определить, в какой из 3 матриц среднее арифметическое положительных элементов больше»
textual
Листинг программы
Program tlen;
Uses crt;
const nmax=12;
type matr=array[1..nmax,1..nmax] of integer;
procedure matrix(var a:matr;var n, m:integer;c:char);
var i, j:integer;
begin
writeln('Матрица ',c);
repeat
write('Количество строк от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
repeat
write('Количество столбцов от 2 до ',nmax,' m=');
readln(m);
until m in [2..nmax];
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=-10+random(60);
write(a[i,j]:4);
end;
writeln;
end;
end;
function srednee(a:matr;n,m:integer):real;
var i, j:integer;
s, k:real;
begin
s:=0;
k:=0;
for i:=1 to n do
for j:=1 to m do
if a[i,j]>0 then
begin
s:=s+a[i,j];
k:=k+1;
end;
if k=0 then srednee:=0
else srednee:=s/k;
end;
Var a,b,c:matr;
na,ma,nb,mb,nc,mc:integer;
s1,s2,s3,mx:real;
s:char;
Begin
clrscr;
matrix(a,na,ma,'A');
s1:=srednee(a,na,ma);
writeln('среднее арифметичемкое положительных элементов=',s1:0:2);
matrix(b,nb,mb,'B');
s2:=srednee(b,nb,mb);
writeln('среднее арифметичемкое положительных элементов=',s2:0:2);
matrix(c,nc,mc,'C');
s3:=srednee(c,nc,mc);
writeln('среднее арифметичемкое положительных элементов=',s3:0:2);
if s1>s2 then
begin
mx:=s1;
s:='A';
end
else
begin
mx:=s2;
s:='B';
end;
if s3>mx then
begin
mx:=s3;
s:='C';
end;
writeln('Наибольшее среднее в матрице ',s,' оно=',mx:0:2);
readln;
end.
Объяснение кода листинга программы
- Программа определяет матрицу как массив целочисленных значений.
- Функция srednee вычисляет среднее арифметическое положительных элементов матрицы.
- В основной части программы создаются три матрицы a, b и c.
- С помощью функции matrix выводятся на экран и заполняются случайными значениями от -10 до 10.
- Затем с помощью функции srednee вычисляется среднее арифметическое положительных элементов каждой матрицы.
- Результат записывается в переменные s1, s2 и s3.
- Сравниваются полученные значения и находится наибольшее среднее значение положительных элементов.
- На экран выводится сообщение о том, в какой из матриц среднее арифметическое положительных элементов больше.