Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача: обработка файлов.

Автор: Psychologist 4.12.2007 0:47

Следуя 6 правилу форума, создаю новую тему.
http://forum.pascal.net.ru/index.php?showtopic=20389

Задание такое же, что и в предыдущей задаче. Только теперь действия выполняются не в массиве, а в файле.
Нужно вычислить:
1. Номер минимального по модулю элемента;
2. Сумму модулей элементов, расположенных после первого отрицательного элемента.

Вот, начал... Ток во-первых Паскаль выдаёт ошибку: "100: Disk read error.", указывая на строку "read (f, buf);", хотя диск и файл существуют. Во-вторых, не могу завершить задачу (вторую часть). Помогите, плз...

Program OAIP_L03;
Var
i, a, min, sum, buf : Longint;
f : file of Longint;

Begin
assign (f, 'D:\File_2.dat');
reset (f);

read (f, min);
min:=abs(min);
a:=1;

while not eof (f) do begin
read (f, buf);
if abs(buf) < min then begin
min:=abs(buf);
a:=filepos (f)-1;
end;
end;


writeln ('nomer min. el. - ', a);

close (f);


End.


Автор: klem4 4.12.2007 0:59

а ты файл-то заполнил ? Причем файл у тебя типизированный и заполнять его надо программно ...

Автор: Psychologist 4.12.2007 1:05

Конечно, заполнил:

Цитата
1 2 5 -9 0 -2 1 7 -9 6

Или там в столбик нужно???

Автор: klem4 4.12.2007 1:09

файл НЕ текстовый и, как я уже сказал, заполняется программно. То есть для его заполнения нужно написать отдельную программу (ну или сделать это в основной программе перед началом работы алгоритма)


Автор: Psychologist 4.12.2007 1:17

Цитата
заполняется программно

А это как? В смысле как должна выглядеть эта "отдельная программа"?

Автор: klem4 4.12.2007 1:20

...
rewrite(f);
randomize;
for i := 1 to n do write(f, Random(100));
close(f);
...


например ...

зы http://forum.pascal.net.ru/index.php?showtopic=3584

Автор: Psychologist 4.12.2007 1:48

И всё-таки непонятно, где должен быть код:

rewrite(f);
randomize;
for i := 1 to n do write(f, Random(100));
close(f);

По условию задачи, файл уже существует на диске.
Есть похожая задача (там нужно было подсчитать колличество элементов в диапазоне от a до b) - ни чего подобного там нет. Хотя там так же использовался типизированный файл *.arr.

Автор: klem4 4.12.2007 1:50

Ну так запихни этот код в отдельную программу, если так хочешь ... пусть она создаст файл. А потом работай с ним из своей программы.