Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Rozdział 27 - Błąd przy wyszukiwaniu frazy w tekście

Ostatnio zmodyfikowano 2015-07-31 14:35
Autor Wiadomość
Bonobo
Temat założony przez niniejszego użytkownika
[C++] Rozdział 27 - Błąd przy wyszukiwaniu frazy w tekście
» 2015-07-31 03:15:15
Witam
W trakcie wykonywania pracy domowej z rozdziału 27 (Wyszukiwanie frazy w tekście,http://cpp0x.pl/kursy/Kurs-C++​/Poziom-3​/Wyszukiwanie-frazy-w-tekscie​/352), chciałem dodać coś od siebie. Stworzyłem nową zmienną która przechowywała tekst a następnie użytkownik sam podawał dwie frazy które program starał się odnaleźć we wcześniej podanym napisie. I wszystko byłoby fajnie, gdyby nie to że program działa z przykładami podanymi na stronie, działa również gdy podam po jednej literze lecz nie działa gdy przynajmniej jedna zmienna będzie posiadała więcej niż jeden znak.
Funkcja którą napisałem w ramach pracy domowej:
C/C++
bool szukaj( std::string & tekst, std::string wyraz1, std::string wyraz2 )
{
    size_t jeden_wyraz = tekst.find( wyraz1 );
    size_t drugi_wyraz = tekst.find( wyraz2 );
    if(( jeden_wyraz != string::npos ) &&( drugi_wyraz != string::npos ) )
         return true;
    else
         return false;
   
}
Oraz funkcja main:
C/C++
int main()
{
    string napis = "Zadanie domowe z kursu C++ (http://cpp0x.pl) - najlepszy kurs C++ w Internecie!";
    string napis2;
    string wyraz, wyraz2;
   
    cout << "Podaj napis \n";
    getline( cin, napis2 );
    cin.clear();
    cin.sync();
    cout << "Podaj 2 wyrazy \n";
    cin >> wyraz;
    cout << cin.good() << endl;
    cin.clear();
    cin.sync();
    cin >> wyraz2;
    cout << cin.good() << endl;
   
    wypiszWynik( szukaj( napis, wyraz, wyraz2 ) );
   
   
    wypiszWynik( szukaj( napis, "ada", "kurs" ) );
    wypiszWynik( szukaj( napis, "ada", "taki" ) );
    wypiszWynik( szukaj( napis, "C++", "cpp0x" ) );
    wypiszWynik( szukaj( napis, "C#", "cpp0x" ) );
   
    _getch();
    return 0;
}
Nie wiem w czym jest błąd, ponieważ dla gotowych wyrażeń wszystko działa, a dla zmiennych już nie.
Będę wdzięczny za pomoc, pozdrawiam :)
P-135513
carlosmay
» 2015-07-31 08:42:08
Wyczyść strumień przed getline.

Edit: dla świętego spokoju inicjalizuje zmienne od razu.
P-135517
pekfos
» 2015-07-31 13:27:11
dla świętego spokoju inicjalizuje zmienne od razu.
W jego kodzie jest jakaś niezainicjalizowana zmienna?
P-135527
Bonobo
Temat założony przez niniejszego użytkownika
» 2015-07-31 13:37:56
C/C++
cout << "Podaj napis \n";
getline( cin, napis2 );
cin.clear();
cin.sync();
cout << "Podaj 2 wyrazy \n";
cin >> wyraz;
cout << cin.good() << endl;
cin.clear();
cin.sync();
cin >> wyraz2;
cout << cin.good() << endl;
Tutaj :) Gdy użytkownik sam podaje napis i frazy które program ma sprawdzić. Wyczyściłem strumień przed getline, nic to nie dało niestety. Nie rozumiem dlaczego dla pojedynczych liter działa, tak jakby to był char a nie string. Flagi pokazują że wyrazy wczytuje pomyślnie. Może nie tej metody find użyłem?
P-135528
pekfos
» 2015-07-31 13:47:20
Wczytywanie to jedyne, co robisz ze zmienną napis2.
P-135529
Bonobo
Temat założony przez niniejszego użytkownika
» 2015-07-31 13:58:50
No tak, w sumie zły kawałek kodu wziąłem. Pryz tworzeniu zmiennych nie nadaje im początkowej wartości :) Ale odbiegliśmy od tematu, a program nadal nie spełnia moich oczekiwań :) Jakieś inne pomysły co do błędów?
P-135531
carlosmay
» 2015-07-31 14:18:54
Wczytujesz łańcuch do zmiennej napis2, ale nie przekazujesz jej nigdzie do funkcji.
P-135533
xKTN
» 2015-07-31 14:20:18
Pekfos napisał przecież. Chcesz szukać w zmiennej napis2 (podanej przez użytkownika), ale do funkcji przekazujesz z uporem maniaka zmienną napis (z zadania).

Edit: carlosmay masz lepszy refleks :)
P-135534
« 1 » 2
  Strona 1 z 2 Następna strona