Mehrfachverzweigungsproblem



  • Und wo siehst du die?!
    Das sind eine for- und eine while-Schleife, plus ein bisschen Kram aus der Standardbibliothek.
    Der Code den du geschrieben hast ist völliger Unsinn. Mit einem switch kannst du vielleicht was machen, wenn du einen Buchstaben gegen /einen/ anderen ersetzen willst.



  • kannst du es mir machen? bitte 😞



  • bitte helfen -.-



  • Warum versuchst du es nicht einfach?
    Der Ansatz, den ich meine ist Folgender:
    Du machst eine Map von string nach string (std::map<std::string, std::string>) und füllst sie mit deinen Zuordnungen ("ä" -> "ae", "ö" -> "oe" etc.). Dann benutzt du einfach den Code aus dem Thread, den ich dir oben verlinkt habe und freust dich.

    Fang einfach mal an. Es wird dir kaum helfen, wenn dir jemand dieses einfache Programm auch noch vorschreibt.



  • Habs jetzt so, aber wenn ich was eingib kommt bei jedem buchstaben ein "ae".

    void __fastcall TForm1::Edit5KeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
    
    if (Key==13)
    {
    String Wort=Edit5->Text;
    String Neu="";
    int Auswahl;
    int i;
    
    for (i=1;i<=Wort.Length();i++)
     {
     switch(Auswahl)
       {
       case 1:Wort[i]='ä';Neu=Neu+"ae";break;
       case 2:Wort[i]='Ä';Neu=Neu+"AE";break;
       case 3:Wort[i]='ö';Neu=Neu+"oe";break;
       case 4:Wort[i]='Ö';Neu=Neu+"OE";break;
       case 5:Wort[i]='ü';Neu=Neu+"ue";break;
       case 6:Wort[i]='Ü';Neu=Neu+"UE";break;
    
       default:Neu+Wort[i];break;
        }
    
     }
     Label10->Caption="Das Wort lautet nun "+Neu;
    }
    }
    


  • Welchen Wert hat denn "Auswahl" beim ersten switch?

    MfG



  • ok^^ danke hab das übersehen..
    habs jez so:

    switch(Wort[i])
       {
       case 'ä':Neu=Neu+"ae";break;
       case 'Ä':Neu=Neu+"AE";break;
       case 'ö':Neu=Neu+"oe";break;
       case 'Ö':Neu=Neu+"OE";break;
       case 'ü':Neu=Neu+"ue";break;
       case 'Ü':Neu=Neu+"UE";break;
    
       default:Neu+Wort[i];break;
        }
    

    aber mit dem default stimmt noch immer was nicht. aber da komm ich jetzt echt nicht drauf -.-

    mfg



  • ok
    [cpp]

    default:**Neu=**Neu+Wort[i];break;

    [/cpp]

    ^^ fertich



  • Dein Code ist gelinde gesagt komplett unsinnig, entsprechend ist das Ergebnis auch unsinnig.

    Du solltest als ersten Schritt einmal genau aufschreiben was Du eigendlich willst, in einfachen, kurzen Sätzen, so etwa wie:

    1. Im eingegebenen Wort nach Umlaufen suchen.
    2.
    3.

    usw.

    Dadurch ergibt sich sozusagend schon die Programmstruktur.

    Wenn Du nicht in der Lage dazu bist in einfachen Sätzen zu beschreiben was Du machen willst, dann kannste das mit dem Proggen auch gleich vergessen...



  • Es geht schon längst du spast.

    Du bist gelinde gesagt komplett unsinnig.

    Auf deine gestörten Kommentare, die sowieso niemanden weiterhelfen, kann jeder verzichten.

    Wenn Du nicht in der Lage dazu bist zu helfen, dann kannste das mit dem Forum auch gleich vergessen...
    Bist dazu auch nicht mal in der Lage dich zu registrieren 🙄

    Wenn du trotzdem noch meinst, du wärst so viel besser, DANN MACHS DOCH SELBST!!! Ich wette,dass du es sowieso nicht zusammenkriegst, ohne nervigen, besserwisserischen Kommentaren zu posten. 👎



  • würde es so machen :

    std::string TestProg::parseString(std::string as_myString)
    {
    	std::string s_parsedString = "";
    
    	for(unsigned int i=0 ; i < as_myString.length() ; i++)
    	{
    		switch(as_myString[i])
    		{
    			case 'ä' : s_parsedString+= "ae"; break;
    			case 'ö' : s_parsedString+= "oe"; break;
    			//kommt noch der rest rein...
    			default  : s_parsedString+= as_myString[i];
    		}
    	}
    
    	return s_parsedString;
    }
    

    hoffe es hilft


Anmelden zum Antworten