![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
SeRGuSii |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дан файл содержащий: номер рейса, пункт отправления, пункт прибытия, клас билета, цена, время в пути, тип самолета, название авиакомпании, найти кол-во и занести в файл название пункт отправления в зад город при цене билета от 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 |
volvo |
![]()
Сообщение
#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 выполняется, но закрываешь его безусловно... А если условие не выполнилось, и файл не был открыт? Ошибка, которую ты и получил ![]() Кстати, Assign совершенно не обязательно делать прямо перед открытием файла, можно "связать" файловую переменную с именем в начале программы, а открывать файл там, где это нужно... P.S. А ты в курсе, что в текстовом файле останется только самая последняя запись? Все остальные будут удвлены при ReWrite... Может лучше оставить файл открытым и закрыть его только в конце программы, или использовать Append? |
SeRGuSii |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Репутация: ![]() ![]() ![]() |
спасибо, действительно ступил с созданием текста, верху все исправил теперь работает как надо
![]() |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 13:45 |