ПОМОГИТЕ Сделать программку и блок схему ! На Паскале. Задание: Найти
ПОМОГИТЕ Сделать программку и блок схему ! На Паскале.
Задание:
Определить сколько раз в тексте встречается слово "Давши".
Исходный текст:
Не давши слово-крепись,
А давши - Держись
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
Речь идет об использовании интегрированной функции языка Паскаль - функции 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
Алиса Немецкова
Спасибо огромное! За изъяснение-огромное!
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Игорь 14 лет назад был на 8 лет моложе, чем его
Математика.
Два тела массами m1 и m2 находящие на расстоянии R друг
Физика.
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
Облако тегов