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

Praca domowa "Wyszukiwanie frazy w tekście.

Ostatnio zmodyfikowano 2014-02-12 19:39
Autor Wiadomość
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:

C/C++
#include <iostream>
#include <string>

using namespace std;

bool szukaj( string & tekst, string wyraz1, string wyraz2 )
{
    //TODO: implementację tej funkcji należy napisać
    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;
}
P-104539
Monika90
» 2014-02-12 19:28:28
Ale co nie działa? Wg mnie wygląda prawidłowo, choć można krócej
C/C++
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:
C/C++
bool szukaj( string & tekst, string wyraz1, string wyraz2 )
{
    return tekst.find( wyraz1 ) != string::npos && tekst.find( wyraz2 ) != string::npos;
}
P-104544
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 : (
P-104546
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ć?:)
P-104548
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.
P-104549
« 1 »
  Strona 1 z 1