Помощь - Поиск - Пользователи - Календарь
Полная версия: загрузка из файла
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Sancho
вот значт задача такая..

в текстовом файле записаны цифры (их количество мы не знаем). Нам необходимо эти цифры занести в массив. Вроде все сделал, но пишет какие-то непонятные цифры
вот код
Код

procedure load(var a:array of integer);
var f:file of integer; n:string;h,s,i:integer;
begin
Writeln('vvedite adres faila');
readln(n);
assign(f,n);
i:=0;
reset(f);
while not eof(f) do begin
read(f,h);
i:=i+1;
a[i]:=h;
Writeln(h);
end;
close(f);
readln;
end;


если в файле цифры 34 5 3 45 3
то выводит он их в виде 13363 13600 13088 13344 и т.д.

я так понимаю. что это все из-за несоответствия параметров.. массвич интеджер, а читаем стринг

можно было бы изменить тип массива. но это не допустимо... надо что-то здесь мутить..


заранее спасибо большое
volvo
Sancho,
Цитата
в текстовом файле записаны цифры

и
var f:file of integer;
это несовместимо... File Of Integer - не текстовый, а типизированный...

Кроме этого, при передаче массива как Array of integer, нумерация начинается с 0, у тебя же нулевой элемент будет пропущен, так что
i := -1;


P.S. Лучше всего сделать загрузку вектора функцией, которая будет возвращать число прочитанных элементов...
Sancho
мм... спасибо за ответ, а можно на примере показать?
volvo
Можно...
function load_vector(f_name: string;
var a: array of integer): integer;
var
f: text; i, T: integer;

begin
assign(f, f_name); reset(f);
i := -1;

while not seekeof(f) do begin
read(f, T);
inc(i); a[i] := T;
end;
close(f);
load_vector := i + 1;
end;

var
arr: array[1 .. 20] of integer;

begin
writeln(load_vector('get_in.txt', arr), ' elements was read ...');
writeln('ok');
end.


Заметь, функция занимается только тем, что от нее требуется, а именно - чтением вектора из файла... Все дополнительные операции, например, ввод имени файла, желательно производить в другом месте...

P.S. Учти, что для корректной работы с текстовым файлом последней строкой в нем должна быть пустая строка...
Sancho
огромное спасибо..
пойду экспериментировать
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.