Программа
Program GroupList;
{ Группа студентов }
Const QuantityOfStudents=25; { Кол-во студентов в группе }
QuantityOfTerm=12; { Кол-во семестров }
Var List:array[1..QuantityOfStudents] of { Массив группы }
record
FamilyName:string[10]; { Фамилия }
DateOfBirth:record { Дата рождения }
day:1..31;
month:1..12;
year:integer;
end;
YearOfEntrance:integer; { Год поступления }
Course:1..6; { Курс }
Group:string[6]; { Группа }
Mark:array[1..QuantityOfTerm] of 3..5 { Оценки по семестрам }
end;
Procedure InputData; { Процедура ввода данных }
var i,j:integer; { Счетчики }
Begin
for i:=1 to QuantityOfStudents do { Цикл просмотра массива }
with List[i] do { Присоединение заголовка записи }
begin
WriteLn('N° ',i); { Вывод номера записи }
Write('Фамилия '); { Вывод подсказки }
ReadLn(FamilyName); { и ввод фаимилии }
while Length(FamilyName)<10 do FamilyName:=FamilyName+' ';
{ Выравнивание длины фамилии до 10 символов }
with DateOfBirth do { Присоединение подзаголовка записи }
begin
Write('Дата рождения - число '); { Ввод даты рождения }
ReadLn(Day);
Write(' - месяц ');
ReadLn(Month);
Write(' - год ');
ReadLn(Year);
end;
Write('Год поступления '); { Ввод года поступления }
ReadLn(YearOfEntrance);
Write('Курс '); { Ввод курса }
ReadLn(Course);
Write('Группа '); { Ввод группы }
ReadLn(Group);
for j:=1 to QuantityOfTerm do { Цикл ввода оценок }
begin
Write('Оценка ',j,'-го семестра '); { Ввод оценки }
ReadLn(Mark[j])
end
end;
End;
Procedure OutputData; { Процедура вывода данных }
var i,j:integer; { Счетчики }
Begin
WriteLn;
{ Вывод шапки таблицы: }
WriteLn('┌────┬────────────┬──────────┬───────┬────┬────────┬──────────────┐');
WriteLn('│ N° │ Фамилия │Дата рожд.│г.пост.│курс│ группа │ Оценки │');
WriteLn('├────┼────────────┼──────────┼───────┼────┼────────┼──────────────┤');
for i:=1 to QuantityOfStudents do { Цикл вывода информации о студентах }
with List[i] do { Присоединение заголовка записи }
begin
Write('│ ',i:2,' │ '); { Вывод номера записи и линий таблицы }
{ Вывод полей записи текущего студента и линий таблицы: }
Write(FamilyName,' │ ');
with DateOfBirth do Write(Day:2,'.',Month:2,'.',Year:2,' │ ');
Write(YearOfEntrance:5,' │ ',Course:2,' │ ',Group:6,' │ ');
for j:=1 to QuantityOfTerm do Write(Mark[j]); { Цикл вывода оценок }
WriteLn(' │')
end;
{ Вывод нижней линии таблицы: }
WriteLn('└────┴────────────┴──────────┴───────┴────┴────────┴──────────────┘');
End;
Procedure OutputOriginalData;
{ Процедура вывода данных остудентах, получивших в первом семестре 5}
var i,j:integer; { Счетчики }
Begin
{ Пропуск строки, вывод заголовка и шапки таблицы: }
WriteLn;
WriteLn('Отличники первого семестра');
WriteLn('┌────┬────────────┬──────────┬───────┬────┬────────┬──────────────┐');
WriteLn('│ N° │ Фамилия │Дата рожд.│г.пост.│курс│ группа │ Оценки │');
WriteLn('├────┼────────────┼──────────┼───────┼────┼────────┼──────────────┤');
for i:=1 to QuantityOfStudents do { Просмотра массива }
with List[i] do { Присоединение заголовка записи }
if Mark[1]=5 then { Если оценка первого семестра - 5, то }
begin { вывод записи студента }
Write('│ ',i:2,' │ ');
Write(FamilyName,' │ ');
with DateOfBirth do Write(Day:2,'.',Month:2,'.',Year:2,' │ ');
Write(YearOfEntrance:5,' │ ',Course:2,' │ ',Group:6,' │ ');
for j:=1 to QuantityOfTerm do Write(Mark[j]);
WriteLn(' │')
end;
{ Вывод нижней линии таблицы: }
WriteLn('└────┴────────────┴──────────┴───────┴────┴────────┴──────────────┘');
End;
Procedure Stop; { Процедура остановки программы }
Begin
WriteLn; { Пропуск строки }
WriteLn('Нажмите [Enter]'); { Вывод приглашения нажать [Enter] }
ReadLn { Ввод конца строки }
End;
BEGIN
InputData; { Ввод данных }
OutputData; { Вывод данных }
Stop; { Остановка программы до нажатия [Enter] }
OutputOriginalData; { Вывод данных об отличниках }
Stop; { Остановка программы до нажатия [Enter] }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию