Нужно считать файл в динамический двумерный массив - Pascal

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

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

Нужно считать файл в двумерный динамический массив, вычислив количество строк в файле...

Решение задачи: «Нужно считать файл в динамический двумерный массив»

textual
Листинг программы
var
    f: Text;
    arr: Array Of Array Of Integer;
    i, j: Byte;
begin
    Assign(f, 'f.txt'); Reset(f);
    SetLength(arr, 0, 0);
    while (Not EoF(f)) do
    begin
        SetLength(arr, Length(arr) + 1);
        while (Not EoLn(f)) do
        begin
            SetLength(arr[Length(arr) - 1], Length(arr[Length(arr) - 1]) + 1);
            Read(f, arr[Length(arr) - 1, Length(arr[Length(arr) - 1]) - 1]);
            Write(arr[Length(arr) - 1, Length(arr[Length(arr) - 1]) - 1], ' ');
        end;
        ReadLn(f);
        WriteLn;
    end;
    Close(f);
    WriteLn; WriteLn('Lines count: ', Length(arr));
    for i := 0 to Length(arr) - 1 do
    begin
        for j := 0 to Length(arr[i]) - 1 do
            Write(arr[i, j], ' ');
        WriteLn;
    end;
end.

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

  1. Объявлены переменные:
    • f: Text;
    • arr: Array Of Array Of Integer;
    • i, j: Byte;
  2. Задается имя файла 'f.txt' и он открывается с помощью функции Assign(f, 'f.txt') и Reset(f).
  3. Создается двумерный массив arr с помощью функции SetLength(arr, 0, 0).
  4. В цикле while (Not EoF(f)) происходит чтение данных из файла до конца файла.
  5. Внутри цикла while (Not EoLn(f)) создается новый массив arr[Length(arr) - 1] с помощью функции SetLength(arr[Length(arr) - 1], Length(arr[Length(arr) - 1]) + 1).
  6. В цикле while (Not EoLn(f)) происходит чтение данных из файла построчно.
  7. В каждой итерации внутреннего цикла считывается число и записывается в массив arr[Length(arr) - 1, Length(arr[Length(arr) - 1]) - 1] с помощью функции Read(f, arr[Length(arr) - 1, Length(arr[Length(arr) - 1]) - 1]).
  8. После каждой итерации внутреннего цикла добавляется пробел с помощью функции WriteLn.
  9. После каждой строки добавляется символ новой строки с помощью функции ReadLn.
  10. После чтения всех данных добавляется символ новой строки с помощью функции WriteLn.
  11. Выводится количество строк в файле с помощью функции Length(arr).
  12. В цикле for i := 0 to Length(arr) - 1 происходит обход массива по строкам.
  13. Внутри цикла for j := 0 до Length(arr[i]) - 1 происходит обход массива по столбцам.
  14. В каждой итерации внутреннего цикла выводится значение элемента массива с помощью функции Write(arr[i, j], ' ').
  15. После каждой итерации внутреннего цикла добавляется пробел с помощью функции WriteLn.
  16. После каждой строки добавляется символ новой строки с помощью функции ReadLn.
  17. Закрывается файл с помощью функции Close(f).
  18. Выводится количество строк в файле с помощью функции Length(arr).
  19. Добавляется символ новой строки с помощью функции WriteLn.

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

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