profile
Размещено 5 лет назад по предмету Информатика от MarfaJon

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

  1. Ответ на вопрос
    Ответ на вопрос дан Аккаунт удален
    Поставленную задачу можно решать разными способами. Можно озаботиться красотой алгоритма, можно - эффективностью выполнения программы, можно еще много чем. В связи с тем, что в настоящее время компьютеры обладают большой вычислительной мощностью, а задача проста, выберем алгоритм, который имеет минимальную трудоемкость в написании и понятен внешне, хотя, быть может, в чем-то не совсем оптимален с точки зрения вычислительного процесса.
    Речь идет об использовании встроенной функции языка Паскаль - функции 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 then c:=Copy(c,p+li,l-(p+li-1))
        end
      until (p=0) or (p+li>=l);
      Kol:=k
    end;

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

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




    1. Ответ на вопрос
      Ответ на вопрос дан MarfaJon
      Спасибо большое! За объяснение-огромное!
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.