1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
#include <iostream>
using namespace std;
const unsigned short int MAX = 20;
int zeichenkette_suchen_rekursiv(
char*,
char*,
unsigned int, unsigned int, unsigned int);
int main() {
char *text = new char[MAX];
char *zkette = new char[MAX];
cout << "Enter text1: ";
cin.getline(text, MAX);
cout << "Enter text2: ";
cin.getline(zkette, MAX);
int rueckgabe = zeichenkette_suchen_rekursiv(text, zkette, 0,0,0);
if (rueckgabe == -1)
cout << "Die Zeichenkette '" << zkette << "' ist NICHT in dem Text '" << text << "' enthalten." << endl;
else {
cout << "Die Zeichenkette '" << zkette << "' ist in dem Text '" << zkette << "' enthalten." << endl;
cout << "Sie startet ab Zeichen " << rueckgabe << " (bei Zaehlung ab 0)." << endl;
}
system("pause");
return 0;
}
int zeichenkette_suchen_rekursiv(
char *text,
char *zkette,
unsigned int text_pos,
unsigned int text_such_pos,
unsigned int zkette_such_pos) {
if (text[text_pos] == zkette[zkette_such_pos]) {
text_such_pos++;
zkette_such_pos++;
}
else {
text_pos++;
text_such_pos = text_pos;
zkette_such_pos = 0;
}
if (text_such_pos == sizeof(text)) {
if (zkette_such_pos != sizeof(zkette)) {
return -1;
}
return text_pos;
}
else if (zkette_such_pos == sizeof(zkette)) {
return text_pos;
}
else
return zeichenkette_suchen_rekursiv(
text,
zkette,
text_pos,
text_such_pos,
zkette_such_pos);
}
|