LegendaryBeazt
Mitglied
Wir sollen eine Funktion schreiben, welche überprüft, ob ein Wort in einem String vorhanden ist. Wenn ja soll der Index (Beginn vom Wort im Satz) ausgegeben werden, wenn nein -1.
(zur vereinfachung muss nur der erste Buchstabe untersucht werden falls es mehhrere gleiche gibt)
Die Funktion nimmt s (den Satz) und Pattern (das gesuchte).
Meine Idee ist, mit der äußeren Schleife den Beginn des gesuchten zu finden (erste if-Abfrage).
In der inneren Schleife (läuft solange wie das gesuchte Wort lang ist) werden dann die restlichen Elemente des gesuchten und des Satzes verglichen.
Das Problem ist, dass ich immer -1 rausgegeben bekomme (z.B. beim Aufruf in der Main).
Vielleicht kann mir jemand helfen
(zur vereinfachung muss nur der erste Buchstabe untersucht werden falls es mehhrere gleiche gibt)
Code:
#include <iostream>
#include <string>
using namespace std;
int find(string s, string pattern)
{
for(int i=0;i<s.size();i++)
{
if(s[i] == pattern[0])
{
for(int j=i+1;j<(j+pattern.size());j++)
{
if(s[j] != pattern[i])
{
return -1;
}
} return i;
}
}
}
int main()
{
cout << find("petter", "er") << endl;
return 0;
}
Die Funktion nimmt s (den Satz) und Pattern (das gesuchte).
Meine Idee ist, mit der äußeren Schleife den Beginn des gesuchten zu finden (erste if-Abfrage).
In der inneren Schleife (läuft solange wie das gesuchte Wort lang ist) werden dann die restlichen Elemente des gesuchten und des Satzes verglichen.
Das Problem ist, dass ich immer -1 rausgegeben bekomme (z.B. beim Aufruf in der Main).
Vielleicht kann mir jemand helfen