Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачи на файлы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-gooddron123-
Возникла небольшая проблема: нужно из 1 файла(с целыми числами) перенести все четные во 2, все нечетные - в 3.
Код есть:
Код

var
f,g,h:text;
s:string;
i,er:integer;
begin
assign(f,'c:\f.dat');
reset(f);
assign(g,'c:\g.dat');
rewrite(g);
assign(h,'c:\h.dat');
rewrite(h);
repeat
   read(f,s);
   val(s,i,er);
   if (i mod 2)=0 then writeln(g,i)
   else writeln(h,i);
until eof(f);
close(f);
close(g);
close(h);
end.

Проблема в том, что он не работает.
Я создал файл f.dat и написал в строке несколько чисел. Однако, после выполнения программы в g.dat присутствует только 0, а h.dat - пустой.
P.S. Правда непонятно, если их в одну строчку писать(числа), то как отличить 22 от двух двоек?Я пробовал писать числа на отдельных строках, так в итоге программа создает файлы h и g размером в 60 мегабайт. Почему?
P.S. С файлами только начал работать, так что не сердитесь, если ступил...smile.gif
P.S.S. 2 задача. Чуть не забыл smile.gif
Дано 2 текстовых фала f1 и f2. В f1 произвольный текст, слова в нем отделяютс пробелами и знаками препинания. В f2 не более 40 слов, они расположены парами. Первое слово - заменяемое, 2 слово - заменяющее. Если в f1 найдено заменяемое слово, то нужно его заменить заменяющим.
Помогите, кто чем сможет smile.gif.
Заранее спасибо.
volvo
Цитата(-gooddron123- @ 20.02.05 10:31)
Я пробовал писать числа на отдельных строках, так в итоге программа создает файлы h и g размером в 60 мегабайт. Почему?


Код
repeat
   readLN(f,s); (*** <--- Смотри сюда !!! ***)
   val(s,i,er);
   if (i mod 2)=0 then writeln(g,i)
   else writeln(h,i);
until eof(f);


Числа должны быть именно на отдельных строках...

Кстати, чтобы проверить, является ли число НЕчетным, можно воспользоваться встроенной функцией Паскаля: function Odd(X: Longint): Boolean;
Guest
Спасибо, все заработало :thanks:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.