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
Const n=8; var aNam, aFam, aDat: array[1..n] of string; i: integer;
begin aNam[1]:='Олег'; aFam[1]:='Бубенков'; aDat[1]:='1993'; aNam[2]:='Игорь'; aFam[2]:='Бросов'; aDat[2]:='1991'; aNam[3]:='Тимур'; aFam[3]:='Наружный'; aDat[3]:='1961'; aNam[4]:='Анастасия'; aFam[4]:='Боброва'; aDat[4]:='1985'; aNam[5]:='Михаил'; aFam[5]:='Тапаров'; aDat[5]:='1957'; aNam[6]:='Евгений'; aFam[6]:='Костарева'; aDat[6]:='1992'; aNam[7]:='Мария'; aFam[7]:='Никитин'; aDat[7]:='1977'; aNam[8]:='Ксения'; aFam[8]:='Бабенкова'; aDat[8]:='1978'; writeln('Лица, чьи фамилии начинаются на букву "Б"'); for i := 1 to n do if aFam[i][1] = 'Б' then writeln(aNam[i],' ',aFam[i], ' (', aDat[i], ')') end.
тестовый прогон:
Лица, чьи фамилии начинаются на букву "Б" Олег Бубенков (1993) Игорь Бросов (1991) Анастасия Боброва (1985) Ксения Бабенкова (1978)
Возможна также более "современная" запись программы
const n = 8;
type tP = record Nam: string; Fam: string; Dat: string end;
var M: array[1..n] of tP; i: integer;
begin with M[1] do begin Nam := 'Олег'; Fam := 'Бубенков'; Dat := '1993' end; with M[2] do begin Nam := 'Игорь'; Fam := 'Бросов'; Dat := '1991' end; with M[3] do begin Nam := 'Тимур'; Fam := 'Наружный'; Dat := '1961' end; with M[4] do begin Nam := 'Анастасия'; Fam := 'Боброва'; Dat := '1985' end; with M[5] do begin Nam := 'Михаил'; Fam := 'Тапаров'; Dat := '1957' end; with M[6] do begin Nam := 'Евгений'; Fam := 'Костарева'; Dat := '1992' end; with M[7] do begin Nam := 'Мария'; Fam := 'Никитин'; Dat := '1977' end; with M[8] do begin Nam := 'Ксения'; Fam := 'Бабенкова'; Dat := '1978' end; writeln('Лица, чьи фамилии начинаются на букву "Б"'); for i := 1 to n do With M[i] do begin if Fam[1] = 'Б' then writeln(Nam, ' ', Fam, ' (', Dat, ')') end end.
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
n=8;
var
aNam, aFam, aDat: array[1..n] of string;
i: integer;
begin
aNam[1]:='Олег'; aFam[1]:='Бубенков'; aDat[1]:='1993';
aNam[2]:='Игорь'; aFam[2]:='Бросов'; aDat[2]:='1991';
aNam[3]:='Тимур'; aFam[3]:='Наружный'; aDat[3]:='1961';
aNam[4]:='Анастасия'; aFam[4]:='Боброва'; aDat[4]:='1985';
aNam[5]:='Михаил'; aFam[5]:='Тапаров'; aDat[5]:='1957';
aNam[6]:='Евгений'; aFam[6]:='Костарева'; aDat[6]:='1992';
aNam[7]:='Мария'; aFam[7]:='Никитин'; aDat[7]:='1977';
aNam[8]:='Ксения'; aFam[8]:='Бабенкова'; aDat[8]:='1978';
writeln('Лица, чьи фамилии начинаются на букву "Б"');
for i := 1 to n do
if aFam[i][1] = 'Б' then
writeln(aNam[i],' ',aFam[i], ' (', aDat[i], ')')
end.
тестовый прогон:
Лица, чьи фамилии начинаются на букву "Б"
Олег Бубенков (1993)
Игорь Бросов (1991)
Анастасия Боброва (1985)
Ксения Бабенкова (1978)
Возможна также более "современная" запись программы
const
n = 8;
type
tP = record
Nam: string;
Fam: string;
Dat: string
end;
var
M: array[1..n] of tP;
i: integer;
begin
with M[1] do begin Nam := 'Олег'; Fam := 'Бубенков'; Dat := '1993' end;
with M[2] do begin Nam := 'Игорь'; Fam := 'Бросов'; Dat := '1991' end;
with M[3] do begin Nam := 'Тимур'; Fam := 'Наружный'; Dat := '1961' end;
with M[4] do begin Nam := 'Анастасия'; Fam := 'Боброва'; Dat := '1985' end;
with M[5] do begin Nam := 'Михаил'; Fam := 'Тапаров'; Dat := '1957' end;
with M[6] do begin Nam := 'Евгений'; Fam := 'Костарева'; Dat := '1992' end;
with M[7] do begin Nam := 'Мария'; Fam := 'Никитин'; Dat := '1977' end;
with M[8] do begin Nam := 'Ксения'; Fam := 'Бабенкова'; Dat := '1978' end;
writeln('Лица, чьи фамилии начинаются на букву "Б"');
for i := 1 to n do
With M[i] do begin
if Fam[1] = 'Б' then
writeln(Nam, ' ', Fam, ' (', Dat, ')')
end
end.