Типизированный файл - Pascal (81066)
Формулировка задачи:
Товарищи столкнулся с такой задачкой и подвис(
"Создать типизированный файл. Структура записи: пункт отправления, пункт назначения, время в пути (дробное число), время отправления (два поля записи: часы и минуты), количество остановок в пути. Прочитать данные из файла и вывести на экран информацию о маршрутах поездов, время в пути которых превышает сутки."
Буду признателен)
но что-то мне подсказывает, что тут есть недочеты...онлайн интерпретатор на primat.org зависает((
Решил действовать по частям и оставить вывод данных на десерт. основа получиласть что-то вроде :
Program rasp; Type poezd = record pob,prb: string [20]; o,tm,th: integer; vpt:real; end; var zap : poezd; f: file of poezd; name: string; begin Writeln ('Задайте имя файла'); Readln (name); Assign (f, name); Rewrite (f); Writeln ('Введите пункт отправления'); Readln (zap.pob); While zap.pob <> ' ' do Writeln ('Введите пункт прибытия'); Readln (zap.prb); While zap.prb <> ' ' do Begin Writeln ('Введите время в пути'); Readln (zap.vpt); Writeln ('Введите время отправления через запятую [чч, мм]'); Readln (zap.th,zap.tm); Writeln ('Введите количество остановок'); Readln (zap.o); Write (f, zap); Writeln ('Введите след пункт отправления '); Readln (zap.pob); End; Close(f); Writeln ('Файл создан'); readln End.
Решение задачи: «Типизированный файл»
textual
Листинг программы
Program tipfile; Type pzd = record otp,naz: string [20]; tm,th,o: integer; vr:real; end; var zap : pzd; f: file of pzd; name: string; n,i,k:integer; begin Write ('Задайте имя файла'); Readln (name); Assign (f, name); Rewrite (f); repeat write('Количество поездов n='); readln(n); until n>0; for i:=1 to n do begin writeln('Поезд ',i); with zap do begin write ('Пункт отправления: ');readln(otp); write ('Пункт назначения: ');readln(naz); repeat write ('Время в пути: ');readln(vr); until vr>0; repeat write ('Время отправления часы: ');readln(th); until th in [0..23]; repeat write ('Время отправления минуты: ');readln(tm); until tm in [0..59]; repeat write ('Количество остановок в пути: ');readln(o); until o>0; write (f, zap); end; end; writeln('Полный список поездов'); writeln('-----------------------------------------------------------------'); writeln('|Пункт отпраления|Пункт назначения|Время в | Время |Количество|'); writeln('| | | пути |отпраленя|остановок |'); writeln('-----------------------------------------------------------------'); reset(f); while not eof(f) do begin read(f,zap); with zap do begin write('|',otp:16,'|',naz:16,'|',vr:6:2,' }'); if th<10 then write('0':4,th)else write(th:5); if tm<10 then write(':0',tm)else write(':',tm); writeln('|',o:7,' |'); end; end; writeln('-----------------------------------------------------------------'); writeln('Список поездов, время в пути которых больше 24 часов'); k:=0; writeln('-----------------------------------------------------------------'); writeln('|Пункт отпраления|Пункт назначения|Время в | Время |Количество|'); writeln('| | | пути |отпраленя|остановок |'); writeln('-----------------------------------------------------------------'); reset(f); while not eof(f) do begin read(f,zap); if zap.vr>24 then with zap do begin k:=1; write('|',otp:16,'|',naz:16,'|',vr:6:2,' }'); if th<10 then write('0':4,th)else write(th:5); if tm<10 then write(':0',tm)else write(':',tm); writeln('|',o:7,' |'); end; end; writeln('-----------------------------------------------------------------'); if k=0 then write('Таких поездов нет'); close(f); end.
Объяснение кода листинга программы
- Задание: Программа должна считывать данные о поездах из типизированного файла и выводить их на экран.
- Переменные:
- zap: тип pzd (запись типа данных)
- f: файл типа pzd
- name: строка для имени файла
- n, i, k: целые числа для номера поезда
- otp, naz: строки для пункта отправления и пункта назначения соответственно
- tm, th, o: целые числа для времени в пути, времени отправления часов и минут соответственно
- vr: число с плавающей точкой для времени в пути
- Алгоритм:
- Вывести запрос на ввод имени файла.
- Открыть файл с именем, введенным пользователем.
- Проверить, пуст ли файл. Если да, вывести сообщение
Таких поездов нет
. - В противном случае, считывать данные о поездах из файла и выводить их на экран.
- Для каждого поезда:
- Вывести пункт отправления, пункт назначения, время в пути и количество остановок.
- Если время в пути больше 24 часов, добавить поезд в список поездов с большим временем в пути.
- Вывести сообщение
Список поездов, время в пути которых больше 24 часов
. - Если в списке поездов с большим временем в пути есть хотя бы один поезд, вывести сообщение
Таких поездов нет
. - Закрыть файл.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д