kapral1812
?>

Обработка двумерных массивов. алгоритм вычисления среднего значения массива, пример программы

Информатика

Ответы

dashafox8739
Пример, ненужное уберешь

const
    handsfree = true;

var
    a: array[1..100, 1..100] of real;
    max, min: real;
    sum, product: real;
    i, j, m, n, k: integer;

begin
    {ввод матрицы}
    if handsfree then begin
        n := random(20) + 2;
        m := random(20) + 2;
    end
    else begin
        write('n, m =');
        readln(n, m);
    end;
    
    writeln('Данные матрицы:');
    for i := 1 to m do
    begin
        for j := 1 to n do
            if handsfree then begin
                a[i, j] := random(100) - 50;
                write(a[i, j]:4, ' ')
            end
            else
                read(a[i, j]);
        writeln;
    end;
    
    {минимумы и максимумы}
    max := a[1, 1];
    min := a[1, 1];
    for i := 1 to m do
        for j := 1 to n do
        begin
            if max < a[i, j] then max := a[i, j];
            if min > a[i, j] then min := a[i, j];
        end;
    writeln('max = ', max);
    writeln('min = ', min);
    
    {сумма, произведение, пр. агригаты}
    sum := 0;
    product := 1;
    for i := 1 to m do
        for j := 1 to n do
            if a[i, j] <> 0 then {если нужен фильтр}
            begin
                sum := sum + a[i, j];
                product := product * a[i, j];
                k := k + 1;
            end;
    writeln('sum = ', sum);
    writeln('product = ', product);
    writeln('average = ', sum / (n * m));
    writeln('average (selected) = ', sum / k);
end.
vladimirkirv
1. Вот так сейчас решают подобные задачи:

// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
begin
  Writeln(Range(1,100).Select(i->sin(i)*cos(i)).Where(x->x<>0).Average)
end.

Тестовое решение:
-0.00136006072493969

2. А вот так учат писать это же школьные учителя:

// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
var
  m:array[1..100] of real;
  i,k:integer;
  s:real;

begin
  s:=0;
  k:=0;
  for i:=1 to 100 do begin
    m[i]:=sin(i)*cos(i);
    if m[i]<>0 then begin
      s:=s+m[i];
      k:=k+1
      end
    end;
  Writeln(s/k)
end.

Тестовое решение:
-0.00136006072493969
IP1379
Если элементы массива идут по возрастанию, то вот так

program wstawka;
uses crt;
const min=1;
max=20;
type zona=min..max;
massiw=array[zona] of integer;
var mas:massiw;
i,j:zona;
a,N,M:integer;
T:boolean;
BEGIN randomize;
clrscr; N:=random(20);
writeln('4ucJlo N = ',N);
 M:=random(20); Writeln('4ucJlo M = ',M);
for i:=min to max-2 do
begin
mas[i+1]:=mas[i]+random(5);
write(mas[i],' ');
end;
for i:=min to max-2 do
if (mas[i]>N) and (t=false) then
begin
t:=true;
a:=mas[i];
mas[i]:=N;
for j:=i+1 to max do
begin
N:=mas[j];
mas[j]:=a;
a:=N;
end;
end;
for i:=min to max-1 do
if (mas[i]>M) and (t=true) then
begin
t:=false;
a:=mas[i];
mas[i]:=M;
for j:=i+1 to max do
begin
M:=mas[j];
mas[j]:=a;
a:=M;
end;
end;
writeln;
for i:=min to max do
write(mas[i],' ');
readkey;
END.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Обработка двумерных массивов. алгоритм вычисления среднего значения массива, пример программы
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

o-lala88387
ridyana504
Abespal
Yuliya_Viktoriya316
Иван1764
Vasilevna_Mikhail19
farmprofi
vs617
buyamel
Владимир-Денисович1080
likakedo4ka439
Sonyamaslo6
svetlanadianowa
галина
rozhkova