Есть 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.....
Very Need Help Thank you very mutch
как прочитать массив из файла
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
for i:=1 to n do read(f,s);
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
- Игорь Акопян
- Сообщения: 1419
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
Хыиуду, +1
надо в цикле читать по-элементно, readln(f, s) прочитает из фала строку до CRLF
надо в цикле читать по-элементно, readln(f, s) прочитает из фала строку до CRLF
В файле нет инструкции Reset (f)
Если не берет целый массив, можно по элементам через цикл for.
Если не берет целый массив, можно по элементам через цикл for.
спасибо, а как быть , если массивов два?
хотелось бы понять, как можно прочесть два массива из файла.
с одним массивом всё понятно ., при помощи цикла считать поэлементно массив.
но как быть с двумя. непонятно как прочитать первый элемент второго массива
3 5 8 19
2 4 9 16 и чем отделять один массив от другого, т.е как обратиться к первому элементу второго массива.
хотелось бы понять, как можно прочесть два массива из файла.
с одним массивом всё понятно ., при помощи цикла считать поэлементно массив.
но как быть с двумя. непонятно как прочитать первый элемент второго массива
3 5 8 19
2 4 9 16 и чем отделять один массив от другого, т.е как обратиться к первому элементу второго массива.
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Код: Выделить всё
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.
У меня программа не на Delphi а на паскале
В файле нельзя хранить двумерный массив, если это текстовой файл. как в клали туда элементы, так и доставайте. На пример у вас был массив 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.
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.