uses crt;
const
n = 50;
lim = 30;
type
student = record
fio: string;
kurs: byte;
group, h_uv, h: integer;
end;
var
arr: array [1 .. n] of student;
k, count: byte;
procedure AddRec;
var
i: byte;
begin
inc(count);
if count > n then
begin
writeln('Nevozmozhno dobavit zapis!');
readkey;
exit;
end;
writeln('Record #', count);
with arr[count] do
begin
write('FIO: ');
readln(fio);
write('Kurs: ');
readln(kurs);
write('Gruppa: ');
readln(group);
writeln('Propushenno chasov:');
write(' - po uvazhitelnoi prichine: ');
readln(h_uv);
write(' - bez uvazhitelnoy prichiny: ');
readln(h);
end;
writeln('Ok!');
end;
procedure WriteRec(nomrec: byte);
begin
writeln('Record #', nomrec);
with arr[nomrec] do
begin
writeln('FIO: ', fio);
writeln('Kurs: ', kurs);
writeln('Gruppa: ', group);
writeln('Propushenno chasov:');
writeln(' - po uvazhitelnoi prichine: ', h_uv);
writeln(' - bez uvazhitelnoy prichiny: ', h);
end;
writeln('-');
end;
procedure WriteAllRec;
var
i: byte;
begin
for i := 1 to count do
WriteRec(i);
writeln('Records: ', count);
end;
function AllHours(nomrec: byte): integer;
begin
with arr[nomrec] do
AllHours := h_uv + h;
end;
procedure BadStudentsList(nomgroup: byte);
var
i, kol: byte;
begin
kol := 0;
for i := 1 to count do
if (arr[i].group = nomgroup) and (AllHours(i) > lim) then
begin
inc(kol);
WriteRec(i);
writeln(' - vsego chasov: ', AllHours(i));
writeln;
end;
if kol > 0 then
writeln('Records: ', kol)
else
writeln('V zadannoi gruppe net takih studentov!');
end;
function Menu: byte;
var
ch: char;
begin
ClrScr;
writeln('1 - dobavit zapis');
writeln('2 - prosmotr vseh zapisei');
writeln('3 - prosmotr zadannoi zapisi');
writeln('4 - spisok studentov, propustivshih >', lim, ' chasov');
writeln;
writeln('Esc - Exit');
writeln;
write('-> ');
ch := readkey;
if not(ch in ['1' .. '4', #27]) then
writeln('Error!')
else
case ch of
'1':
Menu := 1;
'2':
Menu := 2;
'3':
Menu := 3;
'4':
Menu := 4;
#27:
Halt;
end;
end;
begin
count := 0;
repeat
case Menu of
1:
begin
ClrScr;
AddRec;
end;
2:
begin
ClrScr;
if count > 0 then
WriteAllRec
else
writeln('Net ne odnoi zapisi!');
readkey;
end;
3:
begin
if count > 0 then
begin
repeat
ClrScr;
write('Zadaite nomer zapisi: ');
readln(k);
if (k <= 0) or (k > count) then
begin
writeln('Error!');
readkey;
end;
until (k > 0) and (k <= count);
WriteRec(k);
end
else
begin
ClrScr;
writeln('Net ne odnoi zapisi!');
end;
readkey;
end;
4:
begin
ClrScr;
if count > 0 then
begin
write('Zadaite nomer gruppy: ');
readln(k);
BadStudentsList(k);
end
else
writeln('Net ne odnoi zapisi!');
readkey;
end;
end;
until count > n;
end.
Похожие записи/страницы:
- Составить список учебной группы, включающей 5 человек. Для каждого учащегося указать фамилию, дату рождения, год…
- В фамилии, имени, отчестве – не более 12 букв, пол указанная прописью М и Ж, возраст от 16 до 35 лет, курс -…
- Описать запись с именем Student, содержащую следующие поля: ФИО (Вася Иванов); Номер группы(2-PO-3), Дата…
- Пример объявления и использования объекта - Pascal(Паскаль)
- Из списка группы вывести фамилии студентов не старше 18 лет - Pascal(Паскаль)
- Найти среднее арифметическое отрицательных элементов матрицы t(9,6) - Pascal(Паскаль)
- Написать программу посещения студентами дисплейного класса. Учесть приход и уход студентов в течение занятий.…
- Ввести информацию по 10 избирателям, определить количество людей, проживающих на улице Красная - Pascal(Паскаль)