brauche hilfe bei einer aufgabe die text in morsecode übersetzt



  • Hallo!
    bin erst seit kurzem dran c++ zu lernen und habe jetzt die aufgabe bekommen ein programm zu schreiben, das eine textzeile einliest und sie im morsecode wieder ausgibt. Im zweiten aufgabenteil soll dann das gleich auch wieder anders rum gemacht werden.

    Leider weiß ich nicht einmal richtig wie ich anfangen soll.
    Hab jetzt mal angefangen ein Feld mit allen Morsezeichen zu machen und eines, in dem alle normalen Zeichen drin sind.
    [char *morse []={'*-','--',--, .....}
    char text []={'A','B','C',......}
    Ich weiß jetzt nur wieder nicht wie ich diese zwei Felder verbinden muss, damit dem einen zeichen aus dem ersten feld automatisch das zeichen aus dem anderen feld zugeordnet wird.

    kann man so etwas überhaupt mit feldern machen oder gibt es da einen andere möglichkeit?

    Sorry aber ich weiß echt nicht wie ich da überhaupt anfangen soll und hab auch keinen in meinem Bekanntenkreis, der mir da Nachhilfe geben könnte.
    Im Internet finde ich irgendwie auch nichts was mir weiterhelfen könnte.

    Ich wäre euch deshalb sehr dankbar, wenn ihr mir ein paar tips geben könntet wie ich da vorgehen muss.

    Danke bereits im Voraus!!!



  • Hallo,

    für Deine Zwecke ist ein Dictionary am geeignetsten. In C++ kann man das per std::map verwenden. Das könnte man dann folgendermaßen verwenden:

    #include <map>
    #include <string>
    
    // …
    
    std::map<char, std::string> morse_code;
    
    morse_code['A'] = "*-";
    // …
    
    // Text codieren:
    
    std::string source = "Dies ist ein Test";
    std::string target;
    
    for (std::string::const_iterator i = source.begin(); i != sourcen.end(); ++i)
        target += morse_code[*i] + " ";
    


  • Hi,

    du musst doch sowieso den 1. Buchstaben deines Textes überprüfen welcher dies ist.

    Sollte der 1. Buchstabe dann ein z.B.: A sein, überprüfst du dies doch in einer schleife.
    Jetzt kannst du natürlich den counter dieser Schleife benutzen um an die Stelle des Morsecodes zu springen.

    Natürlich sollte dann der Morsecode an richtiger Stelle stehen.
    Du kannst dann morse nur als Feld benutzen.

    Hoff dir hilft der Text weiter. Du wolltest ja nicht mehr : )



  • char *morse []={'*-','*-*-',-*-*, .....} 
    char text []={'A','B','C',......} 
    
    char acText[20]="HALLO WELT";
    
    for(int i=0; i< strlen(acText); i++){
    
      for(int k=0; k< strlen(text); k++){
         if(text[k]==acText[i]){
           printf("%s",morce[i];
           break;
         }
      }
    
    }
    


  • @BorisDieKlinge: Warum nicht auch noch eine C-Lösung in einem C++-Forum posten, wenn eine viel sauberere C++-Lösung bereits gepostet wurde!


Anmelden zum Antworten