Witam.
Mam następujący problem :
Otóż w programie głównym wywołuję kilka funkcji bool(które mają wyświetlić tekst użytkownikowi na podstawie słów kluczowych i zwrócić true lub false do main()), a następnie w programie głównym dałem if, który sprawdza czy wszystkie funkcję są różne od true, a następnie wyświetla inny tekst("nie mogę zrozumieć, powtórz"). I wszystko byłoby ok, gdyby nie to, że gdy funkcja znajdzie słowo kluczowe to wyświetla użytkownikowi odpowiedź 2 razy. Oto skrócony kod, bez pozostałych funkcji :
#include <iostream>
#include <string>
#include <algorithm>
#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <cstdlib>
using namespace std;
string tekst;
bool jakSieCzujesz(string napis);
void wypisz_pierwszy();
void nieRozumie();
int main()
{
cout<<"Program | Witaj, Jestem Robot. Powiedz, co sie stalo ?";
for(;;)
{
cout<<endl<<endl;
cout<<"Ty | ";
getline(cin,tekst);
transform(tekst.begin(),tekst.end(),tekst.begin(),::tolower);
jakSieCzujesz(tekst);
if(jakSieCzujesz(tekst)==false)
{
nieRozumie();
}
}
return 0;
}
bool jakSieCzujesz(string napis)
{
int licznik=0;
string slowo[4];
slowo[0]="dobrze";
slowo[1]="idealnie";
slowo[2]="super";
slowo[3]="pozytywnie";
while(licznik<=3)
{
size_t szukajPozycji=napis.find(slowo[licznik]);
if(szukajPozycji!=string::npos)
{
wypisz_pierwszy();
return true;
}
licznik++;
}
}
void wypisz_pierwszy()
{
int x;
cout<<endl;
srand(time(NULL));
x=rand()%3+1;
switch(x)
{
case 1:
{
Sleep(1500);
cout<<"Program | Bardzo sie ciesze :)";
}break;
case 2:
{
Sleep(1500);
cout<<"Program | To swietnie :)";
}break;
case 3:
{
Sleep(1500);
cout<<"Program | Ciesze sie :P";
}break;
}
}
void nieRozumie()
{
int x;
cout<<endl;
srand(time(NULL));
x=rand()%2+1;
switch(x)
{
case 1:
{
Sleep(1500);
cout<<"Program | Wybacz, nie rozumiem...";
}break;
case 2:
{
Sleep(1500);
cout<<"Program | Moglbys powtorzyc ? Nie zrozumialem.";
}break;
}
}
Kiedy program wyświetla funkcję "nieRozumie();" to wyświetla tekst tylko raz, a gdy wyświetla funkcję "wypisz_pierwszy();", która jest w funkcji "jakSieCzujesz()" to wyświetla tekst 2 razy. Proszę o odpowiedź dlaczego tak jest i jak to można zmienić oraz ewentualną refaktoryzację :)
Z góry bardzo dziękuję za odpowiedzi !