Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
30.04.2013
Размер:
42.5 Кб
Скачать

Семинар 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. Написать программу, которая выполняет те же действия что и в примере, но вводит исходные данные из текстового файла.

  2. Разработайте программу, которая, используя тип запись, формирует массив данных о сотрудниках отдела, содержащий следующую информацию: фамилия, год поступления в отдел, стаж работы в отделе, общий стаж работы. Затем сортирует полученный массив в соответствии со стажем работы в отделе и выводит первые пять фамилий из отсортированного списка. После чего определяет среди первых пяти сотрудников сотрудника, у которого общий стаж работы наибольший. Исходные данные хранятся в текстовом файле. ( Для студентов с номерами по списку с 1 по 13)

  3. Разработать программу, которая формирует массив записей о студентах некоторой группы содержащей следующую информацию: фамилию, оценки за последнюю сессию по четырем предметам и размер стипендии. Фамилия и оценки программа должна вводить из текстового файла, а размер стипендии считать исходя из оценок: все “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 = “Ложь”, т.е. перестановок элементов массива не было, следовательно, элементы массива упорядочены.

Соседние файлы в папке ДЗ2