Praca domowa "Wyszukiwanie frazy w tekście.
Ostatnio zmodyfikowano 2014-02-12 19:39
selius22 Temat założony przez niniejszego użytkownika |
Praca domowa "Wyszukiwanie frazy w tekście. » 2014-02-12 19:14:27 Mam problem w pracą domową z tej lekcji: http://cpp0x.pl/kursy/Kurs-C++/Poziom-3/Wyszukiwanie-frazy-w-tekscie/352 Napisałem coś takiego, lecz działa źle: #include <iostream> #include <string>
using namespace std;
bool szukaj( string & tekst, string wyraz1, string wyraz2 ) { size_t pos = tekst.find( wyraz1 ); if( pos == string::npos ) { size_t pos = tekst.find( wyraz2 ); if( pos == string::npos ) return false; else return true; return false; } else return true; }
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" ) ); return 0; } |
|
Monika90 |
» 2014-02-12 19:28:28 Ale co nie działa? Wg mnie wygląda prawidłowo, choć można krócej bool szukaj( string & tekst, string wyraz1, string wyraz2 ) { return tekst.find( wyraz1 ) != string::npos || tekst.find( wyraz2 ) != string::npos; }
EDIT Aha, chodziło o to że obydwa wyrazy mają występować w tekscie, w takim razie: bool szukaj( string & tekst, string wyraz1, string wyraz2 ) { return tekst.find( wyraz1 ) != string::npos && tekst.find( wyraz2 ) != string::npos; }
|
|
selius22 Temat założony przez niniejszego użytkownika |
» 2014-02-12 19:30:42 Efekt to: Znaleziono Znaleziono Znaleziono Znaleziono
A powinno być: Znaleziono Nie znaleziono Znaleziono Nie znaleziono
Nadal nie mogę znaleźć błędu : ( |
|
selius22 Temat założony przez niniejszego użytkownika |
» 2014-02-12 19:33:59 Ok, działa. Wielkie dzięki. Jeśli mogłabyś wytłumaczyć, to byłoby miło. Nie rozumiem kiedy funkcja zwraca true a kiedy false, gdyż nie ma tam tego napisanego. Dało by radę prościej? Trochę to rozpisać?:) |
|
Monika90 |
» 2014-02-12 19:39:10 x && y jest równe true wtedy i tylko wtedy, gdy x jest równe true i y jest równe true.
|
|
« 1 » |