Семинар 2
Тема занятия. Записи
Задание
Разработать программу, которая вводит в массив записей информацию о студентах учебной группы: фамилию и дату рождения.
Организовать поиск информации о студенте, фамилия которого вводится с клавиатуры.
Program Ex;
Type
Data=record {Тип запись данные о дате}
Year: word; {год}
Month: 1..12: {месяц}
Day : 1..31; {день}
End;
Zap = record {Тип запись данные о студенте}
Fam: string[16]; {фамилия}
Birthday: data;{дата рождения}
End;
Var fb:array[1..25] of zap; {Массив данных о группе студентов}
Fff : string; {Строка для ввода фамилии}
I,j,m,n: byte;
Key : Boolean; {Ключ поиска, если фамилия найдена - True}
Begin
Writeln(‘Введите данные о количестве студентов N<= 25’);
Readln(n);
M:=0;
{Ввод исходных данных с клавиатуры поле за полем}
Repeat
M:=M+1;
Write (‘Ведите фамилию :’);
Readln(fb[m].fam);
Write (‘Ведите год рождения :’);
Readln(fb[m].birthday.year);
Write (‘ месяц :’);
Readln(fb[m].birthday.month);
Write (‘ день :’);
Readln(fb[m].birthday.day);
Until n=m;
Writeln;
{Вывод исходных данных на экран с помощью оператора With}
Writeln(‘Список студентов группы ’);
writeln;
For I:=1 to M do
With fb[i] do
Begin
Write(I:2, Fam:17);
With birthday do
Writeln(Year:6, Month:4, Day:4);
End;
Writeln;
{Поиск данных а массиве записей}
Writeln (‘Введите фамилию’);
Readln(fff);
I:=0;
Key:=False {Признак “данные не найдены”}
Repeat
I:=i+1;
If fb[i].fam= fff then Key:=True;
Until Key Or (i=m);
{Вывод результатов}
If Key Then {Если такой студент найден, то выводим данные}
With fb[i] do
Begin
Writeln(‘Данные о студенте :’);
Write (Fam:18, ‘ ‘);
With birthday do
Writeln (day:2,’:’, month:2,’:’, year:5,’года’);
End
Else Writeln(‘Данные о студенте ’, fff:18,’ нет.’);
End.
Задания для самостоятельной работы
-
Написать программу, которая выполняет те же действия что и в примере, но вводит исходные данные из текстового файла.
-
Разработайте программу, которая, используя тип запись, формирует массив данных о сотрудниках отдела, содержащий следующую информацию: фамилия, год поступления в отдел, стаж работы в отделе, общий стаж работы. Затем сортирует полученный массив в соответствии со стажем работы в отделе и выводит первые пять фамилий из отсортированного списка. После чего определяет среди первых пяти сотрудников сотрудника, у которого общий стаж работы наибольший. Исходные данные хранятся в текстовом файле. ( Для студентов с номерами по списку с 1 по 13)
-
Разработать программу, которая формирует массив записей о студентах некоторой группы содержащей следующую информацию: фамилию, оценки за последнюю сессию по четырем предметам и размер стипендии. Фамилия и оценки программа должна вводить из текстового файла, а размер стипендии считать исходя из оценок: все “5” - повышенная ( +100%), есть четверки - повышенная ( +50%), все четверки - повышенная ( +25%), одна тройка – обычная стипендия. Программа должна сортировать массив по размеру стипендии и выводить его на экран. Предусмотреть ввод обычно стипендии с клавиатуры. ( Для студентов с номерами по списку с 14 до конца)
Алгоритм сортировки по возрастанию методом “пузырька”
Присвоим переменным начальные значения:
-
I - текущий номер элемента массива - 1;
-
Flag – “ложь” – перестановок не было.
Для каждой пары элементов проверим условие. Если A[I]>A[I+1], то поменяем местами элементы A[I] и A[I+1] и присвоим переменной Flag значение “Истина”. Если I<N, то увеличим значение переменной I на 1. После завершения просмотра массива, проверим значение переменной Flag. Если Flag = “Истина”, т.е. были перестановки хотя бы двух элементов массива, то повторим сравнение элементов массива еще раз. Если Flag = “Ложь”, т.е. перестановок элементов массива не было, следовательно, элементы массива упорядочены.
