Berux Temat założony przez niniejszego użytkownika |
» 2012-08-19 19:12:32 Ok. Na podstawie tego: wiek > 100 || wiek < 2; napisałem coś takiego: if( a > - 1 && b > - 1 ) , tylko że teraz cały czas wypisuje "nie znaleziono" - domyślam się, że to nie o ten warunek chodziło. Mam małą prośbę. Nie mogę się domyśleć o jaki warunek chodzi, więc czy mógłby mi ktoś napisać gotowca? A ja na jego podstawie znajdę swój błąd oraz przeanalizuję go sobie, , tak abym go więcej nie powtórzył. Wiem, że nie jesteście skłonni do dawania gotowców, więc proszę Was abyście zrobili wyjątek - będę Wam bardzo, bardzo wdzięczny. /edit: A tak w ogóle to napisałem sobie taki kod, aby sprawdzić pozycję wyrazu 1 i wyskakuje mi jakaś kosmiczna liczba. cout << a; |
|
DejaVu |
» 2012-08-19 21:20:49 Dopisz sobie std::cout przed tym warunkiem i wypisz jakie wartości mają a i b. |
|
Berux Temat założony przez niniejszego użytkownika |
» 2012-08-19 21:59:32 Właśnie to zrobiłem i wypisuje mi takie coś: 1, 17Nie znaleziono 1, 4294967295Nie znaleziono 23, 35Nie znaleziono 4294967295, 35Nie znaleziono
Dlaczego tak jest? |
|
DejaVu |
» 2012-08-19 22:04:17 W którym miejscu w kursie jest napisane, że -1 oznacza fakt nieznalezienia frazy? :) Druga sprawa: wklej obecny wygląd tej problematycznej funkcji - obecnie nikt nie jest w stanie Ci nic więcej powiedzieć. |
|
Berux Temat założony przez niniejszego użytkownika |
» 2012-08-19 22:08:13 Wiem,że w kursie tak nie jest napisane, ale dałem tak, bo było w kursie napisane, że numerowanie pozycji znaków zaczynane jest od zera. /edit: bool szukaj( string & tekst, string wyraz1, string wyraz2 ) { size_t a = - 1; size_t b = - 1; a = tekst.find( wyraz1 ); b = tekst.find( wyraz2 ); cout << a << ", " << b; if( a > - 1 && b > - 1 ) { return true; } return false; }
/edit2: Domyślam się, że te kosmiczne liczby są dlatego, że nadałem wartość zmiennym a i b, ale nie umiałem inaczej(to znaczy umiałem, ale coś mi to nie wychodziło). /edit3: Udało się. Napisałem to z użyciem string::npos. Oto kod: #include <iostream> #include <string>
using namespace std;
bool szukaj( string & tekst, string wyraz1, string wyraz2 ) { int l1 = 1; int l2 = 1; size_t a = tekst.find( wyraz1 ); size_t b = tekst.find( wyraz2 ); if( a == string::npos ) { l1--; } if( b == string::npos ) { l2--; } if( l1 == 1 && l2 == 1 ) { return true; } 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" ) ); return 0; }
Dzięki wszystkim za pomoc. |
|
DejaVu |
» 2012-08-19 23:13:24 Pozwoliłem sobie otworzyć - super, że Ci się udało :) a na koniec jeszcze dam Ci lepsze rozwiązanie:
if( a != std::string::npos && b != std::string::npos )
|
|
1 « 2 » |