Umwandeln v. Zeichen (Eingabe -> Ausgabe)
-
Hallo, ich bin neu hier und habe mich zwecks dieser Frage hier angemeldet.
Da ich im Internet schon so gut wie überall recharchiert habe, zweifle ich dran, dass es für dieses Problem überhaupt eine Lösung gibt.Folgendes:
Ich möchte einen Converter von Text zu Morse (dieser Teil funktioniert) und von Morse zu Text schreiben. Ich habe aufgrund v. mangelnder Erfahrung nur einfach Befehle verwendet, wodurch dieses Problem entstanden ist.cout << "Geben Sie den Morsecode ein, der Uebersetzt werden soll. << endl; //Eingabe_Text getline (cin,Morseeingabe); for (int Morsecode=0; Morsecode<Morseeingabe.length(); Morsecode++) { if (Morseeingabe[Morsecode]== '._' ) cout << "A"; . . . }
Wie bekomme ich es hin, das die Konsole versteht, das ich zwei Zeichen eingeben möchte und ein Zeichen ausgegeben haben möchte.
wenn ich nur einen Punkt (.) zuweise, dann bekomme ich mein gewünschtest A.
Ich habe den Punkt (.) und den Unterstrich (_) bereits mit && verknüpft aber dann spielt die Reihenfolge der Eingabe ja keine Rolle mehr.Ziel soll es sein, das ich im Konsolenfenster ._ eingebe und ein A ausgegeben bekomme.
vielen dank schonmal im voraus für eure antworten.
mfg.
-
Wenn du mehr als ein Zeichen abspeichern möchtest, wäre dazu ein String nicht schlecht.
Du kannst auch Strings miteinander vergleichen. Z.B: mit ".-"
-
ich habe schon folgendes probiert:
ich habe einen char deklariert: char A = '._';
und dann A als eingabe eingesetzt.allerdings hab ich auch hier dieses Problem mit der Reihenfolge der Eingaben.
Das mit dem String probiere ich, sollte ich diesbezüglich eine auf meine Variante zugeschnittene Idee haben mal ausprobieren.
mfg.
-
Ein char kann nur ein Zeichen speichern. Wenn du mehr willst, dann brauchst du einen std::string.
Ansonsten hilft dir vielleicht auch substr von std::string weiter, da du ja zumindest eine Zeile damit einliest. Vermutlich ist das aber alles gefrickel.
Leider kenne ich mich mit Morsecodes auch nicht aus und kann daher keinerlei Beispiel o.ä. posten.
-
TrasHTeDDy_xD schrieb:
ich habe schon folgendes probiert:
ich habe einen char deklariert: char A = '._';
und dann A als eingabe eingesetzt.Zwei Zeichen in einem char! Das passt doch gar nicht.
Daß der Compiler nicht heult, ist eion anderes Thema, für den ist '.-' vielleicht irgend ein multibyteunicodechar.
-
Das das nicht geht ist mir mittlerweile auch bewusst. Dennoch habe ich viele andere Möglichkeiten, die mir spontan eingefallen sind ausprobiert.
Ans Ziel geführt hat noch keine dennoch bin ich zuversichtlich, dass das ganze machbar ist.
Mfg.
-
Ich nehme mal an zwischen deinen Morsecodes verschiedener Buchstaben stehen Leerzeichen? In jedem Durchlauf der Schleife könntest du also die Position des nächste Leerzeichen suchen und dann den String bis dahin nehmen und mit deinen gespeicherten Morsezeichen vergleichen. Oder statt
getline
könntest du auch direkt in dein String schreiben:string morsecode; while(cin >> morsecode) // Ließt nur bis zum nächsten Leerzeichen { if(morsecode == "._") cout << "A"; ... }
Musste nur schauen wie du das auf eine Zeile begrenzt.
-
Die Idee hilft ihm vielleicht weiter allerdings sieht es so aus, als könnte die schleife nicht so ohne weiteres beendet werden.
Ich gehe mal davon aus das die schleife mit einer enter Eingabe beendet werden soll und das ist bei dieser Methode nicht der Fall da es eine Endlosschleife ist
Ich würde es auch mit Substr versuchen
-
genau vor diesem Problem stehe ich jetzt...
habe schon über google gesucht allerdings habe ich keine Lösung gefunden..
das Problem ist wie folgt:
wenn ich einen morsecode eingebe
(z.B. ._ _. erscheint als ausgabe zwar mein gewünschtes "an") allerdings habe ich mit Eingabe der Enter Taste nur das Ergebnis auf dem Schirm. Desweiteren habe ich die Möglichkeit, weiter Eingaben zu tätigen, da sich das Programm noch immer in der Schleife befindet.Und jedes mal ein anderes Zeichen wie z.B. ein Ausrufezeichen zum beenden der schleife einzugeben finde ich etwas unnötig.
Daher die Frage: gibt es für die "ENTER" Taste ein ASCII Zeichen, welches ich anstelle eines Ausrufezeichens zum beenden der Schleife nutzen kann? (Gefunden habe ich auf google diesbezüglich nichts)
lg.
-
Abcd schrieb:
Die Idee hilft ihm vielleicht weiter allerdings sieht es so aus, als könnte die schleife nicht so ohne weiteres beendet werden.
Mit der Stream-Ende-Tastenkombination, wenn ich mich recht erinnere Strg+Z auf Windows und Strg+D auf Linux.
-
Geh wieder zurück auf
getline
, dann kannst du prüfen ob der String leer ist.