kirito1996 Temat założony przez niniejszego użytkownika |
wyszukiwanie frazy w tekście » 2017-05-14 10:38:40 witam mam taki problem link do zadania: http://cpp0x.pl/kursy/Kurs-C++/Poziom-3/Wyszukiwanie-frazy-w-tekscie/352 mój kod: #include <iostream> #include <string> using namespace std;
bool szukaj( string & tekst, string wyraz1, string wyraz2 ) { size_t znalezionaPozycja = tekst.find( wyraz1 ); size_t znalezionaPozycjaa = tekst.find( wyraz2 ); if( znalezionaPozycja && znalezionaPozycjaa == string::npos ) return false; else return true; }
void wypiszWynik( bool czyZnaleziono ) { if( czyZnaleziono ) 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; }
wszystko działą tylko jest problem z przed ostatnim pokazuje znaleziono |
|
karambaHZP |
» 2017-05-14 10:57:41 Dla drugiej znalezionej wartości sprawdzasz czy w ogóle coś znaleziono znalezionaPozycjaa == string::npos , a dla pierwszej nie znalezionaPozycja . Poza tym warto sprawdzać czy jedna z tych wartości jest std::string::npos . Wystarczy zmienić warunek instrukcji if w funkcji szukaj . Kolejna sprawa: nazwy identyfikatorów. Są do siebie łudząco podobne i łatwo o pomyłkę. |
|
kirito1996 Temat założony przez niniejszego użytkownika |
» 2017-05-14 11:30:30 ciężka sprawa kombinuje i nic xd dacie gotowy warunek ? |
|
karambaHZP |
» 2017-05-14 11:46:00 Operacje logiczneZadanie jest dla chętnych do rozwiązywania problemów. @kirito1996 co ci po gotowym kodzie? |
|
kirito1996 Temat założony przez niniejszego użytkownika |
» 2017-05-14 11:50:35 ja juz to kiedys zrobilem i chce przeanalizować i przypomniec xD będe kombinowa dalej próbuje i próbuje i nic #include <iostream> #include <string> using namespace std;
bool szukaj( string & tekst, string wyraz1, string wyraz2 ) { size_t znalezionaPozycja = tekst.find( wyraz1 ); size_t znalezionaPozycjaa = tekst.find( wyraz2 ); if( znalezionaPozycja == string::npos && znalezionaPozycjaa == string::npos ) { cout << "przeszlo" << endl; return false; } else return true; }
void wypiszWynik( bool czyZnaleziono ) { if( czyZnaleziono ) 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; }
nie czaje xD zróbcie mi ten warunek hehe |
|
karambaHZP |
» 2017-05-14 16:34:28 Nie rozumiesz operatorów logicznych. Używasz operatora, który zwraca true gdy oba wyrażenia są prawdziwe, a jak pisałem wyżej powinien być prawdziwy, gdy chociaż jedno z nich będzie prawdziwy. |
|
kirito1996 Temat założony przez niniejszego użytkownika |
» 2017-05-15 18:31:59 dobra jednak robiłem wszystko dobrze tylko literowka była i dlatego "nie działało" dostając gotowca szybciej bym do tego doszedł xD i rozumiem to i wiedziałem że chodzi o || tylko i tam probowalem wszystkiego i ostatni kod jest z tymi && |
|
karambaHZP |
» 2017-05-15 18:33:25 Ale nie w tym rzecz, aby gotowcem się ratować. Używaj debuggera i szukaj różnic w miejscach, w których spodziewasz się innych wyników. |
|
« 1 » 2 |