Jak znaleźć ile razy został znaleziony podany ciąg znaków w innym ciągu?
Ostatnio zmodyfikowano 2014-03-04 21:56
ppp47676 Temat założony przez niniejszego użytkownika |
Jak znaleźć ile razy został znaleziony podany ciąg znaków w innym ciągu? » 2014-03-01 11:26:25 #include <cstdlib> #include <iostream> #include <string> using namespace std;
int main( int argc, char * argv[] ) { int i, j, dl; int ile; bool ciag = false; string tab2[ 3 ]; cout << "Podaj dlugosc ciagu max 20: "; cin >> dl; cout << "\n"; if( dl <= 20 ) { string tab1[ dl ]; cout << "\n"; cout << "Wprowadz ciag: " << endl; for( i = 0; i < dl; i++ ) { cin >> tab1[ i ]; } cout << endl; cout << "Wprowadz ciag 3-znakowy do przeszukania: " << endl; for( j = 0; j < 3; j++ ) { cin >> tab2[ j ]; } system( "cls" ); cout << "Ciag znakow: "; for( i = 0; i < dl; i++ ) { cout << tab1[ i ]; } cout << endl; cout << "\n"; cout << "Ciag do przeszukania: "; for( j = 0; j < 3; j++ ) { cout << tab2[ j ]; } for( i = 0; i < dl; i++ ) { for( j = 0; j < 3; j++ ) { if( tab2[ j ] == tab1[ i ] ) { j++; i++; if( tab2[ j ] == tab1[ i ] ) { j++; i++; if( tab2[ j ] == tab1[ i ] ) { ciag = true; } else { ciag = false; } } } } } cout << endl; cout << "\n"; if( ciag == true ) { cout << "Znaleziono!" << endl; } else { cout << "Nie znaleziono" << endl; } } else { cout << "Mozesz urzyc max 20 znakow!" << endl; } cout << "\n"; system( "PAUSE" ); return EXIT_SUCCESS; }
|
|
DejaVu |
» 2014-03-04 16:39:30 |
|
akwes |
» 2014-03-04 21:56:49 Jeżeli to zadanie z algorytmów to zainteresuj się algorytmami: Knutha-Morrisa-Pratta, Karpa-Rabina oraz Boyer-Moora. Na wikipedii łatwo o pseudokod, który łatwo przepisać na dowolny język programowania. Aczkolwiek najwięcej zrozumienia da Ci implementacja tego jedynie po opisie algorytmu. |
|
« 1 » |