1. задать массив f (m, n), из 4 строк и 5 столбцов, элементы заданы из диапазона [-20; 20] случайным образом • найти количество положительных и кратных 7; • найти среднее арифметическое отрицательных; • найти min элемент и его индексы; • найти max элемент среди отрицательных и его индексы.

gnbufa gnbufa    1   16.09.2019 19:10    2

Ответы
лунтик56 лунтик56  07.10.2020 20:21
Const
  mm=50; { максимально возможное кол-во строк }
  nn=50; { максимально возможное кол-во столбцов }
var
  f:array[1..mm,1..nn] of integer;
  i,j,m,n,k,s:integer;
begin
  Randomize;
  Write('Количество строк в массиве: '); Read(m);
  Write('Количество столбцов в массиве: '); Read(n);
  Writeln('*** Исходный массив ***');
  for i:=1 to m do begin
    for j:=1 to n do begin
      f[i,j]:=Random(41)-20; { [-20;20] }
      Write(f[i,j]:4)
      end;
    Writeln
    end;
  Write('Количество положительных элементов, кратных 7: ');
  k:=0;
  for i:=1 to m do
    for j:=1 to n do
      if (f[i,j]>0) and (f[i,j] mod 7=0) then k:=k+1;
  Writeln(k);
  Write('Среднее арифметическое отрицательных элементов: ');
  k:=0; s:=0;
  for i:=1 to m do
    for j:=1 to n do
      if f[i,j]<0 then begin k:=k+1; s:=s+f[i,j] end;
  if k>0 then Writeln(s/k:0:5)
  else Writeln(0);
  Write('Минимальный элемент равен ');
  k:=100;
  for i:=1 to m do
    for j:=1 to n do
      if f[i,j]<k then k:=f[i,j];
 Write(k,', индексы:');
 for i:=1 to m do
    for j:=1 to n do
      if f[i,j]=k then Write(' [',i,',',j,']');
 Writeln;
 Write('Максимальный элемент среди отрицательных равен ');
  k:=-100;
  for i:=1 to m do
    for j:=1 to n do
      if (f[i,j]>k) and (f[i,j]<0) then k:=f[i,j];
 Write(k,', индексы:');
 for i:=1 to m do
    for j:=1 to n do
      if f[i,j]=k then Write(' [',i,',',j,']');
 Writeln;
end.

Пример
Количество строк в массиве: 5
Количество столбцов в массиве: 8
*** Исходный массив ***
  -4  11  -5 -12   7  16 -10   6
   8  -3 -12 -16  15   2  -2  -6
  16   8  18   0 -10   8  18   7
  17   7 -14  -4  -1  -8  13  -1
   3 -18  16 -10   4 -17  19 -18
Количество положительных элементов, кратных 7: 3
Среднее арифметическое отрицательных элементов: -9.00000
Минимальный элемент равен -18, индексы: [5,2] [5,8]
Максимальный элемент среди отрицательных равен -1, индексы: [4,5] [4,8]
ПОКАЗАТЬ ОТВЕТЫ
trul85 trul85  07.10.2020 20:21
//PascalABC.NET
//Версия 3.3, сборка 1611 (06.01.2018)

begin
  var a:=MatrRandom(4,5,-20,20).Println;
  var c:=a.ElementsByRow;
  Println('Кол-во положительных ->',c.Where(t->t>0).Count);
  Println('Кол-во кратных 7 ->',c.Where(t->t mod 7=0).Count);
  Println('Сред. арифм. отрицат. ->',c.Where(t->t<0).Average);
  var b:=a.ElementsWithIndexes.MinBy(t->t[0]);
  Writeln('Минимальный ->', b[0],'[',b[1]+1,',',b[2]+1,']');
  b:=a.ElementsWithIndexes.Where(t->t[0]<0).MaxBy(t->t[0]);
  Writeln('Максимальный отриц. ->', b[0],'[',b[1]+1,',',b[2]+1,']');
end.

Пример:
 -10   6  12   7   4
  -8  -4   3  -1   6
   9  -2  16  19 -18
  18   4  -3  12  -8
Кол-во положительных -> 12 
Кол-во кратных 7 -> 1 
Сред. арифм. отрицат. -> -6.75 
Минимальный ->-18[3,5]
Максимальный отриц. ->-1[2,4]
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика