Задание 2 Язык возник в начале 1980−х годов, когда сотрудник фирмы Bell Labs Бьёрн Страуструп придумал ряд усовершенствований к языку C под собственные нужды.
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 A:array[1..60] of integer; k,i,MIN,ind, MAX,SUM:integer; begin SUM:=0; readln(k); randomize; writeln('Исходный массив:'); for i:=1 to 60 do begin A[i]:=random(15)-5; Writeln('A[',i,']=',A[i]); end; MIN:=32600; MAX:=-32600; for i:=1 to 60 do //Ищем минимальный элемент begin if a[i]<MIN then MIN:=a[i]; ind:=i; end; for i:=1 to 60 do //Ищем максимальный элемент if a[i]>MAX then MAX:=a[i]; for i:=60 downto 60-k do //Сумма последних k элементов SUM:=SUM+a[i]; A[ind]:=SUM; if A[1]>=0 then for i:=1 to 60 do begin A[i]:=A[i]*sqr(MIN); Writeln('A[',i,']=',A[i]); end else for i:=1 to 60 do begin A[i]:=A[i]*sqr(MAX); Writeln('A[',i,']=',A[i]); end; end.
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
A:array[1..60] of integer;
k,i,MIN,ind, MAX,SUM:integer;
begin
SUM:=0;
readln(k);
randomize;
writeln('Исходный массив:');
for i:=1 to 60 do
begin
A[i]:=random(15)-5;
Writeln('A[',i,']=',A[i]);
end;
MIN:=32600;
MAX:=-32600;
for i:=1 to 60 do //Ищем минимальный элемент
begin
if a[i]<MIN then
MIN:=a[i];
ind:=i;
end;
for i:=1 to 60 do //Ищем максимальный элемент
if a[i]>MAX then
MAX:=a[i];
for i:=60 downto 60-k do //Сумма последних k элементов
SUM:=SUM+a[i];
A[ind]:=SUM;
if A[1]>=0 then
for i:=1 to 60 do
begin
A[i]:=A[i]*sqr(MIN);
Writeln('A[',i,']=',A[i]);
end
else
for i:=1 to 60 do
begin
A[i]:=A[i]*sqr(MAX);
Writeln('A[',i,']=',A[i]);
end;
end.