type M = array[1..mm, 1..nn] of integer; KS = array[1..2, 1..nn] of integer;
procedure GetKS(var a: M; var b: KS; m, n: integer); { Помещает в b[1,*] суммы отрицательных элементов массива а[m,n] по столбцам, а в b[2,*] - количества этих элементов } var i, j, s, k: integer; begin for j := 1 to n do begin k := 0; s := 0; for i := 1 to m do if a[i, j] < 0 then begin s := s + a[i, j]; Inc(k) end; b[1, j] := s; b[2, j] := k end end;
procedure Init(var a: M; m, n: integer); { Заполняет массив a[m,n] случайными значениями на интервале [-50;50] и выводит их на экран } var i, j: integer; begin for i := 1 to m do begin for j := 1 to n do begin a[i, j] := Random(101) - 50; Write(a[i, j]:5) end; Writeln end end;
procedure OutKS(var a: KS; n: integer); { Выводит на экран элементы массива a[2,n]} var i, j: integer; begin for i := 1 to 2 do begin for j := 1 to n do Write(a[i, j]:5); Writeln end end;
procedure Work(var a: M; var b: KS; m, n: integer); { цикл работы с массивом } begin Init(a, m, n); GetKS(a, b, m, n); Writeln('Суммы и количество'); OutKS(b, n); end;
У жёсткого диска нет ни максимального, ни минимального объёма - в веке вполне реально было купить жёсткий диск на 40 мегабайт, а сейчас - на 2 и более терабайта. Впрочем, Master Boot Record не поддерживает жёсткие диски размером больше 2 терабайт, а NTFS вроде как не поддерживает разделы жёсткого диска менее 8 мегабайт. CD: 140 МБ (mini-cd), 702 МБ DVD: 4.35 ГБ (DVD5), 18 ГБ (DVD18, то есть двухсторонний двухслойный) флеш-память: опять же нет ни минимума, ни максимума, но где-то между 128 МБ и 128 ГБ. Blu-Ray: 25 ГБ. Впрочем, технология меняется, вроде позже появятся более вместительные.
mm = 10;
nn = 8;
type
M = array[1..mm, 1..nn] of integer;
KS = array[1..2, 1..nn] of integer;
procedure GetKS(var a: M; var b: KS; m, n: integer);
{ Помещает в b[1,*] суммы отрицательных элементов массива а[m,n] по столбцам,
а в b[2,*] - количества этих элементов }
var
i, j, s, k: integer;
begin
for j := 1 to n do
begin
k := 0; s := 0;
for i := 1 to m do
if a[i, j] < 0 then begin s := s + a[i, j]; Inc(k) end;
b[1, j] := s; b[2, j] := k
end
end;
procedure Init(var a: M; m, n: integer);
{ Заполняет массив a[m,n] случайными значениями на интервале [-50;50]
и выводит их на экран }
var
i, j: integer;
begin
for i := 1 to m do
begin
for j := 1 to n do
begin
a[i, j] := Random(101) - 50;
Write(a[i, j]:5)
end;
Writeln
end
end;
procedure OutKS(var a: KS; n: integer);
{ Выводит на экран элементы массива a[2,n]}
var
i, j: integer;
begin
for i := 1 to 2 do
begin
for j := 1 to n do Write(a[i, j]:5);
Writeln
end
end;
procedure Work(var a: M; var b: KS; m, n: integer);
{ цикл работы с массивом }
begin
Init(a, m, n);
GetKS(a, b, m, n);
Writeln('Суммы и количество');
OutKS(b, n);
end;
var
X, Y: M;
Z: KS;
begin
Writeln('Массив Х');
Work(X, Z, 10, 8);
Writeln;
Writeln('Массив Y');
Work(Y, Z, 6, 8);
end.
Тестовое решение:
Массив Х
-50 49 0 28 -8 -27 -4 -45
10 10 10 27 17 15 -35 47
-22 -42 21 40 -40 -4 1 -49
-21 37 5 -34 26 10 -33 -26
2 27 30 -46 -9 -2 33 2
-3 6 -9 -38 -29 -18 -36 28
-8 39 -16 49 -50 39 -37 5
-2 -2 -2 6 18 -21 -20 -50
-7 -15 -26 40 35 -40 5 31
-25 -31 -8 4 -45 -11 31 48
Суммы и количество
-138 -90 -61 -118 -181 -123 -165 -170
8 4 5 3 6 7 6 4
Массив Y
22 27 24 38 -24 -32 -26 13
14 -25 6 44 50 -24 34 -33
-24 -10 20 36 -43 -25 44 -19
-17 4 23 31 -4 9 -1 -41
17 1 34 42 6 -8 25 -26
-40 11 -24 10 4 12 31 50
Суммы и количество
-81 -35 -24 0 -71 -89 -27 -119
3 2 1 0 3 4 2 4
CD: 140 МБ (mini-cd), 702 МБ
DVD: 4.35 ГБ (DVD5), 18 ГБ (DVD18, то есть двухсторонний двухслойный)
флеш-память: опять же нет ни минимума, ни максимума, но где-то между 128 МБ и 128 ГБ.
Blu-Ray: 25 ГБ. Впрочем, технология меняется, вроде позже появятся более вместительные.