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