Turbo Pascal.Дано: массивы A ( N1,M1) , B(N2,M2),C (N3,M3). Определить в каждом из...

0 голосов
70 просмотров
Turbo Pascal.Дано: массивы A ( N1,M1) , B(N2,M2),C (N3,M3). Определить в каждом из заданных массивов сумму наибольших значений элементов его четных строк . Определение суммы наибольшего элемента четных строк массивы осуществить в подпрограмме. (желательно записать через функцию)

Информатика (65 баллов) | 70 просмотров
0

В смысле? У них размерность будет одинакова. А N1,M1,N2,M2,N3,M3 - это просто название строк и столбцов массивов

Дан 1 ответ
0 голосов
Правильный ответ

Program Example;

const
  r = 20;

type
  tM = array[1..r, 1..r]of integer;

function GetMax(var a: tM; n: integer; m: integer): integer;
// Возвращает значение максимального элемента в строке n массива а
var
  j, max: integer;
begin
  max := -32767;
  for j := 1 to m do
    if max < a[n, j] then max := a[n, j];
  GetMax := max
end;

function SumMax(var a: tM; n: integer; m: integer; p: integer; q: integer): integer;
// Проверяет условие n<=r, m<=r, при нарушении возвращает значение -32768<br>// Полагает, что массив [1..n,1..m] размещен внутри массива a[1..r,1..r] 
// Заполняет выбранную область массива А случайными числами из диапазона (p;q)
// Возвращает значение суммы максимальных элементов четных строк выбранной области.

var
  i, j, s: integer;
begin
  if (n > r) or (m > r) then SumMax := -32767
  else begin
    Randomize;
    for i := 1 to n do
      for j := 1 to m do
        a[i, j] := random(p + q) - p;
    s := 0; i := 2;
    while i <= n do <br>    begin
      s := s + GetMax(a, i, m);
      i := i + 2
    end;
    SumMax := s
  end
end;

const
  n1 = 5; m1 = 3;
  n2 = 4; m2 = 4;
  n3 = 3; m3 = 7;

var
  i, j, sum: integer;
  A: tM;

begin
  sum := SumMax(A, n1, m1, -30, 60);
  writeln('Массив A[1..', m1, ',1..', n1, ']');
  for i := 1 to n1 do
  begin
    for j := 1 to m1 do write(A[i, j]:4);
    writeln;
  end;
  writeln('Сумма максимумов четных строк массива A равна ', sum);
  sum := SumMax(A, n2, m2, 0, 90);
  writeln('Массив B[1..', m2, ',1..', n2, ']');
  for i := 1 to n2 do
  begin
    for j := 1 to m2 do write(A[i, j]:4);
    writeln;
  end;
  writeln('Сумма максимумов четных строк массива B равна ', sum);
  sum := SumMax(A, n3, m3, 20, 50);
    writeln('Массив C[1..', m3, ',1..', n3, ']');
  for i := 1 to n3 do
  begin
    for j := 1 to m3 do write(A[i, j]:4);
    writeln;
  end;
  writeln('Сумма максимумов четных строк массива C равна ', sum);
end.

Контрольный пример:
--------------------------------
Массив A[1..3,1..5]
  47  55  48
  51  45  49
  32  47  53
  54  31  33
  56  50  36
Сумма максимумов четных строк массива A равна 105
Массив B[1..4,1..4]
  85  49  72  13
  66  57  22  54
  67  63  76  53
  79   2  38  88
Сумма максимумов четных строк массива B равна 154
Массив C[1..7,1..3]
  46  18  36 -10  31  24  -3
  22  32  29  39  21  41 -19
   9  48  47  -1   4  29  11
Сумма максимумов четных строк массива C равна 41



(142k баллов)