Программа ** языке C++Даны две строки типа string: substr; str.Символы в строках -...

0 голосов
56 просмотров

Программа на языке C++Даны две строки типа string: substr; str.Символы в строках - маленькие латинские буквы.Требуется определить количество вхождений строки substr в строку str.Количество вхождений вывести в переменной cnt.Примеры: qwe wqeeqeweqweewq//1eqe wqeeqeweqweewq//1w wqqewewqeewq//4d wqeeqe//0qweweqw qweweqwq//1


Информатика (3.5k баллов) | 56 просмотров
Дано ответов: 2
0 голосов

#include

#include

using namespace std;

int main()

{

int cnt = 0;

string substr, str;

cin >> substr >> str;

for (size_t i = 0; i < str.length()-substr.length()+1; i++)

{

 for (size_t j = 0; j < substr.length(); j++)

 {

 if (str[i+j] != substr[j])

 {

   break;

 }

 else

 {

   if (j == substr.length() - 1) ++cnt;

 }

 }

}

cout << cnt;</p>

return 0;

}

Все тесты которые ты написал, отработали.

(489 баллов)
0

Сейчас провел дополнительный тест. q qqq. Ответом является число два, при очевидном требуемом 3

0

for (size_t i = 0; i < str.length()-substr.length(); i++)В этой строчке добавьте +1for (size_t i = 0; i < str.length()-substr.length()+1; i++) вот так

0

И попробуй те у меня заработало с q qqq

0

Сейчас отлично, все работает. Только перед первым циклом for стоит добавить проверку if (str.length()>=substr.length()) т.к. данный алгоритм работает только при таком условии, иначе будет ошибка.

0

Этого мне не сказали учитывать, ну все равно потом в будущем буду спрашивать :)

0

Кстати, один последний вопрос. Зачем подключать директорию string, если она автоматически включена в iosream

0 голосов

#include

#include

using namespace std;

int main()

{

   string str,sub;

   int cnt=0;

   cout<<"substr: "; cin>>sub;  

   cout<<"str: "; cin>>str;

   int i=0,j=0;  

   while (i

     while ((str[i]!=sub[j]) && (i

     if (i

         while ((str[i]==sub[j]) && (i

              i++; j++;

         }

         if (j==sub.length()) cnt++;

         j=0;

     }

   }

   cout

   system("pause");      

   return 0;

}


(9.7k баллов)