Suchen und ersetzen
-
Hall zusammen,
ich habe ma im Forum geschaut und habe einen änlichen Beitrag gefunden,
jedoch bin ich mir da nicht sicher.Ich hol mal aus, mein Lehrer hatt nach 6 Lektionen "C++" uns eine Aufgabe gegeben.
Suchen und Ersetzen
Schreiben Sie ein Programm, welches die Funktion «Suchen und Ersetzen» beherrscht.
Das Programm soll in einem Text nach einem gewünschten Satz/Wort suchen. Sofern der Satz/das Wort
im Text gefunden wird, ist dieser mit einem anderen Satz/Wort zu ersetzen. Kommt der Satz/ das Wort
mehrfach im Text vor wird er für alle Vorkommnisse ersetzt.
Die Applikation fragt den Benutzer nach dem Start nach einem Text. Danach wird nach dem zu
suchenden Satz und dem zu ersetzen Satz/ Wort gefragt.Anschliessend ruft das Programm eine Funktion auf, welches alle Vorkommnisse im Text findet und
entsprechend ersetzt.So, jetzt habe ich mal was zusammengereimt, ich bin voll der Anfänger. Könnte mir das evtl. überfliegen und sagen ob es so i.O wäre?
#include <iostream>
#include <string>using namespace std;
void ersetzen( string &text, string alt, string neu );
int main( void ) {
string text = "Das Lernen macht Spaß, das Lernen ist gut, "
"vom Lernen krieg ich nie genug.";cout << "Alter Text: " << text << endl;
ersetzen(text, "Lernen", "Leben");
cout << "Neuer Text: " << text << endl;return 0;
}void ersetzen( string &text, string alt, string neu ) {
for (size_t x = text.find(alt); x != string::npos; x = text.find(alt,x+neu.length()))
text.replace(x, alt.length(), neu);
cout << "Schleifendurchlauf" << endl;
}Viele Dank
Gruss Fabian
-
In der Aufgabe steht, dass der Benutzer nach einem Text gefragt werden soll, das hast du nicht umgesetzt.
Bei main() brauchst du kein "void" in den Klammern => Das braucht man bei C++ überhaupt nicht. Wenn die Funktion keine Argumente annehmen soll, die Klammer einfach Leer lassen.
Ansonsten sieht das vom Suchen und Ersetzen Teil ganz gut aus.
-
Danke für den Input,
also ich habe das Programm nochmals umgeschrieben:
1 #include <iostream>
2 #include <string>
3
4 using namespace std;
5
6 void ersetzen( string &text, string alt, string neu );
7
8 int main void {
9 string text; //Variable deklarieren
10 cin >> Text; // Texteingabe
11
12 cout << "Alter Text: " << text << endl;
13 ersetzen(text, "alt", "neu");
14 cout << "Neuer Text: " << text << endl;
15
16 return 0;
17 }
18
19 void ersetzen( string &text, string alt, string neu ) {
20 for (size_t x = text.find(alt); x != string::npos; x = text.find(alt,x+neu.length()))
21 text.replace(x, alt.length(), neu);
22 cout << "Schleifendurchlauf" << endl;
23 }eine kleie Frage zur Bewertung meines Lehrers hätte ich noch.
Bewertung:
Bewertungskriterium Gütestufe 0 Gütestufe 1 Gütestufe 3
Funktionsfähigkeit
Suchen / Ersetzen
Funktioniert nicht
0P
Funktioniert
4PFunktionsfähigkeit
Suchen / Ersetzen für alle
Vorkommnisse
Funktioniert nicht
0P
Funktioniert
8PModularität
Kein Einsatz von
Funktionen. Sämtlicher
Code in der main Funktion
0P
Verwenden von
Funktionen in
Sinnvollem Mass
2PBenutzerführung Nicht strukturierte /
unklare Ausgabe/Eingabe
0P
Strukturierte
Ausgabe/Eingabe
entsprechend dem
Beispiel oder
ansprechender
1PCode Style Code nicht eingerückt
Variabel Definition an
verschiedenen Stellen im
Programm
Nichtsausagende
Nomenklatur (Variablen /
Funktionen)
Globale Variablen
0P
Code teilweise
eingerückt
Variabel
Definitionen zum
Teil am
Funktionsanfang
Aussagende
Nomenklatur
Globalen Variablen
2P
Code eingerückt
Definition Variablen
am Anfang
Aussagende
Nomenklatur
Keine globalen
Variablen
Funktionsdeklaration
und Implementation
getrennt
4PGruss Fabi
-
Formatier Dein Posting mal dahingehend, dass das lesbar ist.
Den Code in
[cpp]...[/cpp]
Tags.
Und den Rest (ist das eine Tabelle?) evtl in[code]...[/code]
Tags.
-
fabish_92 schrieb:
eine kleie Frage zur Bewertung meines Lehrers hätte ich noch.
...die da wäre?
Allgemein sehen die Kriterien gut aus. Ich stimme lediglich nicht damit überein, dass Variablen am Funktionsanfang definiert werden müssen. Somit könnte ich mir vorstellen, dass du für
for (size_t x = ...; ... ; ...) { ... }
Abzug bekommst und es stattdessen so machen sollst:
size_t x; for (x = ...; ... ; ...) { ... }
Davon würde ich aber abraten und sogar den Punktabzug hinnehmen, da die obere Variante offensichtlich besser ist als die untere, auch wenn dein Lehrer das anders sieht.