Показать сообщение отдельно
Старый 04.05.2010, 13:42   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от DemonGDC Посмотреть сообщение
Очень нужна помощь в выполнении двух задач:
1) написать функцию\процедуру поиска количества вхождений слова в текстовом файле, файл заполнен вручную
2) Дан текстовый файл. Получить из него два типизированных (в первом должны быть все цифры из исходного, во втором - все остальное)
Пожалуйста:
1.
Код:
VAR
 f:TEXT;
 i,j,n:INTEGER;
 Wrd:STRING;
 Ch:Char;
 b:boolean;
BEGIN
 Assign(f,'D:\x');
 ReSet(f);
 n:=0;
 WriteLn('Enter the word:');
 ReadLn(Wrd);
 j:=1;
 Repeat
  Read(f,Ch);
  If Ch=Wrd[j] then
   begin
    b:=true;
    i:=j;
    Repeat
     Inc(i);
     Read(f,Ch);
     If Ch<>Wrd[i] then b:=false;
    Until (i=Length(Wrd)) or (b=false);
    If (b=false) and (Ch=Wrd[1]) then j:=2 else j:=1;
    If b and (i=Length(Wrd)) then Inc(n);
   end;
 Until EoF(f);
 Close(f);
 WriteLn('n= ',n);
 ReadLn;
END.
Здесь исходный файл имеет наименование "х" и расположен в корневой папке диска D. Разумеется, имя и путь могут быть изменены. Программа отслеживает не только совпадение слова, как целого, но и ситуации, когда проверяемое слово является частью слова в файле. Это тоже считается вхождением. В условии, к сожалению, этот момент не прояснен.
2.
Код:
VAR
 f,f1,f2:TEXT;
 Ch:Char;
BEGIN
 Assign(f,'D:\x');
 ReSet(f);
 Assign(f1,'D:\x1');
 ReWrite(f1);
 Assign(f2,'D:\x2');
 ReWrite(f2);
 Repeat
  Read(f,Ch);
  If (Ord(Ch)>47) and (Ord(Ch)<58) then
   Write(f1,Ch,' ') else
   Write(f2,Ch);
 Until EoF(f);
 Close(f);
 Close(f1);
 Close(f2);
END.
Насчет имен и путей - то же, что и в предыдущей задаче. Файл f1 объявлен текстовым, однако в другой использующей его программе он может рассматриваться уже как типизированный. Можно, конечно, сразу через функцию Val его записать, как типизированный - если это необходимо, сделаю.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070