Napisz funkcje strfind, która szuka w tekście (pierwszy parametr) podanej frazy (drugi parametr). Wynikiem funkcji ma być indeks znaku, od którego podana fraza zaczyna się w tekście lub -1, jeżeli tekst nie zawiera szukanej frazy. Wielkość liter w podanych ciągach nie ma znaczenia. Przykład: Dla podanego fragmentu programu: char zdanie[] = "Jutro jest egzamin z programowania."; char fraza[] = "Program"; cout << "Szukam w \"" << zdanie << "\"" << endl; cout << "\t\"" << fraza << "\" : " << strfind(zdanie, fraza) << endl; cout << "\t\"jutro JEST\" : " << strfind(zdanie, "jutro JEST") << endl; cout << "\t\"WDI\" : " << strfind(zdanie, "WDI") << endl; cout << "Szukam w \"" << fraza << "\"" << endl; cout << "\t\"" << zdanie << "\" : " << strfind(fraza, zdanie) << endl; cout << "\t\"" << fraza << "\" : " << strfind(fraza, fraza) << endl; na ekranie powinno zostać wyświetlone: Szukam w "Jutro jest egzamin z programowania." "Program" : 21 "jutro JEST" : 0 "WDI" : -1 Szukam w "Program" "Jutro jest egzamin z programowania." : -1 "Program" : 0
#include <iostream> #include <cstring> #include <cctype>
using namespace std;
int strfind(char* tekst, char* fraza);
int main() { char zdanie[] = "Jutro jest egzamin z programowania."; char fraza[] = "Program"; char fraza2[] = "jutro JEST"; char fraza3[] = "WDI"; cout << "Szukam w \"" << zdanie << "\"" << endl; cout << "\t\"" << fraza << "\" : " << strfind(zdanie, fraza) << endl; cout << "\t\"jutro JEST\" : " << strfind(zdanie, fraza2 ) << endl; cout << "\t\"WDI\" : " << strfind(zdanie, fraza3 ) << endl; cout << "Szukam w \"" << fraza << "\"" << endl; cout << "\t\"" << zdanie << "\" : " << strfind(fraza, zdanie) << endl; cout << "\t\"" << fraza << "\" : " << strfind(fraza, fraza) << endl;
cin.get(); return 0; }
int strfind(char* tekst, char* fraza) { for(int i=0;i<strlen(tekst);i++) tekst[i]=tolower(tekst[i]); for(int i=0;i<strlen(fraza);i++) fraza[i]=tolower(fraza[i]); char* ciag = strstr(tekst,fraza); if(NULL==ciag) return -1; else return ciag-tekst; }
|