Типизированный файл - Pascal (81066)

Узнай цену своей работы

Формулировка задачи:

Товарищи столкнулся с такой задачкой и подвис( "Создать типизированный файл. Структура записи: пункт отправления, пункт назначения, время в пути (дробное число), время отправления (два поля записи: часы и минуты), количество остановок в пути. Прочитать данные из файла и вывести на экран информацию о маршрутах поездов, время в пути которых превышает сутки." Буду признателен)
Решил действовать по частям и оставить вывод данных на десерт. основа получиласть что-то вроде :
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.
но что-то мне подсказывает, что тут есть недочеты...онлайн интерпретатор на primat.org зависает((

Решение задачи: «Типизированный файл»

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.

Объяснение кода листинга программы

  1. Задание: Программа должна считывать данные о поездах из типизированного файла и выводить их на экран.
  2. Переменные:
    • zap: тип pzd (запись типа данных)
    • f: файл типа pzd
    • name: строка для имени файла
    • n, i, k: целые числа для номера поезда
    • otp, naz: строки для пункта отправления и пункта назначения соответственно
    • tm, th, o: целые числа для времени в пути, времени отправления часов и минут соответственно
    • vr: число с плавающей точкой для времени в пути
  3. Алгоритм:
    • Вывести запрос на ввод имени файла.
    • Открыть файл с именем, введенным пользователем.
    • Проверить, пуст ли файл. Если да, вывести сообщение Таких поездов нет.
    • В противном случае, считывать данные о поездах из файла и выводить их на экран.
    • Для каждого поезда:
      • Вывести пункт отправления, пункт назначения, время в пути и количество остановок.
      • Если время в пути больше 24 часов, добавить поезд в список поездов с большим временем в пути.
    • Вывести сообщение Список поездов, время в пути которых больше 24 часов.
    • Если в списке поездов с большим временем в пути есть хотя бы один поезд, вывести сообщение Таких поездов нет.
    • Закрыть файл.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.385 из 5
Похожие ответы