<u>PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018</u>
<u>Внимание! Если программа не работает, обновите версию!</u>
function NewMatrix(n:integer):array[,] of integer;
begin
Result:=MatrRandom(n,n,-50,50);
Result.Println(4); Writeln(4*n*'-')
end;
function KS(a:array[,] of integer):(integer,integer);
begin
var (k,s,n):=(0,0,a.RowCount-1);
for var i:=0 to n-1 do
for var j:=i+1 to n do
if a[i,j]<0 then (k,s):=(k+1,s+a[i,j]);
Result:=(k,s)
end;
begin
var d:=NewMatrix(8);
var (l,c):=KS(d);
var t:=NewMatrix(10);
var (n,a):=KS(t);
var q:=NewMatrix(7);
var (m,b):=KS(q);
Writeln($'l={l}, c={c}, n={n}, a={a}, m={m}, b={b}');
var (lp,rp):=(c/n+b/l,a/m);
Writeln($'c/n+b/l={lp}{lp=rp?'' = '':'' <> ''}{rp}');
end.
<u>Пример</u>
-25 12 43 -8 -15 15 -30 23
7 49 50 4 38 -37 46 44
17 21 -37 20 13 -27 -19 -20
0 -50 -12 -37 23 -33 16 -37
-43 -6 -35 30 27 11 48 12
3 15 -8 -25 -38 -47 23 34
-49 23 -27 -27 -28 -13 -17 -49
-20 13 42 -16 -24 -43 -50 -10
--------------------------------
-17 36 -4 -6 48 -34 -33 -44 23 2
-34 48 32 -45 -32 -3 -22 4 -39 -50
44 -8 42 20 -39 -36 -1 -36 20 14
-15 -5 15 -48 43 -24 7 -21 37 36
5 -33 1 20 -30 -15 -31 -26 -5 -6
-44 22 46 -50 -4 41 45 26 -17 33
17 -47 -14 -42 -33 22 -17 30 -37 42
40 49 18 -24 -5 27 42 -29 0 26
46 -26 20 -25 7 13 -1 15 6 -48
-18 31 46 -47 -32 2 31 -8 3 -1
----------------------------------------
-48 -11 -39 3 5 -43 -46
20 5 19 50 23 -24 7
38 -7 -16 -39 2 4 -28
19 -27 -39 9 -42 -47 15
-43 43 47 -1 19 -50 24
6 -38 -34 21 0 9 30
-41 38 -48 9 5 -12 -35
----------------------------
l=10, c=-275, n=25, a=-654, m=10, b=-369
c/n+b/l=-47.9 <> -65.4
PROGRAM B01;
CONST
max = 11;
TYPE
vector = array[1..max]of integer;
VAR
M, I, K:vector;
j:byte;
{ Массивы I,K предварительно реорганизовать следующим образом: на первом
месте, в данных массивах должен стоять элемент с минимальным значением}
procedure reorganize_vector(var vt:vector);
var i, j:byte;
min, tmp:integer;
begin
// вначале ищем минимальный элемент и запоминаем его место в массиве
j:=1;//
min:=vt[1];//назначаем наименьшим - первый элемент
for i:=2 to max do
if (min>vt[i]) then begin
min:=vt[i];
j:=i;//индекс наименьшего числа
end;
// теперь меняем местами первый элемент массива с наименьшим числом
tmp := vt[1];//запоминаем значение первого элемента
vt[1] := min;//меняем его на наименьший элемент
vt[j] := tmp;//на место наименьшего ставим значение из первого элемента
end;
// процедура для вывода массива на экран
procedure print_vector(var vt:vector);
var j:byte;
begin
for j:=1 to max do
write(vt[j]:6);
writeln(' ');
end;
BEGIN
writeln('Дано:');
//заполняем массивы случаынйми данными
randomize;
for j:=1 to max do begin
I[j]:=random(-128,127);
K[j]:=random(-128,127);
end;
//выводим их на экран
write('массив I[',max,']: ');
print_vector(I);
write('массив K[',max,']: ');
print_vector(K);
writeln(' ');
writeln('Реорганизовать массивы так, чтобы на первом месте ');
writeln('должен стоять элемент с минимальным значением');
reorganize_vector(I);
reorganize_vector(K);
write('массив I[',max,']: ');
print_vector(I);
write('массив K[',max,']: ');
print_vector(K);
writeln(' ');
writeln('Сформировать массив М[',max,'], элементы которого вычисляются');
writeln('по формуле M[j] = I[j] + K[j]');
for j:=1 to max do
M[j] := I[j] + K[j];
write('массив M[',max,']: ');
print_vector(M);
END.
Матричные, струйные и лазерные.