Eine Art Translator schreiben!



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


Anmelden zum Antworten