|
|
zadach419.PAS |
|
{* Задача 419 *}Unit ZADACH419;Interface Implementation Begin writeln('Данные о пассажирах включают фамилию пассажира номер места и общий вес . багажа Программа должна выполнять вывод данных о пассажире по указанной фамилии находить пассажиров имеющих багаж с минимальным и максимальным весом и выводить данные о них в табличной форме'); End. Program zadach419; Uses crt; {Подключаем модуль crt} Type {создаем новый тип переменной записи} RecPas = Record PasFio : String; NMes, VesBag : word; End; Var {* Объявление переменных *} PasArr : Array[byte] Of RecPas; Pmenu : byte; {выбор пункта меню} i : word; {счетчик} {Процедура для формирования шапки результирующих таблиц} {очищаем экран} {Процедура для завершения результирующих таблиц} {Задерживаем экран} {Процедура для вывода основной таблицы} Procedure WriteScr(Fio : String; Nmes : word); VesBag : word); Var {* Необходимые переменные *} StrNmes : String; StrVesBag : String; {переводим число в строку} {Выводим результат на экран} writeln('| ' : 19 - length(Fio), Nmes, ' | '; Fio : 19 - length(Fio), Nmes, ' | '; ' | ' : 19 - length(Fio), Nmes, ' | '; {процедура для ввода списка пассажиров в массив} Var {* В работе нам потребуются переменные: *} yn : char; {Запускаем цикл для ввода исходных данных} {очищаем экран} i := i + 1; {увеличиваем счетчик на 1} {Запрашиваем исходные данные} write('Введите ФИО пассажира : '); write('Введите номер места : '); write('Введите вес багажа : '); {Запрашиваем о добавлении записи} {Цикл заканчивается если введено n} {Процедура для поиска пассажира по фамилии} Var {* В работе нам потребуются переменные: *} Fio : String; t : byte; {Очищаем экран} {Ввод исходных данных} write('Введите фамилию пассажира : '); {Процедура для вывода на экран шапки результирующей таблицы} {Цикл для перебора всех записей в массиве на поиск совпадений} For t := 1 To i Do; {Если совпадение найдено то выводим запись в результирующую таблицу} {Процедура для вывода результирующей линии в таблице} {Процедура для поиска по багажу} Procedure SearhPasBag(par : String[3]); {Параметр par может принимать значения либо min либо max} Var {* Необходимые переменные *} t : byte; SearhEl : word; Begin If i > 0 Then Begin SearhEl := PasArr[1].VesBag; {В зависимости от параметра ищем максимальный/минимальный элемент} If par = 'max' Then Begin For t := 1 To i Do {Сравниваем по полю записи VesBag} If PasArr[t].VesBag > SearhEl Then SearhEl := PasArr[t].VesBag; End; Else Begin For t := 1 To i Do {* Увеличиваем t от 1 до i с шагом 1 *} If PasArr[t].VesBag0 Then {если счетчик 0} For t := 1 To i Do {Выводим все записи массива } with PasArr[t] Do Begin WriteScr(PasFio, Nmes, VesBag); {на экран} End; WriteScrEnd(); {завершаем таблицу} End; Begin i := 0; Repeat clrscr; {Основное меню} writeln('Выбирите действие: '); writeln; {* Пропускаем одну строку *} writeln('1. Ввод нового пассажира.'); writeln('2. Вывод списка пассажиров.'); writeln('3. Поиск пассажиров по фамилии'); writeln('4. Вывод списка пассажиров с максимальным весом багажа'); writeln('5. Вывод списка пассажиров с минимальным весом багажа'); writeln('0. Выход'); writeln; {выывод сообщения и ввод пункта меню} write('Выбирите пункт меню и нажмите ENTER: '); readln(Pmenu); {В зависимости от выбранного пункта меню запускаем соответсвующую процедуру} Case Pmenu Of 1 : InputPas(); 2 : SearhPasAll(); 3 : SearhPasFio(); 4 : SearhPasBag('max'); 5 : SearhPasBag('min'); End; Until Pmenu = 0; {цикл заканчивается если выбран 0} writeln; {задерживаем экран} writeln('Выполнение программы завершено! Для выхода нажминте любую клавишу...'); Repeat Until keypressed; {* Ждем нажатия клавиши *} End.. 07.08.2014 - Breakpoint - точка остановки 07.08.2014 - Топ-10 самых популярных приложений в Facebook 18.11.2013 - Панель управления и персонализация системы. Windows Vista 18.11.2013 - Логические и физические диски. Windows Vista 18.11.2013 - Удаление файлов и папок 01.11.2013 - Программирование дисковых подсистем: возможности 31.10.2013 - Windows8 или Windows7? 31.10.2013 - Windows8, игры |
|
Non-commercial fansite
|