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
    4P

    Funktionsfähigkeit
    Suchen / Ersetzen für alle
    Vorkommnisse
    Funktioniert nicht
    0P
    Funktioniert
    8P

    Modularität
    Kein Einsatz von
    Funktionen. Sämtlicher
    Code in der main Funktion
    0P
    Verwenden von
    Funktionen in
    Sinnvollem Mass
    2P

    Benutzerführung Nicht strukturierte /
    unklare Ausgabe/Eingabe
    0P
    Strukturierte
    Ausgabe/Eingabe
    entsprechend dem
    Beispiel oder
    ansprechender
    1P

    Code 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
    4P

    Gruss 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.


Anmelden zum Antworten