Type M = array[,] of integer; // двумерный динамический V = array[1..2] of integer; // одномерный статический
function nPos(pm: M): integer; var i, j, p: integer; begin p := 0; for i := 0 to Length(pm, 0) - 1 do for j := 0 to Length(pm, 1) - 1 do if pm[i, j] > 0 then p := p + 1; nPos := p end;
function nNeg(pm: M): integer; var i, j, p: integer; begin p := 0; for i := 0 to Length(pm, 0) - 1 do for j := 0 to Length(pm, 1) - 1 do if pm[i, j] < 0 then p := p + 1; nNeg := p end;
procedure GetV(A: M; var C: V); begin C[1] := nPos(A); C[2] := nNeg(A) end;
procedure InitM(var A: M); var i, j: integer; begin for i := 0 to Length(A, 0) - 1 do for j := 0 to Length(A, 1) - 1 do A[i, j] := random(100) - 50 end;
procedure PrintM(A: M); var i, j: integer; begin for i := 0 to Length(A, 0) - 1 do begin for j := 0 to Length(A, 1) - 1 do write(A[i, j]:4); writeln end end;
var A1, A2, A3: M; B1, B2, B3: V; n1, m1, n2, m2, n3, m3: integer;
begin Randomize; writeln('Введите число строк и столбцов массива'); readln(n1, m1); SetLength(A1, n1, m1); InitM(A1); Writeln('массив А1'); PrintM(A1); GetV(A1, B1); writeln('Количество положительных ', B1[1], ', количество отрицательных ', B1[2]); writeln('Введите число строк и столбцов массива'); readln(n2, m2); SetLength(A2, n2, m2); InitM(A2); Writeln('массив А2'); PrintM(A2); GetV(A2, B2); writeln('Количество положительных ', B2[1], ', количество отрицательных ', B2[2]); writeln('Введите число строк и столбцов массива'); readln(n3, m3); SetLength(A3, n3, m3); InitM(A3); Writeln('массив А3'); PrintM(A3); GetV(A3, B3); writeln('Количество положительных ', B3[1], ', количество отрицательных ', B3[2]); end.
Тестовый прогон:
Введите число строк и столбцов массива 3 3 массив А1 6 11 -46 24 -41 36 44 9 18 Количество положительных 7, количество отрицательных 2 Введите число строк и столбцов массива 2 4 массив А2 37 -4 -2 43 -18 36 0 44 Количество положительных 4, количество отрицательных 3 Введите число строк и столбцов массива 5 2 массив А3 5 -15 49 -1 -40 35 -33 -9 -22 -31 Количество положительных 3, количество отрицательных 7
Б - это буквенное обозначение столбца, а Ц - это номер строки.
№7 - Формула всегда начинается со знака равенства (=), за которым могут следовать числа, математические операторы, функции, которые значительно расширяют возможности формулы.
№8 - Смешанная ссылка содержит либо абсолютно адресуемый столбец и относительно адресуемую строку $А1, либо относительно адресуемый столбец и абсолютно адресуемую строку А$1.
№9 - $C$1 - Абсолютная ссылка (в формуле всегда ссылается на ячейку, расположенную в определённом (фиксированном) месте). Поэтому, при копировании будет изменяться только номер столбца B
№10 - В ячейке A1 число 5, в ячейке A2 число 10. Среднеарифметическое этих чисел равно (5+10)/2=7.5
M = array[,] of integer; // двумерный динамический
V = array[1..2] of integer; // одномерный статический
function nPos(pm: M): integer;
var
i, j, p: integer;
begin
p := 0;
for i := 0 to Length(pm, 0) - 1 do
for j := 0 to Length(pm, 1) - 1 do
if pm[i, j] > 0 then p := p + 1;
nPos := p
end;
function nNeg(pm: M): integer;
var
i, j, p: integer;
begin
p := 0;
for i := 0 to Length(pm, 0) - 1 do
for j := 0 to Length(pm, 1) - 1 do
if pm[i, j] < 0 then p := p + 1;
nNeg := p
end;
procedure GetV(A: M; var C: V);
begin
C[1] := nPos(A);
C[2] := nNeg(A)
end;
procedure InitM(var A: M);
var
i, j: integer;
begin
for i := 0 to Length(A, 0) - 1 do
for j := 0 to Length(A, 1) - 1 do
A[i, j] := random(100) - 50
end;
procedure PrintM(A: M);
var
i, j: integer;
begin
for i := 0 to Length(A, 0) - 1 do
begin
for j := 0 to Length(A, 1) - 1 do
write(A[i, j]:4);
writeln
end
end;
var
A1, A2, A3: M;
B1, B2, B3: V;
n1, m1, n2, m2, n3, m3: integer;
begin
Randomize;
writeln('Введите число строк и столбцов массива');
readln(n1, m1);
SetLength(A1, n1, m1);
InitM(A1);
Writeln('массив А1');
PrintM(A1);
GetV(A1, B1);
writeln('Количество положительных ', B1[1], ', количество отрицательных ', B1[2]);
writeln('Введите число строк и столбцов массива');
readln(n2, m2);
SetLength(A2, n2, m2);
InitM(A2);
Writeln('массив А2');
PrintM(A2);
GetV(A2, B2);
writeln('Количество положительных ', B2[1], ', количество отрицательных ', B2[2]);
writeln('Введите число строк и столбцов массива');
readln(n3, m3);
SetLength(A3, n3, m3);
InitM(A3);
Writeln('массив А3');
PrintM(A3);
GetV(A3, B3);
writeln('Количество положительных ', B3[1], ', количество отрицательных ', B3[2]);
end.
Тестовый прогон:
Введите число строк и столбцов массива
3 3
массив А1
6 11 -46
24 -41 36
44 9 18
Количество положительных 7, количество отрицательных 2
Введите число строк и столбцов массива
2 4
массив А2
37 -4 -2 43
-18 36 0 44
Количество положительных 4, количество отрицательных 3
Введите число строк и столбцов массива
5 2
массив А3
5 -15
49 -1
-40 35
-33 -9
-22 -31
Количество положительных 3, количество отрицательных 7
№6 - 1,3,4,5
№7 - 1
№8 - 1,2,3,4
№9 -
=(B2-$C$1)*4
=(B3-$C$1)*4
№10 - 7,5
Объяснение:
№6- Формат записи адреса ячейки: БЦ, т.е.
Б - это буквенное обозначение столбца, а Ц - это номер строки.
№7 - Формула всегда начинается со знака равенства (=), за которым могут следовать числа, математические операторы, функции, которые значительно расширяют возможности формулы.
№8 - Смешанная ссылка содержит либо абсолютно адресуемый столбец и относительно адресуемую строку $А1, либо относительно адресуемый столбец и абсолютно адресуемую строку А$1.
№9 - $C$1 - Абсолютная ссылка (в формуле всегда ссылается на ячейку, расположенную в определённом (фиксированном) месте). Поэтому, при копировании будет изменяться только номер столбца B
№10 - В ячейке A1 число 5, в ячейке A2 число 10. Среднеарифметическое этих чисел равно (5+10)/2=7.5