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

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

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

Автор: CormiX 11.03.2010 16:45

Здравствуйте! Прошу помогите написать програмку для решения даной задачи:
Файл f заполнить 300 случайными действительными числами. Найти последнюю компоненту файла f. Буду очень благодарен за помощь.
Немного сделал:

var
f: file of Real;
i: integer;
begin
Randomize;
Assign(f, 'file.bin');
Rewrite(f);
for i := 1 to 300 do
Write(f, Random(1000) * 0.01);
Close(f);
end.


Автор: Client 11.03.2010 17:40

сделай запись в файл через переменную. После цикла в ней и будет последнее значение

Автор: volvo 11.03.2010 17:46

var value: real;
{ ... }
reset(f);
seek(f, pred(filesize(f));
read(f, value);
тоже выдаст значение последней компоненты, у типизированных файлов доступ произвольный, и этим можно пользоваться...

Автор: CormiX 11.03.2010 20:36

Тоесть проще записать файл через тип?

Автор: CormiX 12.03.2010 17:12

Посмотрите позалуйста!!!
Не показывает последнюю компоненту...

program lr3;
uses crt;
const n=10000;
var
f: file of Real;
m,last:real;
i:integer;
begin
Randomize;
Assign(f,'C:\file.bin');
Rewrite(f);
for i := 1 to 300 do
m:=(random(n));
write(f,m);
Close(f);
reset(f);
seek(f, pred(filesize(f)));
read(f, last);
end.

Автор: Lapp 12.03.2010 17:38

Цитата(CormiX @ 12.03.2010 13:12) *
Не показывает последнюю компоненту...
Что значит - не показывает? Ты же ее не печатаешь. Сделай типа
WriteLn(Last);


И - мне кажется, close и reset перед seek - лишние.. А вот закрывать файл в самом конце было бы не лишне..

Автор: volvo 12.03.2010 17:52

Цитата
close и reset перед seek - лишние.
Желательно все-таки сделать Reset (можно без Close, его автоматически подставит компилятор), чтоб гарантированно сбросить в файл все, что хранится в буфере. Иначе при определенных условиях можно получить неверный ответ.

Автор: CormiX 12.03.2010 18:25

Большое спасибо очень помогли! yes2.gif