Напишите программу с помощью Паскаля.Сформировать массив случайным образом(длина массива...

0 голосов

Напишите программу с помощью Паскаля.

Сформировать массив случайным образом(длина массива 20).Найти в нем среднее арифметическое.Сформировать новый массив из элементов первого больших среднего арифметического.


спросил от (50 баллов) в категории Информатика
оставил комментарий от Начинающий (340 баллов)

Так как в разных строках может быть разное количество значений больших, чем среднее, то какой размерности должен быть итоговый массив. Как компромисный вариант предлагаю такой же 20х20, с нулями место неугодных значений

оставил комментарий от Начинающий (340 баллов)

или можно построчно сдвинуть все нужные элементы в лево, но длина строк будет разной

2 Ответы
0 голосов
ответил от Отличник (9.2k баллов)
 
Лучший ответ

Begin
  var i, j: integer;
  var s: real;
  var m: array[1..20] of integer;
  var n: array[1..20] of integer;

  { формируем массив и заодно вычисляем сумму элементов }
  for i := 1 to 20 do begin
    m[i] := random(1000);
    s := s + m[i];
  end;

  { печать массива }  
  for i := 1 to 20 do begin
    writeln(m[i]);
  end;
  writeln('');
 
  { среднее арифметическое }
  s := s / 20;
  writeln(s);
 
  j := 0;
  for i := 1 to 20 do begin
    if m[i] > s then begin
      j := j + 1;
      n[j] := m[i];
    end;
  end;
 
  writeln('');
 
  for i := 1 to j do begin
    writeln(n[i]);
  end;

end.

0 голосов
ответил от Начинающий (340 баллов)

Программа формирует новый массив со смещением в лево

Program sector;
const
n=10;
var
a,b:array [1..n,1..n] of integer;
z:real;
i,j,k: byte;
begin
randomize;
for i:=1 to n do begin
    for j:=1 to n do begin
        a[i,j]:=random (40);
        a[i,j]:=a[i,j]-20;
        write(a[i,j]:4);
    end;
    writeln;
    end;
z:=0;
for i:=1 to n do
    for j:=1 to i do
        z:=z+a[i,j];
z:=z/(n*n);
writeln('srednee = ',z);
for i:=1 to n do begin
    k:=1;
    for j:=1 to n do
        if a[i,j] > z then begin
           b[i,k]:=a[i,j];
           write(b[i,k]:4);
           k:=k+1;
        end;
    writeln;
end;
readln;
end.

оставил комментарий от Начинающий (340 баллов)

Да, что то я разашелся и написал для двухмерного массива...

...