Типизированный файл - 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 часов
. - Если в списке поездов с большим временем в пути есть хотя бы один поезд, вывести сообщение
Таких поездов нет
. - Закрыть файл.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д