Zeichenkette suchen rekursiv (Rekursion, Stringoperationen) inkl. Unit Tests
-
Hallo,
ich habe folgende Aufgabe:
Programmieren Sie in einer Datei suchen_rekursiv.cpp plus zugehöriger
Headerdatei eine C++ Funktion
int zeichenkette_suchen_rekursiv(string text,
string zkette,
size_t text_pos = 0,
size_t text_such_pos = 0,
size_t zkette_such_pos = 0
);
welche durch Rekursion ermittelt, ob die Zeichenkette zkette in dem
einzeiligen Text text (ggf. mit Leerzeichen und/oder Satzzeichen) vorkommt.
Die Funktion darf keinerlei Schleifen benutzen.
text_pos bezeichne die Position innerhalb von text, ab der gerade
versucht wird, die Zeichenkette zkette zu finden.
Wenn an einer text_pos das linkeste Zeichen der gesuchten Zeichenkette
gefunden wird, so werden ab dieser Stelle mittels der Positionszähler
text_such_pos (aktuelle Vergleichsposition im einzeiligen Text) und
zkette_such_pos (aktuelle Vergleichsposition in der zu suchenden Zeichenkette)
auch alle weiteren Zeichen des Textes und der Such-Zeichenkette
rekursiv verglichen.
Sollte die Zeichenkette nicht in dem Text vorkommen, so soll der Wert -1
zurückgegeben werden.
Anderenfalls wir die Startposition zurückgegeben, ab der das erste
(linkeste) Vorkommen von zkette in text beginnt.
Die Zählung der Positionen im Text beginne bei 0.
Die Zeichenkette zkette darf nicht der leere String sein.
Ihre Funktion kann aber davon ausgehen, dass dies immer der Fall ist und muss dies
nicht prüfen.
Der Text text darf auch der leere String sein.
In einem leeren Text kann natürlich nichts gefunden werden.
Schreiben Sie ferner ein C++ Hauptprogramm, welches die Eingaben
entgegennimmt, die Funktion aufruft und das Ergebnis ausgibt
(siehe Testläufe).
Es ist ihnen nicht erlaubt, Systemfunktionen zur Suche von Zeichenketten
o.ä. zu verwenden. Schleifen auch nicht erlaubt, siehe oben.
Legen Sie im Projekt eine leere Headerdatei catch.h an und kopieren Sie
den Inhalt der in Ilias liegenden gleichnamigen Datei in diese Headerdatei.
Legen Sie im Projekt eine leere Datei test_suchen_rekursiv.cpp an und
kopieren Sie den Inhalt der in Ilias liegenden gleichnamigen Datei in diese
Datei. Ergänzen Sie die Unit Tests in dieser Datei um die Testfälle, die in
den unten angegebenen Testläufen vorgegeben sind.
Schreiben Sie ferner ein C++ Hauptprogramm, welches die Eingaben
entgegennimmt, die Funktion aufruft und das Ergebnis ausgibt (siehe
Testläufe). Ergänzen Sie dabei den folgenden Programmrahmen (auch als
Datei in Ilias vorgegeben):
// Datei: suchen_rekursiv_main.cpp
#define CATCH_CONFIG_RUNNER
#include "catch.h"
#include <iostream>
using namespace std;
#include "suchen.h
-
@Dafina-97
#define CATCH_CONFIG_RUNNER
#include "catch.h"
#include <iostream>
using namespace std;
#include "suchen.h"int main() {
Catch::Session().run();int zeichenkette_suchen_rekursiv( string text,
string zkette,
unsigned int text_pos = 0,
unsigned int text_such_pos = 0,
unsigned int zkette_such_pos = 0bool find_str_rec( char const * haystack, char const * needle )
{
if( *haystack == *needle ) {
if( *needle ) {
return find_str_rec( haystack + 1, needle + 1 );
} else { // *needle == '\0' && *haystack == '\0'
return true;
}
} else if( *haystack == '\0' ) return false;return find_str_rec( haystack + 1, needle );
}
system("PAUSE");
return 0;
}
-
Hast Du auch eine Frage? Du hast nichts geleistet außer die Aufgabe abzuschreiben.
-
meine Frage wäre ob jemand den Fehler findet weil ich schon seit paar tagen nach dem Fehler
suche.
-
Welchen Fehler?
Bitte lies dringend dies: https://www.c-plusplus.net/forum/topic/200753/bitte-lesen-du-brauchst-hilfe
-
@Dafina-97 Damit man dir helfen kann, ist es notwendig zunächst mal deinen Quellcode so formatiert und minimal zu posten, dass der Fehler noch auftritt, aber kein unnötiger Ballast dabei ist. Niemand hier ließt sich drei Seiten Quellcode durch. Des Weiteren macht es Sinn, dass du genau schreibst, was der Fehler ist, und was dein Erwartungswert ist. Je besser deine Beschreibung, desto schneller können wir dir helfen.
Den Link zum "Tutorial" hat @SeppJ bereits gepostet. Empfehlenswerte Lektüre.
-
@Dafina-97 sagte in Zeichenkette suchen rekursiv (Rekursion, Stringoperationen) inkl. Unit Tests:
Hallo,
ich habe folgende Aufgabe:
Hallo,
ich habe folgende Aufgabe:
Fenster putzen, Staub saugen und Blumen gießen.
-
@DocShoe
Du scheinst an der gleichen Uni zu sein, wie ich ....
-
@Belli
Sehr gut, dass triftt genau meinen Humor