c++ problemy z liczeniem ciagu znakow z tekstu
Ostatnio zmodyfikowano 2016-02-11 16:12
carlosmay |
» 2016-02-11 13:25:09 Pierwszy string to cały wyraz, a drugi string to podciąg. 1. Pierwszy znak podciągu porównujesz z kolejnymi znakami wyrazu zaczynając od pierwszego znaku. 2. Jeżeli trafisz porównujesz kolejne znaki obu stringów (w zagnieżdżonej pętli, gdy znaki są takie same aż do końca podciągu dodaj licznik). 3. Po zakończeniu wewnętrznej pętli przeszukuj wyraz dalej (od następnego znaku). |
|
darko202 |
» 2016-02-11 13:35:41 |
|
mateczek |
» 2016-02-11 16:12:58 sam użyłeś funkcji wyszukującej w przykładowym kodzie zawsze możesz sobie sam napisać funkcję wyszukującą jeśli masz zakaz co do funkcji bibliotecznych:) #include <iostream> #include<string> using namespace std;
size_t find( string b, string m, size_t poss ) { for( uint i = poss; i < b.size(); i++ ) { if(( i + m.size() - 1 ) > b.size() ) return string::npos; for( uint k = 0; k < m.size(); k++ ) { if( m[ k ] != b[ i + k ] ) break; if( k == m.size() - 1 ) return i; } } }
int main() { string napis { "ananana" }; string fragment { "ana" }; std::size_t found = 0; int licznik = 0; while( 1 ) { found = find( napis, fragment, found ); if( found == std::string::npos ) break; found++; licznik++; } cout << licznik << endl; }
|
|
1 « 2 » |