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

kirllakylov kirllakylov    2   08.07.2019 20:40    3

Ответы
tecakrus88 tecakrus88  02.10.2020 23:00
Решение приложено.
Компилятор: PascalABC.NET 3.0, сборка 1064
Составить программу на языке паскаль. дана целочисленная прямоугольная матрица. найти количество стр
ПОКАЗАТЬ ОТВЕТЫ
ritailicheva0 ritailicheva0  02.10.2020 23:00
// PascalABC.Net 3.0, сборка 1064
// "Классическое" решение
const
  nn=20;

type
  SqMatrix=array[1..nn,1..nn] of integer;

function AvgRow(row,cols:integer; a:SqMatrix):double;
var
  j,s:integer;
begin
  s:=0;
  for j:=1 to cols do s:=s+a[row,j];
  AvgRow:=s/cols
end;

var
  i,j,n,k:integer;
  cavg:double;
  M:SqMatrix;
 
begin
  Write('Количество строк (столбцов) в матрице: '); Read(n);
  Write('Ограничение для среднего арифметического: '); Read(cavg);
  Randomize;
  // Инициализация и вывод исходной матрицы
  Writeln('*** Сгенерированная матрица ***');
  for i:=1 to n do begin
    for j:=1 to n do begin
      M[i,j]:=Random(51)-20;
      Write(M[i,j]:4)
    end;
    Writeln
  end;
  // Собственно, решение задачи
  k:=0;
  for i:=1 to n do
    if AvgRow(i,n,M)<cavg then Inc(k);
  Writeln('Количество отобранных строк равно ',k)
end.

Тестовое решение:
Количество строк (столбцов) в матрице: 10
Ограничение для среднего арифметического: 2
*** Сгенерированная матрица ***
  -5  10  29  25  23   0 -17   5 -19  -4
   4 -10  -4  13   3 -15  17  16  -4 -18
  -6  24  -4  19 -16 -15  11  -4  14  -3
  -7  -5 -10  -2 -17  19 -16  -2   4 -10
  26  25  29  -8  27  20  13 -10  -9   9
  -3 -11  18 -12   0   2  -7 -10  20  17
  19  18  22  14 -18 -11 -20  28   9  15
 -19  -1  -9 -15 -13  -1  25 -16  22  -5
   3   1 -16 -16 -20 -17   8 -18  28  12
   5  24   8  18   2 -12 -17  -6 -11  18
Количество отобранных строк равно 5

Второе решение дано для демонстрации возможностей современного Паскаля. Оно не подходит в качестве ответа в той части, что не использует отдельную функцию для нахождения среднего. По лаконичности записи оно вполне может соперничать с постепенно набирающим популярность языком, как Python

// PascalABC.Net 3.0, сборка 1064
// Решение, использующее возможности версии 3.0

var
  n: integer;
  cavg: double;
  M: array of array of integer;

begin
  Write('Количество строк (столбцов) в матрице: '); Read(n);
  Write('Ограничение для среднего арифметического: '); Read(cavg);
  // Инициализация и вывод исходной матрицы
  Writeln('*** Сгенерированная матрица ***');
  SetLength(M, n);
  for var i := 0 to n - 1 do
    begin M[i] := ArrRandom(n, -25, 25); M[i].Println end;
  // Собственно, решение задачи
  var k:=M.Select(x->x.Average < cavg).Count(x->x=True);
  Writeln('Количество отобранных строк равно ', k)
end.

Тестовое решение:
Количество строк (столбцов) в матрице: 10
Ограничение для среднего арифметического: 2
*** Сгенерированная матрица ***
-23 -13 13 20 20 -6 22 9 15 -12
8 12 20 -12 -10 16 -1 10 13 1
17 -16 -8 20 1 24 9 -8 4 15
12 7 -9 21 13 11 15 -25 -10 -24
1 3 16 15 -3 -17 23 -12 -15 4
8 -2 10 -17 23 19 20 19 -7 21
11 5 -21 25 1 -24 -4 24 0 5
-24 -1 -6 12 -25 -11 -6 2 -2 -7
-25 -5 -19 -25 -18 -11 23 -18 24 20
16 22 7 -6 -10 22 -2 16 -12 -4
Количество отобранных строк равно 4
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика