Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2014, 20:20   #1
AndrewAlexandrov
Пользователь
 
Регистрация: 22.09.2013
Сообщений: 15
По умолчанию Работа с файлами(Pascal)

Здравсвуйте, у меня возникла небольшая проблема в работе с файлами. И вот я решил спросить у вас помощи или какой-либо совет.

Вот собственно задание:
Заполнить файл последовательного доступа f целыми числами, полученными с помощью генератора случайных чисел. Получить в файле g те компоненты файла f, которые являются четными.

А вот код к этому заданию:
Код:
program PR8_Alexandrov;
var f,g:text;
    c:integer;
    n,i:integer;
begin
cls;
randomize;
assign(f,'f.txt');
rewrite(f);
assign(g,'g.txt');
rewrite(g);
write('Количество чисел n=');
readln(n);
for i:=1 to n do
 begin
  c:=random(100);
  write(f,c,' ');
 end;
reset(f);
while not eof(f) do //eof Возращает True если достигнут конец файла
 begin
  read(f,c);
  if c mod 2=0 then write(g,c,' ');
 end;
close(f);
close(g);
write('Файлы записаны!');
readln
end.
А проблема заключается в том, что когда я запускаю программу, задаю кол-во чисел n, Pascal выдает такую ошибку: Program1.pas(19) : Ошибка времени выполнения: Процесс не может получить доступ к файлу "D:\Pascal\f.txt", так как этот файл используется другим процессом.

Хотя этот файл нигде не может быть использован. Помоги пожалуйста разобраться с этой небольшой по сути проблемой. Заранее благодарен
AndrewAlexandrov вне форума Ответить с цитированием
Старый 11.02.2014, 20:40   #2
OlegPrograming5
Пользователь
 
Регистрация: 12.01.2009
Сообщений: 42
По умолчанию

Конечно не может получить доступ, ведь вы открыли файл для записи (rewrite(f)), а после записи не закрыли его, но теперь снова открываете для чтения (reset(f)).
Добавьте перед reset(f) команду close(f) (закрытие файла).
OlegPrograming5 вне форума Ответить с цитированием
Старый 11.02.2014, 20:44   #3
Malriser
xor esp, esp
Форумчанин
 
Регистрация: 11.02.2014
Сообщений: 135
По умолчанию

У меня все работает.

При n = 6 в файле f.txt остается "79 7 86 64 15 52 " а в g.txt "86 64 52 0 " при этом файлы были пустые.


Видимо это у тебя на компьютере проблема.

Попробуй перезагрузи компьютер ( стандартный совет ).


Но! Я твой код тестировал в Borland Delphi 7 ( чуть чуть подредактировал под Delphi синтаксис ).


Учитывая, то что Delphi более оптимизирован осмелюсь предположить, что дело в том, что когда ты делаешь reset(f); ты еще не закрыл сам файл f;

Попробуй такой код

Код:
program PR8_Alexandrov;
var f,g:text;
    c:integer;
    n,i:integer;
begin
cls;
randomize;
assign(f,'f.txt');
rewrite(f);
assign(g,'g.txt');
rewrite(g);
write('Количество чисел n=');
readln(n);
for i:=1 to n do
 begin
  c:=random(100);
  write(f,c,' ');
 end;
close(f);
assign(f, 'f.txt');
reset(f);
while not eof(f) do //eof Возращает True если достигнут конец файла
 begin
  read(f,c);
  if c mod 2=0 then write(g,c,' ');
 end;
close(f);
close(g);
write('Файлы записаны!');
readln
end.



Вот блин! опоздал, тогда извините за дабл ответ. Я когда заходил в тему ответа еще не было
Malriser вне форума Ответить с цитированием
Старый 11.02.2014, 21:01   #4
AndrewAlexandrov
Пользователь
 
Регистрация: 22.09.2013
Сообщений: 15
По умолчанию

OlegPrograming5 и Malriser спасибо вам за помощь!
AndrewAlexandrov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа в Pascal с файлами ZveRtheGameS Помощь студентам 14 29.11.2013 20:40
работа с файлами (pascal) zenid Помощь студентам 1 26.12.2011 16:18
Работа с файлами (Pascal). MaxuM Помощь студентам 6 26.11.2011 21:01
работа с файлами (Pascal) makc101 Помощь студентам 5 26.12.2009 14:46