Задание 4 Урок 20 Вопрос по чтению файла

Задание 9 Урок 20

Дан текстовый файл, в котором с в ASCII-стиле нарисованы цепочки из цифр, которые связаны по горизонтали и вертикали.
Все цепочки составляют одно дерево, которое устроено так:

  • всегда есть общий корень и это цифра
  • по горизонтали цепочка не разрывается пробелами, соединяется же с помощью последовательностей знака - (тире).
  • по вертикали цепочка не разрывается переносом строк, соединяется же с помощью вертикальных последовательностей символа | (вертикального разделителя).

Размер схемы не более чем 100 на 100 символов.

Примеры:

1------4--------------5-------6--------7
       |              |
       |              |-------5---------8
       |
       |-------6--------7--7-------9------8---1----5---3

Ответ: 10

Вопрос:

не могу разобраться с чтением файла, строка без горизонтальных тире не читается как новая, это у меня какой-то косяк с чтением файла или нужно алгоритмически как-то это обрабатывать?

вот мой код

Var
    f1:text;
    i: integer;
    filename, s: string;
begin
  filename := '/home/serg/Desktop/pascal/lesson_20_task_4/file/1.txt'; // путь к файлу
  assign(f1, filename);
  reset(f1);

  while not eof(f1) do
    begin
      readln(f1, s);

      for i:=1 to length(s) do
      begin
        write(s[i]);
      end;

    end;
  readln();
end.

вот файл:

1------4--------------5-------6--------7
       |              |
       |              |-------5---------8
       |
       |-------6--------7--7-------9------8---1----5---3

который читается и выводится вот так:

lazarus output

1------4--------------5-------6--------7       |              |       |              |-------5---------8       |       |-------6--------7--7-------9------8---1----5---3
vedro-compota's picture

тут есть подозрение, что перенос строки на деле вообще не попадает как символ, при чтении через

readln(f1, s);

Скорее всего в лазарусе в линуксе (как я понимаю это линукс) в этом окне строки переносятся просто из-за ширины, измените размер этого окна (перетянуть мышкой можно если зажать ее на левой границе напр., или вообще все окно лазаруса в размере изменить) и запустите код еще раз не меняя размеров окна
- остануться ли те же самые переносы?

Еще вариант - попробуйте создать файл с содержимым типа:

1
2
3
4
5

И распечатайте его тем же кодом, что получится?

Исходное сообщение не правим, ответы пишите в комментариях

_____________
матфак вгу и остальная классика =)

Да это линукс
получается вот что:
lazarus

как я понял не читается перенос сроки?

vedro-compota's picture

сначала предлагаю сделать то что выше, что получилось при распечатке файла

1
2
3
4
5

?

_____________
матфак вгу и остальная классика =)

распечатывает в строку
l