// 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; 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
Замечание: Во избежании разнотолков указывайте, что понимать под нечетным элементом: нечетный по значению, с нечетным индексом (тогда еще с какого значения начинаются индексы) или нечетный по порядку.
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.
// Внимание! Если программа не работает, обновите версию!
procedure Foo(a:array[,] of integer; var kn:integer; var so:real);
begin
var s:=a.ElementsByRow; // последовательность не хранится
kn:=s.Where(t->t<0).Count;
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
Замечание: Во избежании разнотолков указывайте, что понимать под нечетным элементом: нечетный по значению, с нечетным индексом (тогда еще с какого значения начинаются индексы) или нечетный по порядку.
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.