TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

Программа подсчета числа вхождений текста B в текст A с перекрытиями.

Program N42;      

Объявление имени программы

Label 1, 2, 3;        

Блок объявления меток: задаем метки 1, 2 и 3

Var         

Блок объявления глобальных переменных

A, B        :               String;   

Переменная        A, B - заданные текст

C             :               String;   

Переменная        C - вспомогательная переменная, служит для хранения текста A

K             :               Integer; 

Переменная        K - длина текста B

p             :               Integer; 

Переменная        p - номер позиции вхождения текста B в текст A

N             :               Integer; 

Переменная        N - счетчик числа вхождений

 

 

Begin    

Начало тела программы

 

 

WriteLn

Формулировка цели алгоритма

('PASCAL: Подсчет числа вхождений текста B в текст A с перекрытиями.');       

Формулировка цели алгоритма

 

 

WriteLn ('Введите текст A:');          

Запрос ввода A - исходного текста

ReadLn (A);        

Ввод A

C := A;  

Сохраняем в C текст A, т.к. в дальнейшем он будет изменен

 

 

WriteLn ('Введите текст B:');           

Запрос ввода B - исходного текста

ReadLn (B);         

Ввод B

 

 

If Length (B) > Length (A) Then     

Сверяем длины текстов A и B, и если длина текста B больше длины текста A, то..

Begin    

Начало условного блока

WriteLn

Вывод сообщения пользователю о несоответствии длин текстов A и B

('Текст B длиннее текста A, поэтому он не может входить в текст A.');          

Вывод сообщения пользователю о несоответствии длин текстов A и B

Goto 2;  

Переход на метку 2, т.е. конец программы

End;      

Конец условного блока

 

 

N := 0;   

Начальное значение счетчика числа вхождений - 0

 

 

K := Length (B);  

Заносим в K длину текста B

1: p := Pos (B, A);               

Метка 1: Определяем позицию первого вхождения текста B в текст A и заносим в p

If (p = 0) And (N = 0) Then              

Если вхождений больше нет (p = 0) и не было до этого (N = 0), то...

Begin    

Начало условног блока

WriteLn ('Вхождений текста A в текст B нет.');          

Вывод сообщения об отсутствии вхождений текста B в текст A

Goto 2;  

Переход на метку 2

End;      

Конец условного блока

 

 

If (p = 0) Then Goto 3;       

Если вхождений больше нет, то переход на метку 3, т.е. выходим из цикла

Delete (A, 1, K - 1 + p);     

Удаляем из текста A символы, стоящие до вхождения и само вхождение тоже

 

 

N := N + 1;           

Увеличиваем счетчик числа вхождений на единицу

Goto 1;  

Переход на метку 1, т.е. ищем новое вхождение

 

 

3: WriteLn ('В текст "', C, '" текст "', B, '" входит ', N, ' раз(а).');

Метка 3: Вывод сообщения пользователю о числе нацденных вхождений

 

 

2: ReadLn;           

Метка 2: ожидание нажатия клавиши Enter для завершения

End.       

Конец программы.

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz