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

Szukanie wyrazu w tekście - problem

Ostatnio zmodyfikowano 2014-02-07 22:51
Autor Wiadomość
Shiroi
Temat założony przez niniejszego użytkownika
Szukanie wyrazu w tekście - problem
» 2014-02-07 13:02:01
Nie wiem czemu program w ostatnim z czterach komunikatów zamiast "Nie znaleziono" wypisuje "Znaleziono" a nie powinien, ponieważ wyraz "C#" nie występuje w tekście. Ktoś miałby pomysł co zrobiłem źle ?

Kod źródłowy:

C/C++
#include <iostream>
#include <string>
using namespace std;
bool szukaj( string & tekst, string wyraz1, string wyraz2 )
{
    size_t znalezionaPozycja1 = tekst.find( wyraz1 );
    size_t znalezionaPozycja2 = tekst.find( wyraz2 );
    if( znalezionaPozycja1 && znalezionaPozycja2 != string::npos ) return true;
    else 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" ) );
    system( "pause" );
    return 0;
}
P-104163
alixir
» 2014-02-07 13:23:31
Używaj znaczników
[cpp][/cpp]


Dlatego, że źle sformuowałeś warunek !
Prawidłowy zapis:
C/C++
if(( znalezionaPozycja1 != string::npos ) &&( znalezionaPozycja2 != string::npos ) ) return true;
else return false;

A ogólnie można skrócić zapis funkcji jedynie do 2 linii

C/C++
if(( tekst.find( wyraz1 ) != string::npos ) &&( tekst.find( wyraz2 ) != string::npos ) ) return true;

return false;
P-104165
Shiroi
Temat założony przez niniejszego użytkownika
» 2014-02-07 22:51:31
dzięki za pomoc ;p
P-104210
« 1 »
  Strona 1 z 1