Массивы записей пример составления программы
Скачать 217.77 Kb.
|
МАССИВЫ ЗАПИСЕЙ Пример составления программы Пусть, например, имеются некоторые данные о заводах города, сведенные в следующий документ: Наименование завода Основные сведения Примечание Занимаемая площадь Объем выпускаемой продукции Количество обслуживающего персонала по плану фактически с высшим образованием со средним образованием АЗЛК ВАЗ ЗИЛ ИЖ 800 396 203 544 484,9 348,5 384,3 667,3 484,9 348,7 399,4 701,3 282 130 448 396 204 669 125 157 ИТОГО Необходимо описать массив записей, содержащий данную информацию, произвести расчет и заполнить итоговую строку, а результат отпечатать. Для решения данной задачи следует обеспечить ввод массива записей, эхопечать введенных данных, накопления суммы по каждому полю записи для формирования итоговой строки таблицы и вывод полученного результата. Схема алгоритма в общем виде представлена на рис.1. Ниже приведен текст программы. {Цель: Обработка массива записей } {Переменные: } { Summary – массив записей; } { plant – строка записи; } { name – наименование завода; } { information – основные сведения } { area – площадь завода; } { production – объем продукции; } Рис. 1. Схема алгоритма обработки записей { plan – по плану; fact– фактически; } { person – обслуживающий персонал; } { superior – с высшим образованием; } { second – со средним образованием; } { note – примечание; } { Nmax – максимальное число записей } { n – вводимое число записей; } { i – номер текущей записи; } { k – параметр цикла; } { s1,s2,s3,s4,s5 – суммы колонок } {Программист: студент гр. 710 Голубев А.Т. } {Проверил: доцент Баринов В.В. } {Дата: 14.04.08 } 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; i, k, n:integer; s1, s2, s3:real; s4, s5:integer; Begin {Example} WriteLn(‘Введите количество заводов <= 10’); ReadLn(n); {Ввод записей} for i:=1 to n do Начало Ввод n i = 1 , n Ввод i - й записи Вывод таблицы Обнуление сумм i = 1 , n Накопление сумм Вывод итоговой строки Конец 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,‘Площадь |’: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:7:1,’|’:2, information.production.fact:7:1,’|’:2, information.person.superior:7,’|’:2, information.person.second:8,’|’:2, note,’ ‘:12-Length(note),’|’); for k=1 to 80 do Write(‘_’); WriteLn; {Формирование и вывод итоговой строки} 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:7:1,’|’:2,s3:7:1,’|’:2,s4:7,’|’:2,s5:8,’|’:2,’|’:13) end; for k=1 to 80 do Write(‘_’); WriteLn; End. {Example} Задания Вариант 1. Описать массив записей и поместить в него сведения о нескольких книгах. Предусмотреть возможность выдачи наименования книги по фамилии автора. Вариант 2. Организовать массив записей, содержащий информацию о фамилии, имени, отчестве и номере телефона пяти ваших товарищей. Поместить в массив сведения о районе проживания этих товарищей, определив его по первым двум-трем цифрам телефона. Вариант 3. Организовать массив записей, содержащий информацию о результатах сдачи последней сессии вашими товарищами. Определить и дополнить данные средним баллом. Вариант 4. Описать массив записей, содержащий анкетные данные (год, месяц и день рождения; пол; место рождения; национальность) нескольких человек. Ввести данные и результат отпечатать. Предусмотреть возможность выдачи данных по введенной фамилии. Вариант 5. Описать массив записей, который содержит информацию о нескольких деталях (наименование, масса, габаритные размеры: длина, ширина, высота; материал). Определить общую массу всех деталей. Вариант 6. Описать массив записей, содержащий информацию об итогах сдачи вами экзаменационных сессий в институте. Определить средний балл. Вариант 7. Организовать массив записей, содержащий информацию о месте жительства нескольких ваших товарищей. Предусмотреть возможность выдачи адреса по введенной фамилии. Вариант 8. Описать массив записей и поместить в него сведения о месте работы и занимаемой должности ваших родителей. Организовать выдачу данных об одном из родителей. Вариант 9. Описать массив записей и поместить в него следующие анкетные данные: фамилию, имя, отчество, пол, адрес (город, улица, номер дома, номер квартиры) нескольких жильцов. Предусмотреть возможность выдачи сведений о жильце по введенному адресу. Вариант 10. Описать массив записей, содержащий информацию о нескольких деталях: наименование, материал, габариты (длина, высота, ширина), масса. Определить наиболее габаритную деталь. Вариант 11. Описать запись приведенной ниже таблицы, заполненной данными для нескольких человек. Номер цеха Ф.И.О. Сведения о рабочих Профессия Разряд Стаж Предусмотреть возможность выдачи данных по введенной фамилии. Вариант 12. Имеется документ в виде справки для 10 человек. Описать его в виде записи по следующей форме: Сотрудник Должность Месячный оклад Фамилия Табельный номер Предусмотреть возможность выдачи данных по введенной фамилии. Вариант 13. Сводка выполнения плана содержит сведения: наименование изделия, шифр, единица измерения, план выпуска, фактически выпущено, отклонение от плана (перевыполнение, недовыполнение). Описать и заполнить запись для 5 позиций сводки. Предусмотреть возможность выдачи данных по введенному наименованию изделия. Вариант 14. Описать и заполнить запись для сводки о выполнении плана выпуска продукции для нескольких наименований по следующей форме: № п/п Наименование Единица измерения Шифр План выпуска всего по кварталам I II III IV Предусмотреть возможность выдачи данных по введенному наименованию изделия. Вариант 15. Описать и заполнить запись для описания следующего документа: Инвентарная ведомость № п/п Инвентарный номер Дата Приходный номер Количество Единица измерения число месяц год Предусмотреть возможность выдачи данных по введенному инвентарному номеру изделия. Вариант 16. Ведомость сдачи экзамена содержит следующие графы: номер по порядку, фамилия студента, номер зачетной книжки, оценка (неудов., удов., хор., отл.). Описать и заполнить запись для студентов группы. Подсчитать процент успеваемости. Вариант 17. Таблица содержит результаты спортивных соревнований: Ф.И.О., время на 100 м, время на 1 км, прыжок в высоту, прыжок в длину. Описать и заполнить запись для 6 спортсменов. Определить лучшего спортсмена по каждому виду спорта. Вариант 18. Пусть имеется таблица футбольного чемпионата, содержащая результаты игр между n командами. Описать таблицу в виде массива записей и составить программу подсчета количества очков, набранных каждой командой. Вариант 19. Табель успеваемости группы студентов содержит следующие сведения: номер по порядку, фамилию, имя, отчество студента, оценки по каждому экзамену. Описать его в виде массива записей и составить программу определения количества отличников в группе. Вариант 20. Для задания 19 составить программу выдачи оценок студентов группы по любому экзамену сессии. |