Очередь (FIFO): студенты, чьи фамилии начинаются с буквы "Б" - Turbo Pascal
Формулировка задачи:
Очередь (FIFO)
Все студенты, чьи фамилии начинаются с буквы "Б"
Решение задачи: «Очередь (FIFO): студенты, чьи фамилии начинаются с буквы "Б"»
textual
Листинг программы
program lab;
uses crt;
type
dt=record
fam:string[14];
nam:string[14];
grp:string[10];
grd:integer;
ray:array[1..5] of integer;
end;
pDat=^data;
data=record
dat:dt;
nxt:pDat;
end;
procedure add(var pV:pDat);
begin
with pV^.dat do
begin
write('fam: ');
readln(fam);
write('nam: ');
readln(nam);
write('grp: ');
readln(grp);
write('grd: ');
readln(grd);
write('ray 1: ');
readln(ray[1]);
write('ray 2: ');
readln(ray[2]);
write('ray 3: ');
readln(ray[3]);
write('ray 4: ');
readln(ray[4]);
write('ray 5: ');
readln(ray[5]);
end;
end;
procedure shw(var pV:pDat; n:integer);
var
sr:real;
begin
if n=0 then
begin
with pV^.dat do
begin
sr:=(ray[1]+ray[2]+ray[3]+ray[4]+ray[5])/5;
writeln('|',fam:10,'|',nam:10,'|',grp:5,'|',grd:5,'|',sr:5:1,'|');
end
end
else
begin
with pV^.dat do
if fam[1]='B' then
begin
sr:=(ray[1]+ray[2]+ray[3]+ray[4]+ray[5])/5;
writeln('|',fam:10,'|',nam:10,'|',grp:5,'|',grd:5,'|',sr:5:1,'|');
end;
end;
end;
var
pB,pE,pA,pBS:pDat;
i,k:integer;
begin
write('Vvedite kol-vo zapisey : ');
readln(k);
clrscr;
new(pB);
pB^.nxt:=nil;
add(pB);
pE:=pB;
for i:=1 to k-1 do
begin
new(pA);
pA^.nxt:=nil;
pE^.nxt:=pA;
pE:=pA;
add(pA);
end;
pBS:=pB;
writeln('+-------------All list------------------+');
writeln('| Fam | Nam | Grp | Grd | Sr |');
writeln('|----------+----------+-----+-----+-----|');
while pB<>nil do
begin
shw(pB,0);
pB:=pB^.nxt;
end;
writeln('+---------------------------------------+');
pB:=pBS;
writeln;writeln;
writeln('+---------------------------------------+');
writeln('| SELECT * FROM STUDENTS WHERE FAM[1]=B |');
writeln('+---------------------------------------+');
writeln('| Fam | Nam | Grp | Grd | Sr |');
writeln('|----------+----------+-----+-----+-----|');
while pB<>nil do
begin
shw(pB,1);
pA:=pB;
pB:=pB^.nxt;
dispose(pA);
end;
writeln('+---------------------------------------+');
readln;
end.
Объяснение кода листинга программы
Этот код написан на Turbo Pascal и выполняет следующую задачу: создает структуру данных для хранения информации о студентах, которые имеют фамилию, начинающуюся с буквы Б. Затем он добавляет студентов в очередь, используя эту структуру данных. После этого он выводит информацию о каждом студенте в очереди, а затем выводит информацию о студентах, у которых фамилия начинается с буквы Б.
Вот список переменных и их значений, представленных в виде кода:
fam: строка, содержащая фамилию студента (например,Бабаев)nam: строка, содержащая имя студента (например,Иван)grp: строка, содержащая группу студента (например,101)grd: целое число, представляющее степень студента (например, 5)ray: массив из пяти целых чисел, представляющих оценки студента (например, {5, 4, 3, 2, 1})pDat: переменная типа^data, которая указывает на текущий элемент данных в очередиdata: запись типаrecord, которая содержит информацию о студенте и ссылку на следующий элемент в очереди Вот пример вывода информации о студентах: +-------------All list------------------+ | Fam | Nam | Grp | Grd | Sr | |----------+----------+-----+-----+-----| +---------------------------------------+ | Fam | Nam | Grp | Grd | Sr | |----------+----------+-----+-----+-----| +---------------------------------------+ | Fam | Nam | Grp | Grd | Sr | |----------+----------+-----+-----+-----| +---------------------------------------+ | SELECT * FROM STUDENTS WHERE FAM[1]=B | +---------------------------------------+ | Fam | Nam | Grp | Grd | Sr | |----------+----------+-----+-----+-----| +---------------------------------------+ | Fam | Nam | Grp | Grd | Sr | |----------+----------+-----+-----+-----| +---------------------------------------+ | Fam | Nam | Grp | Grd | Sr | |----------+----------+-----+-----+-----| +---------------------------------------+ Этот код использует структуры данных, такие как записи и массивы, для хранения информации о студентах и их оценках. Он также использует указатели для связи между записями данных в очереди.