ПОМОГИТЕ Сделать программу и блок схему ! На Паскале. Задание: Определить сколько раз в тексте встречается слово "Давши". Исходный текст: Не давши слово-крепись, А давши - Держись

ПОМОГИТЕ Сделать программу и блок схему ! На Паскале. Задание: Определить сколько раз в тексте встречается слово "Давши". Исходный текст: Не давши слово-крепись, А давши - Держись
Гость
Ответ(ы) на вопрос:
Гость
Поставленную задачу можно решать разными способами. Можно озаботиться красотой алгоритма, можно - эффективностью выполнения программы, можно еще много чем. В связи с тем, что в настоящее время компьютеры обладают большой вычислительной мощностью, а задача проста, выберем алгоритм, который имеет минимальную трудоемкость в написании и понятен внешне, хотя, быть может, в чем-то не совсем оптимален с точки зрения вычислительного процесса. Речь идет об использовании встроенной функции языка Паскаль - функции Pos. Конечно, использование функции PosEx, появившейся в Pascal.ABC, было бы эффективнее, но будем придерживаться классической версии. Функция Pos позволяет найти позицию первого от начала строки вхождения в эту строку подстроки. Если вхождения нет - функция возвращает ноль. Принимая оставшуюся после найденного вхождения часть строки за новую строку и повторяя поиск, можно найти все вхождения. Задание не говорит, как организован ввод текста. Дело в том, что в Паскале строка не может содержать переход к новой строке, а текст задан двумя строками. Можно организовать ввод двух строк, можно задать текст строковыми константами, можно организовать ввод из файла. Считая, что смысл задания в поиске вхождений, принимаем способ задания текста несущественным и задаем текст двумя строковыми константами. Это потребует выполнения алгоритма для каждой строки, следоватеьно, нам потребуется пользовательская функция, к которой мы будем обращаться. const   c1='Не давши слово-крепись,';   c2='А давши - Держись';   cc='давши'; { искомый контекст } function Kol(c,ci:string):integer;   {количество вхождений ci а c } var   p,k,l,li:integer; begin   k:=0;   li:=Length(ci);   l:=Length(c);   repeat     p:=Pos(ci,c);     if p>0 then     begin       l:=Length(c);       Inc(k);       if p+li=l);   Kol:=k end; begin   Writeln('Количество вхождений равно ',Kol(c1,cc)+Kol(c2,cc)) end. Вывод решения: Количество вхождений равно 2
Не нашли ответ?
Ответить на вопрос
Похожие вопросы