Szukanie wyrazu w tekście - problem
Ostatnio zmodyfikowano 2014-02-07 22:51
Shiroi Temat założony przez niniejszego użytkownika |
Szukanie wyrazu w tekście - problem » 2014-02-07 13:02:01 Nie wiem czemu program w ostatnim z czterach komunikatów zamiast "Nie znaleziono" wypisuje "Znaleziono" a nie powinien, ponieważ wyraz "C#" nie występuje w tekście. Ktoś miałby pomysł co zrobiłem źle ? Kod źródłowy: #include <iostream> #include <string> using namespace std; bool szukaj( string & tekst, string wyraz1, string wyraz2 ) { size_t znalezionaPozycja1 = tekst.find( wyraz1 ); size_t znalezionaPozycja2 = tekst.find( wyraz2 ); if( znalezionaPozycja1 && znalezionaPozycja2 != string::npos ) return true; else return false; }
void wypiszWynik( bool czyZnaleziono ) { if( czyZnaleziono == true ) cout << "Znaleziono" << endl; else cout << "Nie znaleziono" << endl; }
int main() { string napis = "Zadanie domowe z kursu C++ (http://cpp0x.pl) - najlepszy kurs C++ w Internecie!"; wypiszWynik( szukaj( napis, "ada", "kurs" ) ); wypiszWynik( szukaj( napis, "ada", "taki" ) ); wypiszWynik( szukaj( napis, "C++", "cpp0x" ) ); wypiszWynik( szukaj( napis, "C#", "cpp0x" ) ); system( "pause" ); return 0; } |
|
alixir |
» 2014-02-07 13:23:31 Używaj znaczników [cpp][/cpp] Dlatego, że źle sformuowałeś warunek ! Prawidłowy zapis: if(( znalezionaPozycja1 != string::npos ) &&( znalezionaPozycja2 != string::npos ) ) return true; else return false; A ogólnie można skrócić zapis funkcji jedynie do 2 linii if(( tekst.find( wyraz1 ) != string::npos ) &&( tekst.find( wyraz2 ) != string::npos ) ) return true;
return false; |
|
Shiroi Temat założony przez niniejszego użytkownika |
» 2014-02-07 22:51:31 dzięki za pomoc ;p |
|
« 1 » |