Вопрос № 87639: помогите чуваки. в лабе нужно из одного файла считать числа, если число четное записать его в др. файл. вот моя попытка:...
Вопрос № 87.639
помогите чуваки. в лабе нужно из одного файла считать числа, если число четное записать его в др. файл. вот моя попытка:
Приложение:
Отправлен: 19.05.2007, 17:44
Вопрос задал: Beerb0x (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Verena
Здравствуйте, Beerb0x!
Если в условии об жтом не сказано особо, то файл никогда (по возможности) не переписывается в память, поскольку он может быть сколь уголно большим. Создавать здесь динамический массив нет нужды, просто читаем одно число, проверяем, если подходит, записываем в новый файл. И ещё eof - функция boolean типа, так что её используют не так. Код в приложении.
Приложение:
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 19.05.2007, 20:34
Отвечает: Djoin
Здравствуйте, Beerb0x!
В приложении полное решение вашей задачи!
Приложение:
--------- Мыши кололись, плакали, но продолжали жрать кактус
Ответ отправил: Djoin (статус: 3-ий класс)
Ответ отправлен: 19.05.2007, 20:39
Отвечает: Gh0stik
Здравствуйте, Beerb0x!
Раз Вам всетаки нужно использовать динамические переменные, то предложу Вам такой вариант. Из исходного файла считать все данные и записать их в динамический список, далее просматриваем все элементы списка и если они соответствуют условию записываем в файл.
Вот сам код программы: Program PrimPoint;
Type pR = ^sp;
sp = record
c:integer;
u:pR;
end;
Var i,k: integer;
tek,fst,v:pR;
fa, fb: file of integer;
Begin
assign (fa, 'c:1.txt');
{ rewrite(fa); for i:=1 to 10 do write(fa,i); close(fa);} {блок который при необходимости можно раскоментировать - создает типизированный файл}
reset(fa);
new(tek); {создаем новый список}
tek^.u:=nil; {формируем указатель на следующий элемент}
read(fa,tek^.c); {заполняем элемент первым элементом из файла}
fst:=tek; {запоминаем адрес первого элемента списка в отдельной переменной}
i:=0;
repeat {пока не конец файла заполняем список данными}
new(v);
v^.u:=nil;
read(fa,v^.c);
inc(i);
tek^.u:=v;
tek:=v;
until eof(fa);
assign(fb,'c:2.txt'); {начинаем работу со вторым файлом}
rewrite(fb);
tek:=fst;
for k:=0 to i do {проходим все элементы списка}
begin
if not odd(tek^.c) then write(fb,tek^.c); {если элемент соответствует условию то мы записываем его в файл}
tek:=tek^.u; {переходим на следующий элемент списка}
end;
reset(fb);
while not eof(fb) do {блок который выводит содержимое нового файла на экран}
begin read(fb,i);writeln(i);end;
dispose(fst);
dispose(v);
readln;
End.
Good Luck!!!
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 20.05.2007, 18:32