как прочитать массив из файла

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: как прочитать массив из файла

Re: как прочитать массив из файла

Lesha » 19 май 2007, 13:38

В файле нельзя хранить двумерный массив, если это текстовой файл. как в клали туда элементы, так и доставайте. На пример у вас был массив 3 * 2 . Вы положили по элементам 1 -ю строку, потом 2 -ю и 3 -ю. Так же и доставайте. А сколько было элементов и какая размерность массива надо самому помнить или ставuть текстовые указатели в файле. Лучше вообще использовать типизированный файл:

type
TArr = array [1..10] of Integer;

var
a: array [1..5] of TArr;
f: file of TArr;
...
Rewrite (f);
...

for i := 1 to 10 do begin
a [1] := i; {любое число}
end;

Write (f, a [4]);
Close (f);

...

Reset (f)
Seek (f, 3); {перейти к 3 записи}
Read (a [2]);
Close (f);
end.

Можно прямо двумерные массивы записывать.
Lesha.

Re: как прочитать массив из файла

Need_Help » 18 май 2007, 12:20

У меня программа не на Delphi а на паскале :)

Re: как прочитать массив из файла

Naeel Maqsudov » 18 май 2007, 01:08

Код: Выделить всё

const
  _n=100;
  _m=10;
type
  TOneArray=record
    n:integer;
    a:array[1.._n] of integer;
  end;
  TAllArrays=array[1.._m] of TOneArray;
var
  f:text;
  arr: TAllArrays;
  i,j,k:integer;
begin
  assign(f,'c:\my.txt');
  reset(f);
  i:=0;
  while (not eof(f)) and (i<_m) do begin
    inc(i);
    with arr[i] do begin
      n:=0;
      while not eoln(f) and (n<_n) do begin
        inc(n);
        read(f,a[n]);
      end;
      readln(f);
    end;
  end;
  close(f);


  { PROVERKA }
  writeln (i, ' array(s) was(were) loaded');
  for j:=1 to i do with arr[j] do begin
    writeln ('array ',j);
    for k:=1 to n do write(a[k], ', ');
    writeln;
  end;

  write('Press Enter');readln;
end.
Вот это прочитывает из файла до _m массивов. В каждом массиве допускается до _n элементов.

Re: как прочитать массив из файла

Need_Help » 17 май 2007, 17:24

спасибо, а как быть , если массивов два?
хотелось бы понять, как можно прочесть два массива из файла.

с одним массивом всё понятно ., при помощи цикла считать поэлементно массив.

но как быть с двумя. непонятно как прочитать первый элемент второго массива
3 5 8 19
2 4 9 16 и чем отделять один массив от другого, т.е как обратиться к первому элементу второго массива.

Re: как прочитать массив из файла

Lesha » 17 май 2007, 12:24

В файле нет инструкции Reset (f)
Если не берет целый массив, можно по элементам через цикл for.

Re: как прочитать массив из файла

Игорь Акопян » 16 май 2007, 01:39

Хыиуду, +1
надо в цикле читать по-элементно, readln(f, s) прочитает из фала строку до CRLF

Re: как прочитать массив из файла

Хыиуду » 15 май 2007, 14:48

for i:=1 to n do read(f,s);

как прочитать массив из файла

Need_Help » 15 май 2007, 14:47

Есть TP 7.0.
Имеется файл my.txt, в котором есть массив чисел через пробел:
4 3 10
Не могу этот простейший массив из файла передать на экран ( С обычным текстом проблем нет, но когда в файле массив..?)
Так не получается:

Program OpenFile;

const N =3;
var f:text;
s: array [1..N] of integer;
begin
assign(f,h:\bp\bin\moi pro\my.txt');
read(f,s);
writeln(s);
close(f);
end.
Может кто-нибудь знает как правильно, то подскажите а то пишет ошибку
Cannot read or write.....

:rolleyes: Very Need Help Thank you very mutch

Вернуться к началу