• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Pascal: Задача на функцию\процедуру и на файлы

  • Автор темы Автор темы DemonGDC
  • Дата начала Дата начала

DemonGDC

Ученик
Регистрация
3 Май 2010
Сообщения
2
Реакции
0
Баллы
0
Pascal: Задача на функцию\процедуру и на файлы

Очень нужна помощь в выполнении двух задач:
1) написать функцию\процедуру поиска количества вхождений слова в текстовом файле, файл заполнен вручную
2) Дан текстовый файл. Получить из него два типизированных (в первом должны быть все цифры из исходного, во втором - все остальное)
 
Очень нужна помощь в выполнении двух задач:
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
 
Назад
Сверху