При запуске программы на выполнение на экране должно отображаться меню:
1. Создать файл
2. Открыть файл
3. Обработать данные
4. Добавить данные
5. Удалить данные
6. Распечатать данные
Выбор соответствующего пункта меню осуществлять указанием номера.
Реализацию каждого пункта меню и самого меню, операций поиска и сортировки оформить в виде процедуры, которые поместить в модуль.
1. Вариант
Сформировать список фамилий любимых писателей учеников класса (ученики по очереди вводят по три фамилии различных писателей), хранящийся в типизированном файле. Результат работы программы записать в файл REZ.DAT.
1. Поля записи – фамилия ученика фамилии писателей. Напечатать, сколько учеников назвали фамилию данного писателя (фамилии писателя вводится с клавиатуры).
2. Поля записи – фамилия ученика и поле, являющееся записью из трех полей - фамилии писателей. Напечатать фамилии пяти наиболее популярных писателей.
2. Вариант
Известны результаты сдачи сессии (три экзамена) группой студентов. Информация об одном студенте вводится в виде записи и хранится в типизированном файле. Результат работы программы записать в файл REZ.DAT.
1. Поля записи – фамилия, три оценки. Сообщить, сколько студентов сдали данный предмет на хорошо (название предмета вводится с клавиатуры).
2. Поля записи – фамилия, поле оценки, являющееся записью из трех полей типа byte (три оценки). Сообщить фамилии пяти лучших студентов. Данные - результаты сессии вывести на экран в виде таблицы. В шапке таблицы вывести названия предметов.
3. Вариант
Ввести фамилии и даты (день, месяц и год) рождения Ваших друзей. Вывести фамилии тех, кто родился летом (июнь, июль, август). Данные о друге хранить в виде записи в типизированном файле. Результат работы программы записать в файл REZ.DAT.
1. Поля записи – ФИО, день, месяц и год. Вывести фамилии тех, кто родился летом (июнь, июль, август). Результат работы программы записать в массив REZ. Элемент массива – фамилия друга.
2. Поля записи – ФИО, дата - являющаяся записью из трех полей - день, месяц и год. Сообщить фамилии трех самых старших друзей.
4. Вариант
Ввести данные студентов.
1. Данные об одном студенте хранить в виде записи с полями – фамилия и инициалы, пол (одна буква М или Ж), год рождения. Напечатать список студентов мужского пола с указанием их возраста. В конце списка напечатать средний возраст. Результат работы программы записать в файл REZ.DAT.
2. Данные об одном студенте хранить в виде записи с полями – фамилия и инициалы, пол (одна буква М или Ж), дата рождения, являющаяся записью из трех полей - день, месяц и год. Напечатать список студентов мужского пола с указанием их возраста, упорядочив список по возрасту. Результат работы программы записать в файл REZ.DAT.
5. Вариант
Ввести информацию об автолюбителях: фамилия, марка автомобиля, цвет машины.
1. Данные хранить в виде записи с полями – фамилия и инициалы, марка автомобиля, цвет машины. Вывести на экран дисплея сведения об автолюбителях, имеющих автомобиль "Жигули" зеленого цвета. Результат работы программы записать в файл REZ.DAT.
2. Данные хранить в виде записи с полями – фамилия и инициалы, автомобиль - являющаяся записью из трех полей: марка автомобиля, цвет машины, год выпуска. Вывести на экран дисплея сведения об автолюбителях, имеющих автомобиль "Жигули" зеленого цвета, список упорядочить по году выпуска. Результат работы программы записать в файл REZ.DAT.
6. Вариант
Ввести данные о студентах одного курса (фамилия и инициалы, пол, год рождения, месяц, день рождения). Вывести на экран дисплея фамилии студентов мужского пола, родившихся летом, (июнь, июль, август). Данные хранить в виде записи. Результат работы программы записать в файл REZ.DAT.
1.Данные хранить в виде записи с полями – фамилия и инициалы, пол, год, месяц, день рождения. Результат работы программы записать в массив REZ. Элемент массива – фамилия студента.
2. Данные хранить в виде записи с полями – фамилия и инициалы, пол, дата рождения - являющаяся записью из трех полей: год, месяц, день рождения. Вывести на экран дисплея фамилии студентов мужского пола, родившихся летом, (июнь, июль, август), список упорядочить по возрасту.
7. Вариант
Ввести информацию о поездах, отправляющихся с Ленинградского вокзала г. Москвы (номер поезда, станция назначения, время отправления, время в пути). Вывести на экран дисплея информацию о поездах, отправляющихся в Ленинград от 21 до 24часов. Данные хранить в виде записи. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – номер поезда, станция назначения, время отправления, время в пути.
2. Данные хранить в виде записи с полями – номер поезда, станция назначения, время - являющееся записью из двух полей: время отправления, время в пути. Вывести на экран информацию о поездах, отправляющихся в Ленинград от 21 до 24часов, список упорядочить номеру.
8. Вариант
В задаче 8 вывести информацию о поездах, следующих в г.Ленинград и находящихся в пути менее 8 часов. Данные хранить в виде записи (см. задачу 7).
9. Вариант
Составьте список книг по программированию вашей личной библиотеки (фамилия автора и его инициалы, название книги, название издательства, год издания). Вывести на экран дисплея фамилии авторов и названия книг, выпущенных издательством "Мир". Данные хранить в виде записи. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – фамилия автора и его инициалы, название книги, название издательства, год издания.
2. Данные хранить в виде записи с полями – фамилия автора и его инициалы, название книги, данные - являющееся записью из двух полей: название издательства, год издания. Вывести на экран дисплея фамилии авторов, названия книг и год издания, выпущенных издательством "Мир", список упорядочить по году издания.
10. Вариант
Ввести информацию о магазинах Вашего города (района): название магазина (универмаг, продукты, ткани и т.д.),его номер, адрес. Вывести на экран дисплея информацию обо всех магазинах "Книги". Данные хранить в виде записи. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – название магазина (универмаг, продукты, ткани и т.д.), его номер, улица, номер дома.
2. Данные хранить в виде записи с полями – название магазина, его номер, адрес - являющееся записью из двух полей: улица, номер дома. Вывести на экран дисплея. Вывести на экран дисплея информацию обо всех магазинах "Книги", список упорядочить по номеру магазина.
11. Вариант
В шахматном турнире принимает участие 10 шахматистов. Ввести фамилии участников и инициалы, их возраст и результаты: победа-1, ничья-0.5, проигрыш-0 очков. Вывести на экран фамилии участников турнира и количество набранных ими очков в порядке занятых мест. Данные хранить в виде записи. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – фамилия участника и инициалы, возраст, результат.
2. Данные хранить в виде записи с полями – результат, участник, являющийся записью из двух полей: фамилия участника и инициалы, возраст. Вывести на экран фамилии участников турнира и количество набранных ими очков в порядке занятых мест.
12. Вариант
В чемпионате по футболу принимает участие 6 команд. Ввести названия команд и результаты игр: выигрыш-2,ничья-1, проигрыш-0 очков. Вывести на экран дисплея названия трех лучших команд по числу очков и количество побед каждой команды. Данные хранить в виде записи. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – название команды, город, результат.
2. Данные хранить в виде записи с полями – результат, участник, являющееся записью из двух полей: название команды, город. Вывести на экран дисплея названия трех лучших команд по числу очков и количество побед каждой команды. Сообщить результаты всех команд указанного города.
13. Вариант
В классном журнале (в классе не более 20 учеников) каждый день по предмету отмечается пропуск занятия или выставляется оценка за ответ. Ввести данные об успевающих учениках за один день: фамилии и инициалы, оценка, пропуск. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – фамилия и инициалы, пропуск, оценка.
2. Данные хранить в виде записи с полями – фамилия и инициалы, данные, являющиеся записью из двух полей: пропуск, оценка. Вывести на экран дисплея фамилии учеников, не имеющих ни одной двойки, список упорядочить по набранному баллу.
14. Вариант
В задаче 13 сообщить фамилии учащихся, не имеющих тройки. Результат работы программы записать в файл REZ.DAT.
15. Вариант
В задаче 13 вывести на экран дисплея фамилии учеников, имеющих пропуски занятий.
16. Вариант
К спортивным журналистам обратились с просьбой назвать трех лучших хоккеистов сезона. Информация от каждого журналиста поступает независимо от других. Сообщить количество баллов каждого названного хоккеиста (за первое место-3, за второе-2,за третье место-1). Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – фамилия и инициалы 1, команда 1,балл 1, фамилия и инициалы 2, команда 2, балл2, фамилия и инициалы 3, команда 3, балл3.
2. Данные хранить в виде записи с полями – хоккеист1, хоккеист2, хоккеист3, каждое поле является полем с полями: фамилия и инициалы, команда, балл. Вывести на экран дисплея фамилии хоккеистов, список упорядочить по набранному баллу. Определить лучшего хоккеиста сезона по сумме очков (за первое место-3, за второе-2,за третье место-1).
17. Вариант
Ввести информацию по результатам подписки на газеты и журналы. Указать наименование, стоимость подписки на год, количество подписчиков. Выдать справку об общем количестве подписчиков и общей сумме полученных денег. Сообщить самое популярное издание.
1. Данные хранить в виде записи с полями – наименование, стоимость подписки на год, количество подписчиков.
2. Данные хранить в виде записи с полями – наименование, которое является записью с двумя полями: стоимость подписки на год, количество подписчиков. Сообщить список всех изданий, упорядочив по популярности.
18. Вариант
Для задачи 17 напечатать, какое издание собрало наибольшую сумму.
19. Вариант
В задаче 17 сообщить информацию только для журналов.
20. Вариант
Ввести результаты спортивного турнира; фиксируется количество очков, набранных каждым игроком одной команды. В команде всего 3 игрока. По результатам игры вывести на экран фамилию лучшего игрока и количество набранных им очков. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – наименование команды, фамилии и инициалы игроков очки игроков.
2. Данные хранить в виде записи с полями – наименование команды, игроки, последнее поле является записью с полями: фамилии и инициалы игроков очки игроков. Сообщить фамилии всех игроков и набранных ими баллов, упорядочив фамилии по результативности.
21. Вариант
Ввести результаты нескольких проведенных тиражей "Спортлото:5 из 36". Вывести на экран дисплея частоту появления каждого из 36 номеров во всех проведенных тиражах. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – номер тиража, пять выигрышных номеров.
2. Данные хранить в виде записи с полями – номер тиража, являющийся записью с пятью полями: пять выигрышных номеров. Сообщить выигрышные номера, упорядочив их в порядке возрастания частоты появления.
22. Вариант
Дан список фамилий, имен и отчеств с указанием возраста вывести на экран дисплея данные тех, чьи имена, начинаются с буквы А. Данные хранить в виде записей. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – фамилия, имя, отчество возраст.
2. Данные хранить в виде записи с полем – абонент, которое является записью с полями: фамилия, имя, отчество возраст. Найденные фамилии упорядочить по алфавиту.
23. Вариант
Дан список фамилий, имен и отчеств с указанием возраста вывести на экран дисплея данные тех, чье имя введено с клавиатуры. Данные хранить в виде записей. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – фамилия, имя, отчество возраст.
2. Данные хранить в виде записи с полем – абонент, которое является записью с полями: фамилия, имя, отчество возраст. Найденные фамилии упорядочить по алфавиту.
24. Вариант
Дан список фамилий, имен и отчеств с указанием возраста вывести на экран дисплея данные тех, чей возраст лежит в заданном интервале. Данные хранить в виде записей. Результат работы программы записать в файл REZ.DAT.
1. Данные хранить в виде записи с полями – фамилия, имя, отчество возраст.
2. Данные хранить в виде записи с полем – абонент, которое является записью с полями: фамилия, имя, отчество возраст. Найденные фамилии упорядочить по алфавиту.
25. Вариант
В задаче варианта 24, вывести список 5 самых старых людей.
Вариант0
1.Подсчитать количество слов заданной длины в тексте и вывести эти слова на печать. Абзац текста ввести в файл TEXT.LIT. Результаты работы программы записать в файл REZULT.TXT.
{Лабораторная работа №5 задача1}
Program Lab_Rab_5_1;
Uses Crt;
const
Name_file : string = 'C:\text.lit';
{множество символов - разделителей слов}
Razd : set of char = [' ', '.', '?', '!', '-', ':', ','];
var
Len, K : integer;
Ch : char;
Sl : string;
f,f1 : text;
Poisk : boolean;
Begin
ClrScr;
Assign(f,Name_File);
Assign(f1,'C:\Result.txt');
Rewrite(f1);
{$I-}
Reset(f);
Reset(f);
{$I+}
If IOResult <> 0 then writeln ('Нет файла с именем ', Name_File)
else
begin
Writeln('Исходный текст');
While Not Eof(f) do
begin
Readln(f,Sl);
Writeln(sl);
end;
Close(f);
Reset(f);
Writeln;
Write('Введите длину искомых слов :');
ReadLn(Len);
Sl := ''; Poisk := false;
While Not Eof(f) do
begin
Read(f,Ch);
If not (Ch in Razd) then Sl := Sl + Ch
else
begin
If length(Sl) = Len then
begin
Poisk := true;
Writeln(f1,Sl)
end;
Sl := '';
end;
end;
Close(f); Close(f1);
If Poisk then
begin
Reset(f1);
Writeln('Найденные слова');
While Not Eof(f1) do
begin
Readln(f1,Sl);
Writeln(sl);
end;
Close(f1);
end
else Writeln('В тексте нет слов длины ',Len);
end;
ReadKey;
End.
2.Больница ведет учет пациентов. Для каждого пациента имеется информация: Ф.И.О., год рождения, диагноз, дата поступления (день: месяц: год), курс лечения. Данные хранить в виде записей в файле. Организовать поиск пациентов с заданной фамилией.
{Лабораторная работа №5 задача 2}
Program Lab_Rab_5_2;
Uses Crt;
Type Pacient = Record
FIO : string[30];
year : 1900..2005;
diag : string[20];
date : record
den : 1..31;
mes : 1..12;
god : 1900..2005;
end;
kurs : integer;
end;
var
Name_file : string;
Ch : char;
procedure Create( var Name_File : string);
var
f : file of Pacient;
A : Pacient;
i,n : integer;
begin
ClrScr;
Write('Введите имя файла :');
ReadLn(Name_File);
Assign(f,Name_File);
Rewrite(f);
Write('Введите количество записей :');
ReadLn(n);
if n>0 then
begin
For i :=1 to n do
begin
with A do
begin
Writeln('Введите данные ',i,'-го пациента');
write('Введите фамилию :');
Readln(FIO);
write('Введите год рождения :');
Readln(year);
write('Введите диагноз :');
Readln(diag);
writeln('Введите дату поступления :');
write('день:');
Readln(date.den);
write('месяц:');
Readln(date.mes);
write('год:');
Readln(date.god);
write('Введите курс лечения :');
Readln(kurs);
end;
write(f,A)
end; ;
Writeln('Создан файл из ',n,' записей');
end
else Writeln('Создан пустой файл');
Close(f);
ReadKey;
end;
procedure Open( var Name_File : string);
var
f : file of Pacient;
begin
ClrScr;
Write('Введите имя файла :');
ReadLn(Name_File);
Assign(f,Name_File);
{$I-}
Reset(f);
{$I+}
If IOResult <> 0 then
begin
writeln ('Нет файла с именем ', Name_File);
Name_File :='';
end
else
begin
writeln ('Файла с именем ', Name_File, ' открыт');
Close(f);
end;
ReadKey;
end;
procedure Add_Record( Name_File : string);
var
f : file of Pacient;
A : Pacient;
begin
ClrScr;
Assign(f,Name_File);
{$I-}
Reset(f);
{$I+}
If IOResult <> 0 then
writeln ('Нет файла с именем ', Name_File)
else
begin
Seek(f,FileSize(f));
with A do
begin
Writeln('Введите данные ',FileSize(f)+1,'-го пациента');
write('Введите фамилию :');
Readln(FIO);
write('Введите год рождения :');
Readln(year);
write('Введите диагноз :');
Readln(diag);
writeln('Введите дату поступления :');
write('день:');
Readln(date.den);
write('месяц:');
Readln(date.mes);
write('год:');
Readln(date.god);
write('Введите курс лечения :');
Readln(kurs);
end;
write(f,A);
Writeln('Запись добавлена');
Close(f);
end;
ReadKey;
end;
procedure View( Name_File : string);
var
f : file of Pacient;
A : Pacient;
begin
ClrScr;
Assign(f,Name_File);
{$I-}
Reset(f);
{$I+}
If IOResult <> 0 then writeln ('Нет файла с именем ', Name_File)
else
begin
Writeln('Содержимое файла : ', Name_File);
Writeln('Содержимое файла : ', Name_File);
Writeln('| Ф.И.О. |Год рожд.| Диагноз |Дата поступления | Курс лечения |');