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

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

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

Товарищи столкнулся с такой задачкой и подвис( "Создать типизированный файл. Структура записи: пункт отправления, пункт назначения, время в пути (дробное число), время отправления (два поля записи: часы и минуты), количество остановок в пути. Прочитать данные из файла и вывести на экран информацию о маршрутах поездов, время в пути которых превышает сутки." Буду признателен)
Решил действовать по частям и оставить вывод данных на десерт. основа получиласть что-то вроде :
Листинг программы
  1. Program rasp;
  2. Type poezd = record
  3. pob,prb: string [20];
  4. o,tm,th: integer;
  5. vpt:real;
  6. end;
  7. var zap : poezd;
  8. f: file of poezd;
  9. name: string;
  10. begin
  11. Writeln ('Задайте имя файла');
  12. Readln (name);
  13. Assign (f, name);
  14. Rewrite (f);
  15. Writeln ('Введите пункт отправления');
  16. Readln (zap.pob);
  17. While zap.pob <> ' ' do
  18. Writeln ('Введите пункт прибытия');
  19. Readln (zap.prb);
  20. While zap.prb <> ' ' do
  21. Begin
  22. Writeln ('Введите время в пути');
  23. Readln (zap.vpt);
  24. Writeln ('Введите время отправления через запятую [чч, мм]');
  25. Readln (zap.th,zap.tm);
  26. Writeln ('Введите количество остановок');
  27. Readln (zap.o);
  28. Write (f, zap);
  29. Writeln ('Введите след пункт отправления ');
  30. Readln (zap.pob);
  31. End;
  32. Close(f);
  33. Writeln ('Файл создан');
  34. readln
  35. End.
но что-то мне подсказывает, что тут есть недочеты...онлайн интерпретатор на primat.org зависает((

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

textual
Листинг программы
  1. Program tipfile;
  2. Type pzd = record
  3.       otp,naz: string [20];
  4.       tm,th,o: integer;
  5.       vr:real;
  6. end;
  7. var zap : pzd;
  8.     f: file of pzd;
  9.     name: string;
  10.     n,i,k:integer;
  11. begin
  12. Write ('Задайте имя файла');
  13. Readln (name);
  14. Assign (f, name);
  15. Rewrite (f);
  16. repeat
  17. write('Количество поездов n=');
  18. readln(n);
  19. until n>0;
  20. for i:=1 to n do
  21.  begin
  22.   writeln('Поезд ',i);
  23.   with zap do
  24.    begin
  25.     write ('Пункт отправления: ');readln(otp);
  26.     write ('Пункт назначения: ');readln(naz);
  27.     repeat
  28.     write ('Время в пути: ');readln(vr);
  29.     until vr>0;
  30.     repeat
  31.     write ('Время отправления часы: ');readln(th);
  32.     until th in [0..23];
  33.     repeat
  34.     write ('Время отправления минуты: ');readln(tm);
  35.     until tm in [0..59];
  36.     repeat
  37.     write ('Количество остановок в пути: ');readln(o);
  38.     until o>0;
  39.     write (f, zap);
  40.    end;
  41.  end;
  42. writeln('Полный список поездов');
  43. writeln('-----------------------------------------------------------------');
  44. writeln('|Пункт отпраления|Пункт назначения|Время в |  Время  |Количество|');
  45. writeln('|                |                |  пути  |отпраленя|остановок |');
  46. writeln('-----------------------------------------------------------------');
  47. reset(f);
  48. while not eof(f) do
  49.  begin
  50.   read(f,zap);
  51.   with zap do
  52.    begin
  53.     write('|',otp:16,'|',naz:16,'|',vr:6:2,'  }');
  54.     if th<10 then write('0':4,th)else write(th:5);
  55.     if tm<10 then write(':0',tm)else write(':',tm);
  56.     writeln('|',o:7,'    |');
  57.   end;
  58.  end;
  59. writeln('-----------------------------------------------------------------');
  60. writeln('Список поездов, время в пути которых больше 24 часов');
  61. k:=0;
  62. writeln('-----------------------------------------------------------------');
  63. writeln('|Пункт отпраления|Пункт назначения|Время в |  Время  |Количество|');
  64. writeln('|                |                |  пути  |отпраленя|остановок |');
  65. writeln('-----------------------------------------------------------------');
  66. reset(f);
  67. while not eof(f) do
  68.  begin
  69.   read(f,zap);
  70.   if zap.vr>24 then
  71.   with zap do
  72.    begin
  73.     k:=1;
  74.     write('|',otp:16,'|',naz:16,'|',vr:6:2,'  }');
  75.     if th<10 then write('0':4,th)else write(th:5);
  76.     if tm<10 then write(':0',tm)else write(':',tm);
  77.     writeln('|',o:7,'    |');
  78.   end;
  79.  end;
  80. writeln('-----------------------------------------------------------------');
  81. if k=0 then write('Таких поездов нет');
  82. close(f);
  83. end.

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

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

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


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

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

13   голосов , оценка 4.385 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы