Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на файлы
Форум «Всё о Паскале» > 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(c);
     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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.