Подпрограммы, Pascal ABCДано массивы А1(N1,M1), A2(N2,M2), A3(N3,M3). Сформировать одномерные
Подпрограммы, Pascal ABC
Дано массивы А1(N1,M1), A2(N2,M2), A3(N3,M3). Сформировать одномерные массивы В1, В2, В3, каждый из которых состоит из 2-ух частей. В первом из их количество положительных частей массивов А1,А2,А3 соответственно, во втором количество отрицательных частей массивов А1,А2,А3 соответственно. Определение количества отрицательных и положительных частей в начальном массиве и формирование одномерного массива выполнить в подпрограмме.
1 ответ
Ольга
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] gt; 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] lt; 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
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] gt; 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] lt; 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
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
10) Килограмм конфет дороже килограмма печенья на 52 р. За 8
Математика.
Во сколько раз число атомов кислорода в земной коре больше числа
Химия.
Облако тегов