Очереди, поэтому конструктор будет другим, по сравнению со списком или
стеком.} Constructor init; procedure Input(f:stt); {Вставить элемент в очередь можно только в начало.} function Output:Tpel; {Удаляем элемент только с конца очереди.} Destructor done; end;
2.3.1. Создать данные для обработки сведений о жителях некоторой улицы. Определить список лиц, которые могут голосовать (>=18). Разработать объект-список с операциями по обработке списков жителей. Перечень операций: удалить из списка, вставить в список нового жителя, напечатать по запросу полный список жителей, сохранить список в файле, прочитать список из файла, создать список избирателей, сохранить в файле список избирателей, редактировать список дополнением сведений, исправлением их или удалением устаревших сведений. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.2. Разработать объект список с методами обработки сведений о жителях некоторого района. В списке указано: фамилия, имя, отчество, пол, дата рождения, адрес. Выделить в новый список адреса, по которым живут люди пенсионного возраста с учетом различий в определении пенсионного возраста для мужчин и женщин, по введенной дате опроса. Обеспечить обработку данных по созданным спискам: Ø Формирование общего списка жителей. Ø Создание подмножество списка пенсионеров. Ø Создание полного списка жителей и сохранение его в файле. Ø Вывод всех модификаций списков. Выполнение всех видов работ обеспечить через текстовое меню. 2.3.3. Разработать объект список с методами обработки сведений о жителях некоторого района. В списке указано: фамилия, имя, отчество, пол, дата рождения, адрес, место работы. Выделить в новый список адреса, по которым живут люди старше 20 лет, по введенной дате опроса. Обеспечить обработку данных по спискам:
Ø Формирование общего списка жителей и сохранение этого списка в файле. Ø Формирование списка работающих. Ø Удаление из списка жителя. Ø Запись в список нового жителя. Ø Сортировка списка по адресам. Ø Сохранение сформированного списка в файле. Ø Вывод всех типов списков на экран по соответствующему запросу пользователя. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.4. Разработать объект список для обработки сведений об абонентах телефонной сети. Обеспечить следующие виды работ со списком: Ø Формирование списка абонентов в формате: фамилия, адрес, номер телефона. Ø Сохранить созданный список в файле. Ø Вывод всех типов запрашиваемых списков на экран. Например, вывести абонентов на букву “Я” или “А” и т.д. Ø Упорядочить список по фамилиям абонентов. Ø Ввести в список нового абонента. Ø Изменить данные об абоненте. Ø Удалить абонента из списка. Все изменения данных должны сохраняться в файле. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.5. Имеется упорядоченный список рабочих одного цеха. Список этот введен и сохранен в некотором файле. Известно, что каждый из рабочих должен отработать 42 часа в неделю. Каждый день рабочему разрешается работать не более 10 часов. Обязательные часы присутствия на работе с 10 до 16 часов. Работа выполняется только в одну смену (с 8 утра до 8 вечера). Разработать объект список, обеспечивающий учет отработанного времени для каждого рабочего. Данные о каждом рабочем вводятся в следующей форме: фамилия И.О., день недели, время прихода, время ухода. Обеспечить обработку списка по следующим сведениям: Ø Ввод сведений о каждом рабочем. Ø Сортировка сведений по алфавиту. Ø Запись списка рабочих в файл. Ø Вывод результатов обработки для каждого рабочего и для всего списка.
Ø Исправление данных по каждому из рабочих. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.6. Создать объект список для описания структуры данных о библиотеке и методов обработки этих данных. В сведениях указываются: Номер раздела, количество записей в каждом разделе (если количество записей равно нулю, тогда раздел пуст).
В каждом разделе под шифром этого раздела содержатся сведения обо всех книгах раздела по формату: шифр, автор(фамилия, имя, отчество), наименование книги, год издания, место издания. Это также список. Обеспечить следующие методы по обработке данных о библиотеке: Ø 1. Ввод данных о библиотеке. Ø 2. Сохранение данных в файле. Ø 3. Поиск автора по вариантам запросов: а) по шифру; б) по фамилии автора. Ø 4. Вывод авторов каждого из разделов. Ø 5. Ввод нового автора в свой раздел. Ø 6. Удаление утерянной книги. Ø 7. Сохранение всех изменений в файле. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.7. Задан некоторый произвольный текст. Создать объект список для обработки слов, входящих в текст. Формат представления результатов обработки: слово, количество повторений слова в тексте, номер строки текста, в которой слово находится в тексте. Описать следующие методы обработки текста: Ø 1. Ввод текста и сохранение его в файле. Ø 2. Выбор слов из текста, создание списка отдельных слов текста. Ø 3. Упорядочивание списка слов по частоте появления в тексте. Ø 4. Внесение исправлений в текст и сохранение исправленного текста в файле. Ø 5. Запись словаря из найденных слов в файл(каждое из найденных слов в словаре встречается только один раз). Ø 6. Вывод списка слов и текста на экран. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.8. По каждой учебной группе составляется ведомость успеваемости из показателей: 2- успевающие по предмету в соответствии с графиком занятий; 1- имеющие текущие задолженности по предмету; 0 - неуспевающие по предмету. Полный формат сведений может быть таким: Фамилия студента, группа, пять предметов с показателями успеваемости данного студента по этим предметам. Разработать объект список из сведений об учебной группе, обеспечивающий методы обработки ведомости по показателям:
Ø список успевающих на 2; Ø список успевающих на 1,2; Ø список успевающих на 0,1,2; Ø список успевающих на 0. Обеспечить следующие виды работ со списком: Ø Ввод списка учащихся. Ø Исправление сведений. Ø Сортировка списка по показателям успеваемости. Ø Запись списка в файл. Ø Вывод результатов обработки ведомости успеваемости. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.9. Некоторая бригада из K рабочих работает по методу бригадного подряда. Известно: список всех работ, объем каждого вида работ, расценки за единицу объема работ. Создать объект список для обработки сведений о членах бригады с указанием объема выполненных работ. Определить коэффициент трудового участия каждого рабочего в бригаде и начисленную ему зарплату. Обеспечить следующие виды работ со списком: Ø Ввд списка бригады с показателями участия в работе. Ø Сохранение списка в файле. Ø Вывод пофамильного списка с указанием начисленной зарплаты. Ø Сортировка списка по коэффициенту участия в работе. Ø Запись отсортированного списка в файл. Ø Внесение исправлений в данные о работе каждого члена бригады. Ø Вывод пофамильного списка и списка с выполненными работами на экран. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.10. В библиотечном коллекторе имеется N наименований книг. Для каждой книги указаны цена одного экземпляра и количество экземпляров каждого наименования книги. Для библиотеки отпущено N рублей для покупки книг. Требуется купить K наименований книг таким образом, чтобы заявка была удовлетворена по количеству приобретаемых разных книг и наиболее полно была использована выделенная сумма. Разработать объект список для учета всех типов книг -- тех, которые находятся в коллекторе и тех, которые может купить библиотека. Для выполнения задачи обеспечить:
Ø Составление каталога книг коллектора. Ø Выбор книг на заданную сумму покупки. Ø Вывод списка выбранных книг. Ø Внесение исправлений в список купленных книг. Ø Запись в файлы списков книг коллектора и списка выбранных книг. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.11. Разработать объект список для учета учащихся по группам. Все сведения об учащихся представлены в следующем формате: Ø 1-ая строка индекс группы начальный номер в списке; Ø 2-ая строка фамилия имя отчество следующий номер Ø..................................................................................................... Ø n -ая строка фамилия имя отчество следующий номер Если вместо номера указаны 00, то этот элемент списка должен быть последним в списке. Обеспечить обработку списка указанного формата: Ø Напечатать список в исходном виде. Ø Напечатать список в правильной последовательности. Ø Упорядочить список по алфавиту(с сохранением исходных номеров элементов списка). Ø Сохранить список в файле. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.12. В репертуаре театра N спектаклей. В каждом из спектаклей занято K актеров. Вводится список актеров по каждому спектаклю. Разработать объект список для обработки сведений по занятости актеров в спектаклях за каждый календарный месяц. Обеспечить создание исходного списка актеров театра, создание списка занятых актеров в любом количестве названных спектаклей, редактирование компонент списка, вывод сведений по занятости: Ø По спектаклям (фамилия актера, количество) Ø По фамилиям (спектакль, количество) Выполнение всех видов работы обеспечить через текстовое меню. 2.3.13. При проведении конференции регистрируют всех участников. Составляется список по сведениям об участниках: фамилия, город, организация. Разработать объект список для обработки сведений об участниках конференции и обеспечить вывод сведений обо всех участниках, об участниках из одного города, об участниках из одной организации. Списки должны быть упорядочены по алфавиту. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.14. Составить список абонентов телефонной сети: фамилия, имя, отчество, адрес, номер телефона. Разработать объект список, обеспечивающий поиск абонента: по фамилии (учесть обработку однофамильцев), по номеру телефона. Методы объекта должны обеспечить следующие виды работ: Ø Ввод сведений в файл. Ø Создание списка всех абонентов. Ø Создание списков абонентов по заданной категории номеров телефонов (Диапазон номеров: 100- 199, 200- 299 и т.д.)
Ø Обеспечить сортировку любого типа списка абонентов по алфавиту. Выполнение всех видов работы обеспечить через текстовое меню. 2.3.15. Сведения об участниках соревнований по художественной гимнастике занести в некоторый файл. Формат сведений: фамилия, страна, баллы по 4 видам соревнований(из 10 баллов). Баллы формируются случайным образом. Файл сведений содержит не известное заранее количество компонент. Разработать объект список Выполнить группировку участников по следующим сведениям: а) По странам; б) по фамилиям; в) выбрать 3-х лучших участников. Сортировки по всем признакам обеспечить на основании представления списка в виде стека. На вершине стека всегда участник с фамилией или из страны с начальной буквы алфавита, или с наилучшим результатом. 2.3.16. Разработать объект список для обработки сведений о жителях города. Для каждого города в файл заносятся сведения о количестве жителей, из них число трудоспособного населения, число пенсионеров, число безработных. Создать список из сведений в виде очереди и обеспечить выдачу сведений по городам по следующим показателям: по числу жителей, по числу безработных, по числу пенсионеров. Обеспечить исправление любых сведений: удалить жителя любого города, дополнить сведения по любому городу, исправить сведения по любому жителю по его фамилии и адресу. 2.3.17. Разработать объект список авиапассажиров. Сведения о пассажире (фамилия и паспортные данные), № рейса, которым пассажир собирается лететь, количество зарезервированных мест, дата вылета. Список резервирования оформлен в виде очереди. Для каждого рейса имеется список всех возможных мест на этот рейс, который хранится в некотором линейном списке. На каждую дату необходимо обеспечить выдачу информации по количеству свободных мест и количеству зарезервированных мест по любому запрошенному рейсу. Обеспечить исправление данных о резервировании по каждому из рейсов. 2.3.18. В файл записать список читателей библиотеки в формате: фамилия, имя, отчество, название книги, дата выдачи книги и дата возврата. Разработать объект - список, в котором есть методы работы с читателями библиотеки: Создание общего списка читателей в виде стека, где на вершине находится читатель, у которого самая большая задолженность (по дате возврата книг), создание списка - стека задолжников, исправление данных уже созданного списка и ввод новых читателей, вывод всех списков на экран. При этом на экран должны выводиться списки только по фамилиям читателей, а по запросу - уже вся информация о читателе. 2.3.19. Создать кольцевой список из N игроков. Разработать объект, обеспечивающий реализацию игры в “считалочку”. Выбирается некоторое случайное число Rn. Если число оказывается больше числа игроков N, тогда для счета берется остаток от деления по модулю Rn на N. По найденному числу удаляется игрок, то есть соответствующий элемент кольцевого списка. Процесс выбора случайного числа и номера выбывшего игрока продолжается до тех пор, пока в списке не останется один игрок. Этот номер и будет выигравшим. Каждый запуск игры обеспечивает 10 различных игр. Получить список всех выигравших номеров. 2.3.20. В файле создать последовательность слов произвольной длины. Прочитать из файла последовательность слов в линейный список. Разработать объект для работы со списком слов. Методы должны выполнять выбор слов, стоящих на четных местах, т.е. 2-ого, 4-ого и т.д., затем, стоящих на нечетных местах, т.е. 1-ого, 3-ого и т.д., создание новых списков из выбранных слов, редактирование исходного списка, вывод на экран любого из списков, в том числе и вывод исходного списка. 2.3.21. В файл занести сведения об учащихся школы в следующем формате: фамилия учащегося, класс, средний балл успеваемости. Разработать объект для определения списков учащихся по классам. Методы объекта должны обеспечить: создание общего списка учащихся, редактирование списка, создание списков учащихся, имеющих одинаковые баллы успеваемости в разных классах школы, создание списков для любого из имеющихся в списке классов, списков только отличников из всех классов. Вывод списков на экран. 2.3.22. Задан некоторый произвольный текст. Создать объект список, позволяющий создать словарь из слов, введенных в каждом варианте текста. Слова, входящие в текст, фиксируются в следующем формате: слово, количество повторений слова в тексте, номер строки текста, где это слово встречается. Упорядочить список слов по частоте их появления в тексте. Обеспечить следующие виды работ над текстом: Ø Ввод текста. Ø Выбор слов из текста. Ø Упорядочивание слов по частоте появления. Ø Внесение исправлений в текст. Ø Запись словаря в файл(в словарь каждое из слов входит только один раз). Ø Вывод слов и текста на экран. Выполнение всех видов работы обеспечить через текстовое меню.
ПРИМЕР 2.3 Program Number_2_3; {текст основной программы} uses crt,prg9,prg9_1; Begin Run; End. unit prg9; {Этот модуль содержит основные действия с объектом} Interface {Вводится некоторая последовательность строк Составить список из предложений по строкам, причем между словами в предложениях не может быть более одного пробела, то-есть при решении придется удалить лишние пробелы между словами.} Type ss=string[80]; {Этот раздел в модуле с объектами} T_el = ^el; { или без них называется - интерфейс} el= record { Структура- запись } s: ss; { Предложение } next:T_el; {Ссылка на элемент списка } end; MY_list = object { Структура - объект с данными } First,Pcur:T_el; { Переменные, с которыми придется} f:text; { работать в объекте} Constructor Init; Destructor Done; {Методы объекта-список} Procedure Loadfile; Procedure Del_prob; Procedure Outtext; end; Implementation uses crt,prg9_1; var Pcur1:T_el; {Раздел описания методов объекта} Constructor MY_list.Init; Begin First:=nil; end; Destructor MY_list.Done; Begin Pcur:=First; While Pcur<>nil do Begin Pcur1:=Pcur; Pcur:=Pcur^.next; Dispose(Pcur1); end; end; Procedure MY_list.Loadfile; var fname:ss; P1cur:T_el; Begin fname:=Read_name_file(f); if fname<>' 'then Begin assign(f,fname); reset(f); MY_list.done; While not eof(f)do Begin if First =nil then Begin new(Pcur); {Здесь обычный список} readln(f,Pcur^.s); {из предложений } Pcur^.next:=nil; {создается} First:=Pcur; End else Begin new(P1cur); {Это любой следующий элемент списка} Pcur^.next:=P1cur; readln(f,P1cur^.s); P1cur^.next:=nil; Pcur:=P1cur; end; end; close(f); end; end; Procedure MY_list.del_prob; var s1:ss; p:byte; i:byte; Begin Pcur:=First; clrscr;textcolor(red); writeln('Удаление лишних пробелов'); while Pcur<>nil do Begin i:=1; s1:=' '; Repeat p:=pos(' ',Pcur^.s); {Находим позицию первого пробела в предложении} if (p<>0) and (p=i) then delete(Pcur^.s,p,i) else {Все подряд стоящие пробелы находим и сразу удаляем, так как они уже лишние} if (p<>0) and (p<>i) then Begin s1:=s1+copy(Pcur^.s,i,p); delete(Pcur^.s,i,p); {Часть предложения с одним пробелом копируем в буфер и удаляем, чтобы не считать уже сосчитанные пробелы} end; until p=0; s1:=s1+Pcur^.s; {А теперь нужно добавить ту часть предложения, в которой нет пробелов} Pcur^.s:=s1; Pcur:=Pcur^.next; end; end; Procedure MY_list.Outtext; var i:integer; Begin clrscr; i:=0; Pcur:=First; while Pcur<>nil do Begin writeln(Pcur^.s); inc(i); if i=24 then { Если количество предложений будет больше, чем число строк на обычном экране} Begin i:=0; write('Нажмите любую клавишу'); readkey; writeln; end; Pcur:=Pcur^.next; end; writeln('Вывод завершен'); readkey; end; End. unit prg9_1;{Этот модуль включает все вспомогательные действия типа создания файла данных, работа с меню и вывод самого меню на экран } Interface uses crt,prg9; procedure run; function read_name_file(var f:text):ss; Implementation procedure run; var Mylt:MY_list; ch:char; Begin Mylt.init; Repeat clrscr; textcolor(white); writeln(' Выберите действия?'); textcolor(yellow); write('1. Открыть файл с текстом',#10#13); write('2. Удалить лишние пробелы',#10#13); write('3. Вывести текст на экран',#10#13); write('4. Выход из программы',#10#13); ch:=readkey; Case ch of '1': Mylt.loadfile; '2': begin clrscr;gotoxy(1,20); writeln(' Удаление пробелов'); Mylt.Del_prob;readln; end; '3': begin gotoxy(1,3); Mylt.Outtext; end; '4': begin Mylt.done; exit; end; end; until false; end; function read_name_file(var f:text):ss; var s1:ss; ch:char; Begin write(' Введите имя файла '); readln(s1); assign(f,s1); read_name_file:=s1; rewrite(f); Repeat Writeln('Введите произвольное предложение'); readln(s1); writeln(f,s1); writeln('Есть еще предложения?'); readln(ch); until ch='n'; close(f); End; end.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|