М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
dariavasilevskayaa
dariavasilevskayaa
03.07.2022 22:08 •  Информатика

Объясните как это работает

int q;

void count(string s, string l)
{
int pos, k = 0;
while (s.find(l) ! = -1)
{
pos = s.find(l) + 1;
k++;
s = s.substr(pos);
}
q = k;
}

void solve()
{
task("str41");
string s, l;
pt > > s > > l;
count(s, l);
pt < < q;
}​

👇
Ответ:
NastyaVelikaya2000
NastyaVelikaya2000
03.07.2022

Объяснение:

Это весьма неэффективный алгоритм вычисления количества подстрок l в строке s. Работает так:

1) Функция find ищет первое вхождение строки l в строку s: индекс начала вхождения pos. Например, s = "xxxabdcabd", l = "abd". Сделаем так:

int pos = s.find(l);

Первым вхождением строки l в строку s является выделенная часть: "xxxabdcabd". В переменной pos будет храниться индекс буквы a, то есть 3.

Если вхождения нет, то в pos будет находиться -1.

2) Если вхождение есть, то увеличиваем счетчик подстрок. Теперь нам нужно искать подстроку l в строке s, начиная с позиции pos+1. Для этого в коде исходная строка обрезается с функции substr. Была "xxxabdcabd", стала "bdcabd".

Пример: s = s.substr(3+1);

Теперь в строке s удалены символы с индексами от 0 до 3 включительно.

Далее снова ищем первое вхождение строки l в уже новой строке s:

"bdcabd". Увеличиваем счетчик, снова обрезаем строку. Теперь s = "bd".

Снова попытаемся найти первое вхождение строки "abd" в уже строку "bd". Вхождения нет, s.find(l) == -1, завершаем цикл.

4,7(1 оценок)
Открыть все ответы
Ответ:
nosanchuk14
nosanchuk14
03.07.2022
1.                                                            

program raf105;

var  

 i,n,a: integer;

begin

 write('Введите число: ');

 readln(a);

 write('Введите количество повторений: ');

 readln(n);

 for i:=1 to n do

   writeln(a);

end.

2.                                                            

program raf105;

var  

 sum,i: integer;

begin

 for i:=10 to 99 do

   if i mod 2 = 0

     then sum:= sum+i;

 writeln('Сумма всех чётных двузначных чисел: ',sum);

end.

3.                                                            

program raf105;

var  

 x,y: real;

begin

x:= -2;

 while x <= 2 do

 begin

   y:= 2*x+3;

   writeln(x:4:1,' ',y:4:1);

   x:= x+0.2

 end;

end.

                                                              PascalABC 3.4.2
4,4(36 оценок)
Ответ:
a12efefsd
a12efefsd
03.07.2022

Объяснение:

Платные программы Бесплатные программы (freeware) Операционные системы (для компьютеров) Windows Самая ра операционная система. Легко установить. Понятный интерфейс. Большинство программ работают именно под этой системой. Стоимость: от 3 500 руб. ОС Windows - официальный сайт Есть возможность получить пробную версию системы MacOS Удобная система от Apple, но программы на неё тяжело искать, иногда невозможно. Тем, кто привык к Виндовс, придётся переучиваться. MacOS более безопасна. Стоимость: от 57 000 руб. (поставляется только с устройствами, купить отдельно невозможно).

4,5(57 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ