Написать программу в C++ с использованием структур Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. – строка 20 симолов
факультет – строка 5 символов
группа – строка 6 символов
год рождения – целое число 1900-2000
Список упорядочен по убыванию года рождения. Разработать алгоритмы и программы линейного и двоичного поиска всех студентов, родившихся до 1989 года с выводом найденных записей на экран.
a, b, h, x: real;
begin
writeln('Введите начальное значение, конечное значение и шаг ');
readln(a, b, h);
x := a;
while x <= b do
begin
writeln(x:5:2,' ',2 * cos(x) - 1:10:7);
x := x + h
end
end.
Тест:
Введите начальное значение, конечное значение и шаг
-1.8 1.6 0.2
-1.80 -1.4544042
-1.60 -1.0583990
-1.40 -0.6600657
-1.20 -0.2752845
-1.00 0.0806046
-0.80 0.3934134
-0.60 0.6506712
-0.40 0.8421220
-0.20 0.9601332
0.00 1.0000000
0.20 0.9601332
0.40 0.8421220
0.60 0.6506712
0.80 0.3934134
1.00 0.0806046
1.20 -0.2752845
1.40 -0.6600657
1.60 -1.0583990
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