Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
SeRGuSii
Дан файл содержащий: номер рейса, пункт отправления, пункт прибытия, клас билета, цена, время в пути, тип самолета, название авиакомпании, найти кол-во и занести в файл название пункт отправления в зад город при цене билета от 2000-2500 тыс руб.
 
uses crt;
type fly=record
number:integer;
departure:char;
arrive:char;
class:integer;
price:integer;
time:real;
typeS:char;
airline:char;
end;
Var f: file of fly;
l: text;
t:fly;
s:char;
c:integer;
begin
clrscr;
assign(f,'reic');
rewrite(f);
assign(l,'air.txt');
rewrite(l);
repeat
write('y/n: ',' ');
readln (s);
if s='y' then
begin
write('номер'); readln(t.number);
write('отпр'); readln(t.departure);
write('прибытие'); readln(t.arrive);
write('класс '); readln(t.class);
write('цена '); readln(t.price);
write('время'); readln(t.time);
write('тип '); readln(t.types);
write('авиакомп'); readln(t.airline);
write(f,t);
end;
until s='n';
close(f);
reset(f);
seek(f,0);
while not(eof(f)) do
begin
read(f,t);
if (t.price>2000)and(t.price<2500) then
begin
inc©;
write(l,t.departure);
end;
end;
close(f);
close(l);
writeln ('кол-во: ',c);
end.

.
Что не так ? Говорит файл не открыт
volvo
Вот что "не так":
while not(eof(f)) do begin
read(f,t);
if (t.price>2000)and(t.price<2500) then begin
inc( C );
assign(l,'air.txt'); { <--- Очень интересно !!! }
rewrite(l);
write(l,t.departure);
end;
close(l);
end;

Вот я и говорю - очень интересно получается, ты открываешь файл только если условие в If выполняется, но закрываешь его безусловно... А если условие не выполнилось, и файл не был открыт? Ошибка, которую ты и получил smile.gif

Кстати, Assign совершенно не обязательно делать прямо перед открытием файла, можно "связать" файловую переменную с именем в начале программы, а открывать файл там, где это нужно...

P.S. А ты в курсе, что в текстовом файле останется только самая последняя запись? Все остальные будут удвлены при ReWrite... Может лучше оставить файл открытым и закрыть его только в конце программы, или использовать Append?
SeRGuSii
спасибо, действительно ступил с созданием текста, верху все исправил теперь работает как надо smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.