Задание для индивидуальной работы Вариант 1. Описать массив записей и поместить в него сведения о нескольких книгах. Предусмотреть возможность выдачи наименования книги по фамилии автора. Вариант 2. Организовать массив записей содержащий информацию о фамилии, имени, отчестве и номере телефона пяти ваших товарищей. Поместить в массив сведения о районе проживания этих товарищей, определив его по первым 2-3 цифрам телефона. Вариант 3. Организовать массив записей, содержащий информацию о результатах сдачи последней сессии вашими товарищами. Определить и дополнить данные средним баллом. Вариант 4. Описать массив записей, содержащий анкетные данные (год, месяц и день рождения; пол; место рождения; национальность) нескольких человек. Ввести данные и результат отпечатать. Предусмотреть возможность выдачи данных по введенной фамилии. Вариант 5. Описать массив записей, который содержит информацию о нескольких деталях (наименование, масса, габаритные размеры: длина, ширина, высота; материал). Определить массу всех деталей. Вариант 6. Описать массив записей, содержащий информацию об итогах сдачи вами экзаменационных сессий в институте. Определить средний балл. Вариант 7. Организовать массив записей, содержащий информацию о месте жительства нескольких ваших товарищей. Предусмотреть возможность выдачи адреса по введенной фамилии. Вариант 8. Описать массив записей и поместить в него сведения о месте работы и занимаемой должности ваших родителей. Организовать выдачу данных об одном из родителей. Вариант 9. Описать массив записей и поместить в него следующие анкетные данные: фамилию, имя, отчество, пол, адрес (город, улица, номер дома, номер квартиры) нескольких жильцов. Предусмотреть возможность выдачи сведений о жильце по введенному адресу. Вариант 10. Описать массив записей, содержащий информацию о нескольких деталях: наименование, материал, габариты (длина, высота, ширина), масса. Определить среднюю массу детали. Вариант 11. Описать запись приведенной ниже таблицы, заполненной данными для нескольких человек. Номер цеха | Ф. И. О. | Сведения о рабочих | Профессия | Разряд | Стаж | | | | | | Предусмотреть возможность выдачи данных по введенной фамилии. Вариант 12. Имеется документ в виде справки для 10 человек. Описать его в виде записи по следующей форме: Сотрудник | Должность | Месячный оклад | Фамилия | Табельный номер | | | | | Предусмотреть возможность выдачи данных по введенной фамилии. Вариант 13. Сводка выполнения плана содержит сведения: наименование изделия, шифр, единица измерения, план выпуска, фактически выпущено, отклонение от плана (перевыполнение, недовыполнение). Описать и заполнить запись для пяти позиций сводки. Предусмотреть возможность выдачи данных по введенному наименованию изделия. Вариант 14. Описать и заполнить запись для сводки о выполнении плана выпуска продукции для нескольких наименований по следующей форме: № п/п | Наименование | Единица измерения | Шифр | План выпуска | Всего | по кварталам | I | II | III | IV | | | | | | | | | | Предусмотреть возможность выдачи данных по введенному наименованию изделия. Вариант 15. Описать и заполнить запись для описания следующего документа: Инвентарная ведомость | № п/п | Инвентарный номер | Дата | Приходный номер | Количество | Единица измерения | Число | Месяц | Год | | | | | | | | | Предусмотреть возможность выдачи данных по введенному инвентарному номеру изделия. Вариант 16. Ведомость сдачи экзамена содержит следующие графы: номер по порядку, фамилия студента, номер зачетной книжки, оценка (Неуд., Удовл., Хор., Отл.). Описать и заполнить запись для студентов группы. Подсчитать процент успеваемости. Вариант 17. Таблица содержит результаты спортивных соревнований: Ф. И. О., время на 100 м, время на 1 км, прыжок в высоту, прыжок в длину. Описать и заполнить запись для шести спортсменов. Определить лучшего спортсмена по каждому виду спорта. Вариант 18. Пусть имеется таблица футбольного чемпионата, содержащая результаты игр между n командами. Описать таблицу в виде массива записей и составить программу подсчета количества очков, набранных каждой командой. Вариант 19. Табель успеваемости группы студентов содержит следующие сведения: номер по порядку, фамилию, имя, отчество студента, оценки по каждому экзамену. Описать его в виде массива записей и составить программу определения количества отличников в группе. Вариант 20. Для задания 19 составить программу выдачи оценок студентов группы по любому экзамену сессии. Вариант 21. Для задания 19 составить программу выдачи фамилий студентов, имеющих задолженность хотя бы по одному предмету. Вариант 22. Для задания 19 составить программу определения «качества» успеваемости, т. е. процент студентов, сдавших все экзамены на 5 и 4. Вариант 23. Для задания 19 составить программу определения названия предмета, который был сдан лучше всего. Вариант 24. Описать массив записей, содержащий информацию о внешности людей, такую, как пол, рост, вес, цвет волос и глаз. Написать программу, выдающую фамилию человека с указанными приметами. Вариант 25. Для задания 24 написать программу, выдающую список людей с указанной приметой. Пример выполнения задания Пусть, например, имеются некоторые данные о заводах города, сведенные в следующий документ: Наиме-нование завода | Основные сведения | Примечание | Зани-маемая площадь | Объем выпускаемой продукции | Количество обслуживающего персонала | по плану | фактически | с высшим образованием | со средним образованием | АЗЛК | | 484,9 | 484,9 | | | | ВАЗ | | 348,5 | 348,7 | | | | ЗИЛ | | 384,3 | 399,4 | | | | ИЖ | | 667,3 | 701,3 | | | | ИТОГО | | | | | | | Необходимо описать массив записей, содержащий данную информацию, произвести расчет и заполнить итоговую строку, а результат отпечатать. Для решения данной задачи следует обеспечить ввод массива записей, эхо–печать введенных данных, накопления суммы по каждому полю записи для формирования итоговой строки таблицы и вывод полученного результата. Схема алгоритма в общем виде представлена на рис. 6.1. Рис. 6.1. Схема алгоритма обработки записей. Текст программы будет иметь следующий вид: {Цель: обработка массива записей } {Переменные:Nmax - максимальное число записей } {Summary-массив записей, plant-строка записи } {name-наименование завода, information-основные сведения } {area-площадь завода, production-объём продукции, plan- по плану } {fact-фактически, person-обслуживающий персонал } {superior-с высшим образованием, second-со средним образованием } {note-примечание } {n - вводимое число записей } {i - номер текущей записи } {k - параметр цикла, } {s1, s2, s3, s4, s5 -суммы колонок. } program Example; const Nmax=10; type plant= record name:string[5]; information: record area:integer; production: record plan:real; fact:real end; person:record superior:integer; second:integer end end; note:string[8] end; var Summary:array [1..Nmax] of plant; s1,s4,s5,i,k,n:integer; s2,s3:real; begin {Example} writeln ('введите количество заводов <=10'); readln(n); {ввод записей} for i:=1 to n do with Summary[i] do begin writeln('введите данные о',i,'-м заводе:'); write ('наименование'); readln (name); with information do begin write('занимаемая площадь'); read(area); with production do begin writeln ('производство продукции'); write('по плану'); read(plan); write('фактически'); read(fact); end; with person do begin writeln ('численность персонала'); write('с высшим образованием:'); read(superior); write('со средним образованием:'); readln(second) end end; write ('примечание:'); readln(note); end; {вывод заголовка таблиц} for k:=1 to 80 do write('_'); writeln; writeln('|','|':15,'основные сведения':33,'|':18,'|':13); write('|','|':15); for k:=1 to 50 do write('_'); write('|','|':13); writeln('|','Наименование |':15,'PL |':10, 'Объем продукции':18,'|':4,'Персонал':13,'|':6,'Примечание|':13); write('|','|':15,'|':10); for k:=1 to 40 do write('_'); write('|','|':13); writeln('|','|':15,'|':10,'по плану|':11,'факт.':7,'|':4, 'высшее |':9,'среднее|':10,'|':13); for k:=1 to 80 do write('_'); writeln; {вывод строк таблиц} for i:=1 to n do with Summary[i] do begin writeln('|',name,' ':12-Length(name),'|':2, information.area:8,'|':2, information.production.plan:8:1,'|':2, information.production.fact:9:1,'|':2, information.person.superior:7,'|':2, information.person.second:8,'|':2, note,' ':12-Length(note),'|'); for k:=1 to 80 do write('_'); writeln; end; {формирование и вывод итоговой строки} s1:=0; s2:=0; s3:=0; s4:=0; s5:=0; for i:=1 to n do with Summary[i].information do begin s1:=s1+area; s2:=s2+production.plan; s3:=s3+production.fact; s4:=s4+person.superior; s5:=s5+person.second; end; with Summary[n+1] do begin name:='Итого'; information.area:=s1; information.production.plan:=s2; information.production.fact:=s3; information.person.superior:=s4; information.person.second:=s5; writeln('|',name,' ':12-Length(name),'|':2,s1:8,'|':2, s2:8:1,'|':2,s3:9:1,'|':2,s4:7,'|':2,s5:8,'|':2,'|':13); end; for k:=1 to 80 do write('_'); writeln; end.{example} ТЕКСТОВЫЕ ФАЙЛЫ Подготовка к работе По указанной литературе и методическим указаниям к данной работе изучить порядок работы. Ответить на контрольные вопросы. 7.2. Контрольные вопросы 1. Что такое файл? Для каких целей используются файлы? 2. Каковы требования к именам файлов? 3. Назовите общие и отличительные черты текстовых, типизированных и нетипизированных файлов. 4. Зачем используется специальная файловая переменная? Как устанавливается соответствие файловой переменной файлу во внешней памяти? 5. Что общего у процедуры Reset и Rewrite и чем они отличаются? 6. Зачем применяется процедура Close? 7. Для каких целей используется специальная функция IOresult? Каковы условия её применения? Назначение директивы компилятора {$I+},{$I-}. 8. В чём заключается специфика текстовых файлов? Назначение процедуры Append. Отличительные особенности процедур Read и Write от Readln и Writeln. |