Eine Art Translator schreiben!
-
Hallo,
Wahrscheinlich kennt ihr ja diese leetspeak translators wo man einen Text eingibt und der Translator ersetzt bestimme Buchstaben des Textes und schon hat man "LeetSpeak".Hier mal ein Beispiel für nen Translator:
http://home.no.net/hellshl/main/translate.htmlz.B Normal = Hallo
Leet = H4||0Und sowas würde ich auch gerne machen , also ein Programm wo du den Text eingibst und es dir dann ganz einfach nur ein paar Buchstaben davon austauscht und das Ergebniss anzeigt.
Leider habe ich nicht so viel Ahnung von C++ möchte es aber denoch versuchen , brauche aber dazu Tipps und Hilfe
Wäre also klasse wenn ihr mir Ansätze liefern könntet , denn ich habe im Moment absolut keine Idee wie ich das Prog dazu bringe bestimmte Buchstaben auszutauschenDanke schonmal im Vorraus,
Marale7
-
Hallo,
Du musst Zeichen einzeln einlesen und diese ggf. in einem switch-statement auswerten:
while(true)
switch(currentChar)
case a:
cout << '4'
....MFG winexec*
-
Hallo,
Ich habe einmal kurz was geschrieben:
#include <iostream> #include <conio.h> #include <string> using namespace std; int main(){ string a = "hallo"; for(int i = 0; i < a.size() + 1; i++){ switch(a[i]){ case 'a': a[i] = '4'; break; case 'o': a[i] = '0'; break; } } cout << a; getch(); }Ausgabe:
h4ll0
MFG winexec*
-
Boah ihr seid echt klasse

So schnell ne Antwort, hatte aber auch nichts anderes erwartet. Das Forum wurde mir empfohlen

Ja klasse klappt wunderbar, nur jetzt msüste ich noch den String definieren können , also so das nicht schon das Wort was übersetzt wird vorgegeben ist.
Eine Art Eingabe also.
Habt ihr dazu auch ne Idee ?
-
-
Hallo,
Aber nur weil ich auch nichts besseres zu tun hatte
#include <iostream> #include <conio.h> #include <string> #include <fstream> using namespace std; int main(){ ifstream file("file.txt"); string buf[100]; int count = 0; while(!file.eof()){ file >> buf[count]; count += 1; } for(int i = 0; i < count; i++){ string a = buf[i]; for(int t = 0;t < a.size() + 1; t++){ switch(a[t]){ case 'a': a[t] = '4'; break; case 'e': a[t] = '3'; break; case 'o': a[t] = '0'; break; } } buf[i] = a + ' '; } ofstream ouf("newfile.txt"); for(int k = 0; k < count + 1; k++){ ouf << buf[k]; } file.close(); ouf.close(); getch(); }
MFG winexec*
-
Klappt klasse

Ich werde jetzt nochmal was rumprobieren ob ich auch einfach die Ein- und Ausgabe des Textes in das Programm selbst einbauen kann.
Vielen dank winexec* , hast echt was gut bei mir :>
-
Ich schlage vor:
char translate[256]; for(int i=0; i<256; ++i) { translate[i] = i; } // so, jetzt Ersetzungen definieren, z.B. a durch 4: translate['a'] = '4'; translate['l'] = '|'; // oder auch Tabelle aus ner Datei einlesen. for(int i = 0; i < input.size(); i++){ input[i] = translate[input[i]]; }
-
Hallo,
die Variante von Jester finde ich persönlich besser & übersichtlicher,
wobei:
Jester schrieb:
translate[i] = i;ich versteh das " = i " nicht. das Index i in translate ist mir durchaus bewusst, aber das = i?
ich versteh das z.b. so:
translate[4] = 4;
ich versteh den Sinn nicht

Kann mir jemand nen kleinen Gedankenstoß geben?

-
nki schrieb:
Jester schrieb:
translate[i] = i;ich versteh das " = i " nicht. das Index i in translate ist mir durchaus bewusst, aber das = i?
das i ist der ascii-wert des entspr. buchstabens. translate['a'] z.B. wandelt den character 'a' implizit in den entsprechenden integer-wert um.
-
achsooo, ah, ok, besten Dank!
-
Ich hab das eben mal grad getestet, aber anstatt dass er mir das umwandelt, spuckt er nur hyroglyphen und smileys aus.
Hier der Code
void Klasse :: m_NormalTo_1337() { cout << "\nEingabe in 1337 umwandeln" << "\n-------------------------\n" << "\nBitte geben Sie einen String (Zeichenkette) ein: "; cin >> Eingabe; for (int i= 0; i < 256; ++i) { Eingabe[i] = i; } // Kodierung Eingabe['a'] = '4'; Eingabe['o'] = '0'; cout << "\nErgebnis: " << Eingabe; }Eingabe ist in der Klasse wie folgt definiert:
private: string Eingabe;Woran liegt das? Ich find keinen Fehler. (Ja es gibt aber einen
)***** edit *****
Schon gut, ich weiß wo der Fehler liegt:
Eingabe['a'] = 4;
das 'a' ist der Index und der compiler weiß ja net an welcher Stelle das a steht und wieviele es gibt. der sucht sich das a, an welcher Stelle auch immer das steht (ich glaub der sucht hex-dez code (kenn den jetzt net für "a" also nehmen wir mal an "A" wäre dann 65, dann ersetzt der die 65. stelle durch eine 4.. (korregiert mich, wenn ich falsch liege)
Die Problematik müsste man doch schon mit if oder switch lösen.
-
Lies nochmal in Ruhe mein Posting durch. Du schmeißt grad die Eingabe mit dem Übersetzungsarray durcheinander.