На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Cнова строки
    Нужно подсчитать сколько раз в строке символов встречается подслово "sadw"
      Для ANSI-строк:
      #include "iostream.h"

      int main(int argc, char* argv[])
      {
      // строка, которую надо найти
      char * substr = "sadw";
      char given[256] = {0};
      char * found;
      int i = 0;

      cout << "Enter a string:";
      cin >> given;

      found = given;

      while ( (found = strstr(found, substr)) != NULL )
      {
       i++;
       // если не учитывать что строка для поиска может
       // быть палиндромом, то можно увеличить указатель
       // на всю длину substr.
       found++;
      }
      cout << "\nSubstring " << substr << " was found " << i << " times.\n";
      return 0;
      }

        int substrcount( const std::string& str, const std::string& substr )
        {
         int counter = 0;
         std::string::const_iterator ss_it = substr.begin();
         for( std::string::const_iterator it = str.begin(); it != str.end(); ++it )
         {
          if( *ss_it == *it )
          {
           if( ++ss_it == substr.end() )
           {
            ++counter;
            ss_it = substr.begin();
           }
          }
          else
          {
           it -= ss_it - substr.begin();
           ss_it = substr.begin();
          }
         }
         return counter;
        }



        int main( int argc, char* argv[] )
        {

        int count = substrcount( "abcdabcabcdss", "abcd" );
        return 0;
        }
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0422 ]   [ 16 queries used ]   [ Generated: 4.05.24, 17:18 GMT ]