Задание 1 Интерес представляют эффективные алгоритмы поиска вхождений подстроки в строку, то есть алгоритмы, быстро работающие для больших строк. Поэтому мы будем рассматривать в этой задаче случай, когда исходная строка представляет собой многократное повторение какой-то маленькой строки.
Например, рассмотрим строку «МАМА» и повторим её 3 раза. Получится строка «МАМАМАМАМАМА». В этой строке подстрока «АМА» встречается 5 раз: «МАМАМАМАМАМА», «МАМАМАМАМАМА», «МАМАMАМАМАМА», «МАМАМАМАМАМА», «МАМАМАМАМАМА».
ответьте на вопросы
Если строку «БАОБАБ» повторить 100 раз, то сколько раз в ней будет встречаться подстрока «БА»?
Если строку «РЕМАРКА» повторить 100 раз, то сколько раз в ней будет встречаться подстрока «АР»?
Если строку «АУАУОАУАУ» повторить 100 раз, то сколько раз в ней будет встречаться подстрока «АУАУ»?
Если строку «ОЙОЙ» повторить 100 раз, то сколько раз в ней будет встречаться подстрока «ЙОЙОЙ»?
Если строку «А» повторить 100 раз, то сколько в ней раз будет встречаться подстрока «A», повторённая 50 раз?
ответ на это задание запишите в виде пяти чисел, каждое число в отдельной строке — ответы на заданные вопросы именно в таком порядке. Если вы не можете найти ответ на какой-то из пяти вопросов, запишите в этой строке любое натуральное число.
решите очень надо
№3. program ex3;
var a,b:string;
k,n,i:integer;{ввод исходных данных}
begin
writeln('введите первое слово');
readln(a); {компьютер читает введенное число a}
writeln('введите второе слово');
readln(b); {компьютер читает введенное число b}
k:=0; {обнуляем переменные k и n, это будут счетчики в данной программе}
n:=0;
for i:=1 to length(a) do { проверяем символы от первого до конца строки}
k:=k+1; {если в строке находится символ, то переменная k увеличивается на 1}
for i:=1 to length(b) do {аналогично}
n:=n+1;
if k>n {проверяем, если количество символов в первой строке больше, чем количество символов во второй, то выводим a(первое слово), иначе b (второе слово)}
then
writeln(a)
else
writeln(b);
end.
№4program ex4;
var a,b:string;
i:integer;
begin
writeln('введите первое слово');
readln(a);
writeln('введите второе слово');
readln(b);
k:=0;
n:=0;
for i:= length(a) downto 1 do {просматриваю строку в обратном порядке и вывожу каждый символ на экран}
write(a[i]);
writeln;
for i:=length(b) downto 1 do {просматриваю строку в обратном порядке и вывожу каждый символ на экран}
write(b[i]);
end.
№5
program ex3;
var a:string;
k,n,i:integer;{ввод исходных данных}
begin
writeln('введите слово');
readln(a); {компьютер читает введенное число a}
k:=0; {обнуляем переменные k , это будут счетчики в данной программе}
for i:=1 to length(a) do { проверяем символы от первого до конца строки}
k:=k+1; {если в строке находится символ, то переменная k увеличивается на 1}
writeln(k);
end.
№6. Задача аналогичная №3, за исключением условия в конце.
program ex3;
var a,b:string;
k,n,i:integer;{ввод исходных данных}
begin
writeln('введите первое слово');
readln(a); {компьютер читает введенное число a}
writeln('введите второе слово');
readln(b); {компьютер читает введенное число b}
k:=0; {обнуляем переменные k и n, это будут счетчики в данной программе}
n:=0;
for i:=1 to length(a) do { проверяем символы от первого до конца строки}
k:=k+1; {если в строке находится символ, то переменная k увеличивается на 1}
for i:=1 to length(b) do {аналогично}
n:=n+1;
if k<n {проверяем, если количество символов в первой строке меньше, чем количество символов во второй, то выводим a(первое слово), иначе b (второе слово)}
then
writeln(a)
else
writeln(b);
end.