Дан массив Z[1...4,1...3] с целыми элементами. Создать программу с процедурой которая...

0 голосов
20 просмотров

Дан массив Z[1...4,1...3] с целыми элементами. Создать программу с процедурой которая вычислит количество отрицательных чисел и сумму нечетных элементов массива


Информатика (68 баллов) | 20 просмотров
Дано ответов: 2
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1590 от 03.12.2017
// Внимание! Если программа не работает, обновите версию!

procedure Foo(a:array[,] of integer; var kn:integer; var so:real);
begin
  var s:=a.ElementsByRow; // последовательность не хранится
  kn:=s.Where(t->t<0).Count;<br>  so:=s.Where(t->t.IsOdd).Sum
end;

begin
  var z:=MatrRandomInteger(4,3,-50,50); z.Println(4);
  var k:integer;
  var s:real;
  Foo(z,k,s);
  Writeln('Количество отрицательных: ',k);
  Writeln('Сумма нечетных по значению: ',s)
end.

Пример
 -40  15 -10
 -13  37 -13
  32 -39  46
 -35   0 -43
Количество отрицательных: 7
Сумма нечетных по значению: -91

Замечание: Во избежании разнотолков указывайте, что понимать под нечетным элементом: нечетный по значению, с нечетным индексом (тогда  еще с какого значения начинаются индексы) или нечетный по порядку.
(150k баллов)
0 голосов

//Pascal
const NMAX = 4; MMAX = 3;

type Matrix = array[1..NMAX,1..MMAX] of integer;

procedure CountNegativeAndSumOdds(var M: Matrix);
var q, w, CountNegative, SumOdds: integer;
begin
  CountNegative := 0; SumOdds := 0;
  for q := 1 to 4 do
  begin
    for w := 1 to 3 do
    begin
      if M[q, w] < 0 then Inc(CountNegative);
      if (M[q, w] mod 2 <> 0) then SumOdds := SumOdds + M[q, w];
      write(M[q, w]:4);
    end;
    writeln;
  end;
  writeln('Количество отрицательных = ', CountNegative);
  writeln('Сумма нечетных = ', SumOdds);
end;

VAR
  A: Matrix;
  i, j: byte;
BEGIN
  randomize;
  for i := 1 to 4 do
    for j := 1 to 3 do A[i, j] := random(101)-50;
  CountNegativeAndSumOdds(A);
  readln;
END.

(9.4k баллов)