ПОМОГИТЕ Сделать программку и блок схему ! На Паскале. Задание: Найти

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

Задать свой вопрос
1 ответ
Поставленную задачку можно решать разными методами. Можно озаботиться красой метода, можно - эффективностью исполненья программки, можно еще много чем. В связи с тем, что в истиннее время компы владеют великой вычислительной мощностью, а задача ординарна, выберем алгоритм, который имеет наименьшую трудоемкость в написании и понятен внешне, хотя, быть может, в чем-то не совершенно оптимален с точки зрения вычислительного процесса.
Речь идет об использовании интегрированной функции языка Паскаль - функции Pos. Окончательно, использование функции PosEx, показавшейся в Pascal.ABC, было бы эффективнее, но будем придерживаться классической версии.

Функция Pos дозволяет отыскать позицию первого от начала строчки вхождения в эту строчку подстроки. Если вхождения нет - функция возвращает ноль. Принимая оставшуюся после отысканного вхождения часть строчки за новейшую строчку и повторяя поиск, можно отыскать все вхождения.
Задание не разговаривает, как организован ввод текста. Дело в том, что в Паскале строчка не может содержать переход к новейшей строке, а текст задан 2-мя строками. Можно организовать ввод двух строк, можно задать текст строковыми константами, можно организовать ввод из файла. Считая, что смысл задания в поиске вхождений, принимаем метод задания текста несущественным и задаем текст 2-мя строковыми константами. Это потребует исполненья метода для каждой строчки, следоватеьно, нам потребуется пользовательская функция, к которой мы будем обращаться.

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 pgt;0 then
    begin
      l:=Length(c);
      Inc(k);
      if p+lilt;l then c:=Copy(c,p+li,l-(p+li-1))
    end
  until (p=0) or (p+ligt;=l);
  Kol:=k
end;

begin
  Writeln('Количество вхождений одинаково ',Kol(c1,cc)+Kol(c2,cc))
end.

Вывод решения:
Количество вхождений равно 2




Алиса Немецкова
Спасибо огромное! За изъяснение-огромное!
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт