N
Benutz in Zukunft CPP-Tags.
Ich hab einige Fehler mal auskommentiert:
kirchi123 schrieb:
#include <iostream>
using namespace std;
char kette[80];
char zeichen;
bool fkt(int kette, char zeichen) {
if (kette!=zeichen) return false; // du überprüfst hier ob das Zeichen gleich ist wie die ganze Kette.
// Das kann ja nicht true sein, zumal kette ein Array repräsentiert.
else return true;
kette++; // wird niemals ausgeführt, da bereits ein Wert zurückgegeben wurde.
} // Eine Funktion ist erst dann rekursiv, wenn sie sich selber aufruft (was deine aber nicht tut).
int main () {
cout << " Bitte geben Sie die Zeichenkette ein: ";
cin >> kette;
cout << " Bitte geben Sie das Zeichen ein: ";
cin >> zeichen;
if (!fkt(kette,zeichen))
cout << " Das Zeichen kommt in der Zeichenkette nicht vor";
else
cout << " Das Zeichen " << zeichen << " kommt in der Zeichenkette vor ";
return 0;
}
Ich würd dir allerdings nicht empfehlen, eine rekursive Funktion zu schreiben, nur um Schleifen zu vermeiden. Die Performance ist schlechter, es kann bei grossen Rekursionstiefen zu Stack-Überläufen kommen, zudem muss auch mehr Code geschrieben werden.
Ich hab trotzdem mal eine Möglichkeit aufgeschrieben (ich habs nicht getestet, hoffe es hat keine Fehler drin):
bool fkt(int kette[80], char zeichen, int index = 0)
{
if (kette[index] != zeichen)
{
index++;
if (index == 80)
return false;
fkt(kette, zeichen, index);
}
else
return true;
}