lehrzeichen=?



  • moin das sind die neusten ansätze meines verschlüsselung programmes:

    /*
    Autor 	:****
    Programm: Verschlüsselung von texten
    */
    
    #include <iostream>
    #include <ctype.h>
    
    int main()
    {
    
    char x[10];
    char e[10];
    char f;
    int a[10];
    int y=0;
    
    cout << "Soll ein Text vrschlüsselt oder entschlüsselt werden? v oder e eingeben" << endl;
    cin >> f;
    
    if (f=='v')
    {
    
    //------------------------------------------------------------------------------
    
    cout << "Bitte zu verschlüsselnen text eingeben " << endl;
    
    	while(y!=10)
    	{
    
    	cin >> x[y];               		//felde von x wird eingeeben
    
        a[y]=static_cast<int>(x[y]);    //wert des feldes wird in zahl umgewandelt
        ++a[y];                         //diese zahl wird um eins erhöt
    	y=++y;                          //das nächste feld wird angesprochen
    
    	}
    
     cout << "der text lautet" << endl;
    
     y=0;                           	//das feld wird wieder auf 0 gesetzt
    
    //------------------------------------------------------------------------------
     	while(y!=10)
    	 {
    
         e[y]=static_cast<char>(a[y]);  //der zahlenwert des feldes wird in char umgewandelt
         cout << e[y] ;                 //char wird ausgegeben
         								//!!! e und x muss vom typ char sein und a vom typ int!!!!!!!!!
         y=++y;
    
    	 }
    //------------------------------------------------------------------------------
    }
    
    else
    {
    //------------------------------------------------------------------------------
    
    cout << "Bitte zu verschlüsselnen text eingeben " << endl;
    
    	while(y!=10)
    	{
    
    	cin >> x[y];               		//felde von x wird eingeeben
    
        a[y]=static_cast<int>(x[y]);    //wert des feldes wird in zahl umgewandelt
        --a[y];                         //diese zahl wird um eins erniedrigt
    	y=++y;                          //das nächste feld wird angesprochen
    
    	}
    
     cout << "der text lautet" << endl;
    
     y=0;                           	//das feld wird wieder auf 0 gesetzt
    
    //------------------------------------------------------------------------------
     	while(y!=10)
    	 {
    
         e[y]=static_cast<char>(a[y]);  //der zahlenwert des feldes wird in char umgewandelt
         cout << e[y] ;                 //char wird ausgegeben
         								//!!! e und x muss vom typ char sein und a vom typ int!!!!!!!!!
         y=++y;
    
    	 }
    
     }
     int v;
     cin >> v;
    }
    

    stellt sich die frage wie ich leerzeichen verschlüssele?
    und wie ich die feldanzahl automatisch der buchstabenanzahl anpasse.
    weil immoment kann man ja nicht mehr als 10 buchstaben eingeben oder?



  • Hi,
    Benutze am Besten std::string anstatt eines char arrays und dazu std::getline zum Einlesen.

    Tschau,
    Cappo



  • Ja benutze std::string und wenn du Zeichenweise verschlüsselst, dann std::transform aus <algorithm>.
    Ich versuchs mal freihand:

    std::string::value_type encode(std::string::value_type toEncode)
    {
       return toEncode + 1;
    }
    ...
    
    std::string test = "Text";
    std::transform(test.begin(), test.end(), test.begin(), encode);
    
    ...
    

    oder so ählich



  • Idexe schrieb:

    Ja benutze std::string und wenn du Zeichenweise verschlüsselst, dann std::transform aus <algorithm>.
    Ich versuchs mal freihand:

    std::string::value_type encode(std::string::value_type toEncode)
    {
       return toEncode + 1;
    }
    ...
    
    std::string test = "Text";
    std::transform(test.begin(), test.end(), test.begin(), encode);
    
    ...
    

    oder so ählich

    ok die dinger mit den doppelten doppelpunkten habe ich schon öfter mal gesehen 😉
    wenn ich irgendwan gelernt habe was die machen werd ich schauen das ic eure tips beherzige



  • wenn ich irgendwan gelernt habe was die machen werd ich schauen das ic eure tips beherzige

    Die doppelten Doppelpunkte kennzeichnen den sog. Scope-Operator. Mit Hilfe des Scope-Operators kann man kennzeichnen, dass man z.B. eine bestimmte Funktion/einen bestimmten Typ/ein bestimmtes Objekt. aus einem ganz bestimmten Bereich benutzen möchte.

    Beispiel:

    #include <iostream>
    #include <string>
    
    namespace my_scope
    {
        class string
        {
            public:
                string() { std::cout << "my_scope::string()\n"; }
                ~string() { std::cout << "my_scope::~string()\n"; }
        };
    }
    
    int main()
    {
        std::string s1; // erzeuge ein Objekt s1 des Typs std::string bzw. besser gesagt
                        // vom Typ string, der sich im scope std:: befindet.
    
        my_scope::string s2 // erzeuge ein Objekt vom Typ string aus dem Scope 
    my_scope.
    
        string s3; // FEHLER: Welche Klasse string? aus dem Bereich my_scope oder aus std?
    }
    

    Grundsätzlich benutzt man Namensräume (namespaces), um den Zugriff auf globale Typen/Objekte/Funktionen/etc. "einzuschränken" bzw. genauer zu spezifizieren.

    So, das war jetzt nur _ganz_ grob angerissen. Für weitere Informationen siehe z.B. hier nach.

    Gruß Caipi


Anmelden zum Antworten