IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача на файлы
SeRGuSii
сообщение 31.05.2005 23:04
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Дан файл содержащий: номер рейса, пункт отправления, пункт прибытия, клас билета, цена, время в пути, тип самолета, название авиакомпании, найти кол-во и занести в файл название пункт отправления в зад город при цене билета от 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.

.
Что не так ? Говорит файл не открыт

Сообщение отредактировано: SeRGuSii - 1.06.2005 0:16
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
volvo
сообщение 31.05.2005 23:50
Сообщение #2


Гость






Вот что "не так":
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
сообщение 1.06.2005 0:18
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


спасибо, действительно ступил с созданием текста, верху все исправил теперь работает как надо smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 29.07.2025 7:43
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"