[C/C++] Caesar-Verschlüsselungsprogramm in C++

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von ForceXX, 23. April 2010 .

  1. 23. April 2010
    Caesar-Verschlüsselungsprogramm in C++

    hallo liebes Raid-Rush board,
    wir hatten vor kurzem in der schule in mathe etwas über die caesar verschlüsselung drangenommen
    und da habe ich mir gedacht, da könnte ich doch ein programm in c++ schreiben, das strings mit der caesar verschlüsselung ver- und entschlüsseln kann (Konsolenprogramm)
    ich hatte es mir so vorgestellt:
    am anfang ein menü
    -> auswählen -entschlüsseln
    -verschlüsseln
    -beenden
    ->wenn man entschlüsseln/verschlüsseln ausgewählt hat, die schrittweite (also wie weit jeder buchstabe verschoben wird) eingeben
    -> dann den zu ent-/verschlüsselnden text eingeben
    =>dann wird der verschlüsselte/entschlüsselte text angezeigt

    das grundgerüst habe ich mir schon zusammengebastelt, da ich aber erst vor kurzem angefangen habe, mir c++ beizubringen, weiss ich nicht, wie ich den eingegebenen text entschlüsseln bzw. verschlüsseln kann

    hier mein grundgerüst:

    Code:
    //Caesar.cpp - Ein Programm, um Strings mit der Caesar-Verschluesselung zu ent- und verschluesseln
    #include <iostream>
    using namespace std;
    
     void entschluesselungsprogramm()
     {
     int schrittweite;
     cout << "Bitte geben sie die Schrittweite der Entschl\x81sselung ein" << endl;
     cin >> schrittweite;
     cout << "Sie haben eine Schrittweite von " << endl;
     cout << schrittweite << " gew\x84hlt." << endl;
     cout << "Bitte geben sie jetzt den Text ein, den sie Ent-" << endl;
     cout << "schl\x81sseln wollen ein:" << endl; 
     }
     
     void verschluesselungsprogramm()
     {
     int schrittweite;
     cout << "Bitte geben sie die Schrittweite der Verschl\x81sselung ein" << endl;
     cin >> schrittweite;
     cout << "Sie haben eine Schrittweite von " << endl;
     cout << schrittweite << " gew\x84hlt." << endl;
     cout << "Bitte geben sie jetzt den Text ein, den sie Ver-" << endl;
     cout << "schl\x81sseln wollen ein:" << endl;
     }
    
    
    int main()
    {
     cout << "Ein Programm, um Strings mit der Caesar-Verschl\x81sselung zu ent-" << endl; 
     cout << "und verschl\x81sseln" << endl;
     
     cout << "Bitte w\x84hlen sie aus:" << endl;
     cout << "Entschl\x81sseln <1>" << endl;
     cout << "Verschl\x81sseln <2>" << endl;
     cout << "Programm beenden <3>" << endl;
     
     int eingabe;
     cin >> eingabe;
     
     if (eingabe == 1)
     { 
     cout << "Entschl\x81sselungs-Programm" << endl;
     entschluesselungsprogramm();
     }
     else if (eingabe == 2)
     {
     cout << "Verschl\x81sselungs-Programm" << endl;
     verschluesselungsprogramm();
     }
     else if (eingabe == 3)
     { 
     cout << "Dankesch\x94n, und auf Wiedersehen!" << endl;
     }
     
     else 
     {
     cout << "Diese Option steht nicht zur Auswahl!" << endl;
     } 
     
     return 0;
    }
    über eine antwort, hilfe oder verbesserungsvorschläge würde ich micc sehr freuen
    mfg

    ForceXX
     
  2. 23. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    Lies doch einfach mit cin den Text in ein char array ein (char input[256]) und anschliessend kannst du auf jeden Buchstaben über den Index input[index] zugreiffen. Jeder Buchstabe wird mit einer dazugehörigen Zahl verknüpft und diese kannst du nach deinen wünschen manipulieren.

    Mfg Rushh0ur

    PS:
    Die Zeichenkette wird mit der Zahl 0 beendet. Die represäntative Buchstabenwerte findest du bei Wiki: American_Standard_Code_for_Information_Interchange
     
  3. 23. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    cool, danke für die schnelle antwort, ich probiers gleich mal aus

    edit:
    also ich hab jetzt das array erstellt, aber ich versteh das mit dem index noch nicht
    kannst du es mir vielleich mal an einem beispiel zeigen, wie ich dann die zahlen manipulieren kann?
     
  4. 23. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    Schau mal hier oder google mal nach c++ array char dann solltest du die Funktionsweise finden.

    Mfg Rushh0ur
     
  5. 26. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    hallo,
    also, ich hab das mit den arrays nun eingebaut, und im prinzip verschlüsselt/entschlüsselt das programm auch.
    nur habe ich 2 probleme:
    -wenn ich zb als schrittlänge 2 eingebe, und ein zeichen z ist, dann macht es irgendwelche komische zeichen

    Code:
    C:\Users\ForceXX\Documents\C++\C++\Caesar>caesar
    Ein Programm, um Strings mit der Caesar-Verschlüsselung zu ent-
    und verschlüsseln
    Bitte wählen sie aus:
    Entschlüsseln <1>
    Verschlüsseln <2>
    Programm beenden <3>
    2
    Verschlüsselungs-Programm
    Bitte geben sie die Schrittweite der Verschlüsselung ein
    2
    Sie haben eine Schrittweite von +
    2 gewählt.
    Bitte geben sie jetzt den Text ein, den sie Ent-
    schlüsseln wollen ein (max. 100 Zeichen):
    abcdez
    
    abcdez
    cdefg|??ã?$?À&Axáü=<->????->?$?öñD?+
    wie könnte ich es denn machen, dass es nach z wieder bei a anfängt?

    -wenn ich von den 100 momentan möglichen zeichen nur 10 oder so eingebe, dann macht er aus den anderen restlichen zeichen, auch komische zeichen. Wie kann ich denn die restlichen zeichen, die nicht benutzt werden, löschen?


    Hier nochmal der code:

    Code:
    //Caesar.cpp - Ein Programm, um Strings mit der Caesar-Verschluesselung zu ent- und verschluesseln
    #include <iostream>
    using namespace std;
    
     void verschluesselungsprogramm()
     {
     int schrittweite;
     char text[100];
     char weiter[100];
     cout << "Bitte geben sie die Schrittweite der Verschl\x81sselung ein" << endl;
     cin >> schrittweite;
     if (schrittweite>26)
     {
     cout << "Sie haben eine zu gro\xE1" << "e Schrittweite gew\x84hlt!" << endl;
     }
     else if (schrittweite<1)
     {
     cout << "Sie haben eine zu niedrige Schrittweite gew\x84hlt!" << endl;
     }
     else
     {
     cout << "Sie haben eine Schrittweite von +" << endl;
     cout << schrittweite << " gew\x84hlt." << endl;
     cout << "Bitte geben sie jetzt den Text ein, den sie Ent-" << endl;
     cout << "schl\x81sseln wollen ein (max. 100 Zeichen):" << endl;
     cin >> text;
     cout << endl;
     cout << text << endl;
     
     weiter[0]=text[0]+schrittweite;
     weiter[1]=text[1]+schrittweite;
     weiter[2]=text[2]+schrittweite;
     weiter[3]=text[3]+schrittweite;
     weiter[4]=text[4]+schrittweite;
     weiter[5]=text[5]+schrittweite;
     weiter[6]=text[6]+schrittweite;
     weiter[7]=text[7]+schrittweite;
     weiter[8]=text[8]+schrittweite;
     weiter[9]=text[9]+schrittweite;
     weiter[10]=text[10]+schrittweite;
     weiter[11]=text[11]+schrittweite; 
     weiter[12]=text[12]+schrittweite; 
     weiter[13]=text[13]+schrittweite;
     weiter[14]=text[14]+schrittweite;
     weiter[15]=text[15]+schrittweite;
     weiter[16]=text[16]+schrittweite;
     weiter[17]=text[17]+schrittweite;
     weiter[18]=text[18]+schrittweite;
     weiter[19]=text[19]+schrittweite;
     weiter[20]=text[20]+schrittweite;
     weiter[21]=text[21]+schrittweite;
     weiter[22]=text[22]+schrittweite;
     weiter[23]=text[23]+schrittweite;
     weiter[24]=text[24]+schrittweite;
     weiter[25]=text[25]+schrittweite;
     weiter[26]=text[26]+schrittweite;
     weiter[27]=text[27]+schrittweite;
     weiter[28]=text[28]+schrittweite;
     weiter[29]=text[29]+schrittweite;
     weiter[30]=text[30]+schrittweite;
     weiter[31]=text[31]+schrittweite;
     weiter[32]=text[32]+schrittweite;
     weiter[33]=text[33]+schrittweite;
     weiter[34]=text[34]+schrittweite;
     weiter[35]=text[35]+schrittweite;
     weiter[36]=text[36]+schrittweite;
     weiter[37]=text[37]+schrittweite;
     weiter[38]=text[38]+schrittweite;
     weiter[39]=text[39]+schrittweite;
     weiter[40]=text[40]+schrittweite;
     weiter[41]=text[41]+schrittweite;
     weiter[42]=text[42]+schrittweite;
     weiter[43]=text[43]+schrittweite;
     weiter[44]=text[44]+schrittweite;
     weiter[45]=text[45]+schrittweite;
     weiter[46]=text[46]+schrittweite;
     weiter[47]=text[47]+schrittweite;
     weiter[48]=text[48]+schrittweite;
     weiter[49]=text[49]+schrittweite;
     weiter[50]=text[50]+schrittweite;
     weiter[51]=text[51]+schrittweite;
     weiter[52]=text[52]+schrittweite;
     weiter[53]=text[53]+schrittweite;
     weiter[54]=text[54]+schrittweite;
     weiter[55]=text[55]+schrittweite;
     weiter[56]=text[56]+schrittweite;
     weiter[57]=text[57]+schrittweite;
     weiter[58]=text[58]+schrittweite;
     weiter[59]=text[59]+schrittweite;
     weiter[60]=text[60]+schrittweite;
     weiter[61]=text[61]+schrittweite;
     weiter[62]=text[62]+schrittweite;
     weiter[63]=text[63]+schrittweite;
     weiter[64]=text[64]+schrittweite;
     weiter[65]=text[65]+schrittweite;
     weiter[66]=text[66]+schrittweite;
     weiter[67]=text[67]+schrittweite;
     weiter[68]=text[68]+schrittweite;
     weiter[69]=text[69]+schrittweite;
     weiter[70]=text[70]+schrittweite;
     weiter[71]=text[71]+schrittweite;
     weiter[72]=text[72]+schrittweite;
     weiter[73]=text[73]+schrittweite;
     weiter[74]=text[74]+schrittweite;
     weiter[75]=text[75]+schrittweite;
     weiter[76]=text[76]+schrittweite;
     weiter[77]=text[77]+schrittweite;
     weiter[78]=text[78]+schrittweite;
     weiter[79]=text[79]+schrittweite;
     weiter[80]=text[80]+schrittweite;
     weiter[81]=text[81]+schrittweite;
     weiter[82]=text[82]+schrittweite;
     weiter[83]=text[83]+schrittweite;
     weiter[84]=text[84]+schrittweite;
     weiter[85]=text[85]+schrittweite;
     weiter[86]=text[86]+schrittweite;
     weiter[87]=text[87]+schrittweite;
     weiter[88]=text[88]+schrittweite;
     weiter[89]=text[89]+schrittweite;
     weiter[90]=text[90]+schrittweite;
     weiter[91]=text[91]+schrittweite;
     weiter[92]=text[92]+schrittweite;
     weiter[93]=text[93]+schrittweite;
     weiter[94]=text[94]+schrittweite;
     weiter[95]=text[95]+schrittweite;
     weiter[96]=text[96]+schrittweite;
     weiter[97]=text[97]+schrittweite;
     weiter[98]=text[98]+schrittweite;
     weiter[99]=text[99]+schrittweite;
     weiter[100]=text[100]+schrittweite;
     cout << weiter << endl; 
     }
     
     }
     
     void entschluesselungsprogramm()
     {
     int schrittweite;
     char text[100];
     char weiter[100];
     cout << "Bitte geben sie die Schrittweite der Entschl\x81sselung ein" << endl;
     cin >> schrittweite;
     
     if (schrittweite>26)
     {
     cout << "Sie haben eine zu gro\xE1" << "e Schrittweite gew\x84hlt!" << endl;
     }
     else if (schrittweite<1)
     {
     cout << "Sie haben eine zu niedrige Schrittweite gew\x84hlt!" << endl;
     }
     else
     {
     cout << "Sie haben eine Schrittweite von -" << endl;
     cout << schrittweite << " gew\x84hlt." << endl;
     cout << "Bitte geben sie jetzt den Text ein, den sie Ent-" << endl;
     cout << "schl\x81sseln wollen ein (max. 100 Zeichen):" << endl;
     cin >> text;
     cout << endl;
     cout << text << endl;
     
     weiter[0]=text[0]-schrittweite;
     weiter[1]=text[1]-schrittweite;
     weiter[2]=text[2]-schrittweite;
     weiter[3]=text[3]-schrittweite;
     weiter[4]=text[4]-schrittweite;
     weiter[5]=text[5]-schrittweite;
     weiter[6]=text[6]-schrittweite;
     weiter[7]=text[7]-schrittweite;
     weiter[8]=text[8]-schrittweite;
     weiter[9]=text[9]-schrittweite;
     weiter[10]=text[10]-schrittweite;
     weiter[11]=text[11]-schrittweite; 
     weiter[12]=text[12]-schrittweite; 
     weiter[13]=text[13]-schrittweite;
     weiter[14]=text[14]-schrittweite;
     weiter[15]=text[15]-schrittweite;
     weiter[16]=text[16]-schrittweite;
     weiter[17]=text[17]-schrittweite;
     weiter[18]=text[18]-schrittweite;
     weiter[19]=text[19]-schrittweite;
     weiter[20]=text[20]-schrittweite;
     weiter[21]=text[21]-schrittweite;
     weiter[22]=text[22]-schrittweite;
     weiter[23]=text[23]-schrittweite;
     weiter[24]=text[24]-schrittweite;
     weiter[25]=text[25]-schrittweite;
     weiter[26]=text[26]-schrittweite;
     weiter[27]=text[27]-schrittweite;
     weiter[28]=text[28]-schrittweite;
     weiter[29]=text[29]-schrittweite;
     weiter[30]=text[30]-schrittweite;
     weiter[31]=text[31]-schrittweite;
     weiter[32]=text[32]-schrittweite;
     weiter[33]=text[33]-schrittweite;
     weiter[34]=text[34]-schrittweite;
     weiter[35]=text[35]-schrittweite;
     weiter[36]=text[36]-schrittweite;
     weiter[37]=text[37]-schrittweite;
     weiter[38]=text[38]-schrittweite;
     weiter[39]=text[39]-schrittweite;
     weiter[40]=text[40]-schrittweite;
     weiter[41]=text[41]-schrittweite;
     weiter[42]=text[42]-schrittweite;
     weiter[43]=text[43]-schrittweite;
     weiter[44]=text[44]-schrittweite;
     weiter[45]=text[45]-schrittweite;
     weiter[46]=text[46]-schrittweite;
     weiter[47]=text[47]-schrittweite;
     weiter[48]=text[48]-schrittweite;
     weiter[49]=text[49]-schrittweite;
     weiter[50]=text[50]-schrittweite;
     weiter[51]=text[51]-schrittweite;
     weiter[52]=text[52]-schrittweite;
     weiter[53]=text[53]-schrittweite;
     weiter[54]=text[54]-schrittweite;
     weiter[55]=text[55]-schrittweite;
     weiter[56]=text[56]-schrittweite;
     weiter[57]=text[57]-schrittweite;
     weiter[58]=text[58]-schrittweite;
     weiter[59]=text[59]-schrittweite;
     weiter[60]=text[60]-schrittweite;
     weiter[61]=text[61]-schrittweite;
     weiter[62]=text[62]-schrittweite;
     weiter[63]=text[63]-schrittweite;
     weiter[64]=text[64]-schrittweite;
     weiter[65]=text[65]-schrittweite;
     weiter[66]=text[66]-schrittweite;
     weiter[67]=text[67]-schrittweite;
     weiter[68]=text[68]-schrittweite;
     weiter[69]=text[69]-schrittweite;
     weiter[70]=text[70]-schrittweite;
     weiter[71]=text[71]-schrittweite;
     weiter[72]=text[72]-schrittweite;
     weiter[73]=text[73]-schrittweite;
     weiter[74]=text[74]-schrittweite;
     weiter[75]=text[75]-schrittweite;
     weiter[76]=text[76]-schrittweite;
     weiter[77]=text[77]-schrittweite;
     weiter[78]=text[78]-schrittweite;
     weiter[79]=text[79]-schrittweite;
     weiter[80]=text[80]-schrittweite;
     weiter[81]=text[81]-schrittweite;
     weiter[82]=text[82]-schrittweite;
     weiter[83]=text[83]-schrittweite;
     weiter[84]=text[84]-schrittweite;
     weiter[85]=text[85]-schrittweite;
     weiter[86]=text[86]-schrittweite;
     weiter[87]=text[87]-schrittweite;
     weiter[88]=text[88]-schrittweite;
     weiter[89]=text[89]-schrittweite;
     weiter[90]=text[90]-schrittweite;
     weiter[91]=text[91]-schrittweite;
     weiter[92]=text[92]-schrittweite;
     weiter[93]=text[93]-schrittweite;
     weiter[94]=text[94]-schrittweite;
     weiter[95]=text[95]-schrittweite;
     weiter[96]=text[96]-schrittweite;
     weiter[97]=text[97]-schrittweite;
     weiter[98]=text[98]-schrittweite;
     weiter[99]=text[99]-schrittweite;
     weiter[100]=text[100]-schrittweite;
     cout << weiter << endl; 
     }
     
     }
     
     
     int main()
     {
     cout << "Ein Programm, um Strings mit der Caesar-Verschl\x81sselung zu ent-" << endl; 
     cout << "und verschl\x81sseln" << endl;
     
     cout << "Bitte w\x84hlen sie aus:" << endl;
     cout << "Entschl\x81sseln <1>" << endl;
     cout << "Verschl\x81sseln <2>" << endl;
     cout << "Programm beenden <3>" << endl;
     
     int eingabe;
     cin >> eingabe;
     
     if (eingabe == 1)
     { 
     cout << "Entschl\x81sselungs-Programm" << endl;
     entschluesselungsprogramm();
     }
     else if (eingabe == 2)
     {
     cout << "Verschl\x81sselungs-Programm" << endl;
     verschluesselungsprogramm();
     }
     else if (eingabe == 3)
     { 
     cout << "Dankesch\x94n, und auf Wiedersehen!" << endl;
     }
     
     else 
     {
     cout << "Diese Option steht nicht zur Auswahl!" << endl;
     } 
     
     return 0;
     
     }
     
    
    Und noch eine Frage hätte ich. Wie kann ich denn das hier:
    Code:
    weiter[0]=text[0]-schrittweite;
     weiter[1]=text[1]-schrittweite;
     weiter[2]=text[2]-schrittweite;
     weiter[3]=text[3]-schrittweite;
     weiter[4]=text[4]-schrittweite;
     weiter[5]=text[5]-schrittweite;
     weiter[6]=text[6]-schrittweite;
     weiter[7]=text[7]-schrittweite;
     weiter[8]=text[8]-schrittweite;
     weiter[9]=text[9]-schrittweite;
     weiter[10]=text[10]-schrittweite;
     weiter[11]=text[11]-schrittweite; 
     weiter[12]=text[12]-schrittweite; 
     weiter[13]=text[13]-schrittweite;
     weiter[14]=text[14]-schrittweite;
     weiter[15]=text[15]-schrittweite;
     weiter[16]=text[16]-schrittweite;
     weiter[17]=text[17]-schrittweite;
     weiter[18]=text[18]-schrittweite;
     weiter[19]=text[19]-schrittweite;
     weiter[20]=text[20]-schrittweite;
     weiter[21]=text[21]-schrittweite;
     weiter[22]=text[22]-schrittweite;
     weiter[23]=text[23]-schrittweite;
     weiter[24]=text[24]-schrittweite;
     weiter[25]=text[25]-schrittweite;
     weiter[26]=text[26]-schrittweite;
     weiter[27]=text[27]-schrittweite;
     weiter[28]=text[28]-schrittweite;
     weiter[29]=text[29]-schrittweite;
     weiter[30]=text[30]-schrittweite;
     weiter[31]=text[31]-schrittweite;
     weiter[32]=text[32]-schrittweite;
     weiter[33]=text[33]-schrittweite;
     weiter[34]=text[34]-schrittweite;
     weiter[35]=text[35]-schrittweite;
     weiter[36]=text[36]-schrittweite;
     weiter[37]=text[37]-schrittweite;
     weiter[38]=text[38]-schrittweite;
     weiter[39]=text[39]-schrittweite;
     weiter[40]=text[40]-schrittweite;
     weiter[41]=text[41]-schrittweite;
     weiter[42]=text[42]-schrittweite;
     weiter[43]=text[43]-schrittweite;
     weiter[44]=text[44]-schrittweite;
     weiter[45]=text[45]-schrittweite;
     weiter[46]=text[46]-schrittweite;
     weiter[47]=text[47]-schrittweite;
     weiter[48]=text[48]-schrittweite;
     weiter[49]=text[49]-schrittweite;
     weiter[50]=text[50]-schrittweite;
     weiter[51]=text[51]-schrittweite;
     weiter[52]=text[52]-schrittweite;
     weiter[53]=text[53]-schrittweite;
     weiter[54]=text[54]-schrittweite;
     weiter[55]=text[55]-schrittweite;
     weiter[56]=text[56]-schrittweite;
     weiter[57]=text[57]-schrittweite;
     weiter[58]=text[58]-schrittweite;
     weiter[59]=text[59]-schrittweite;
     weiter[60]=text[60]-schrittweite;
     weiter[61]=text[61]-schrittweite;
     weiter[62]=text[62]-schrittweite;
     weiter[63]=text[63]-schrittweite;
     weiter[64]=text[64]-schrittweite;
     weiter[65]=text[65]-schrittweite;
     weiter[66]=text[66]-schrittweite;
     weiter[67]=text[67]-schrittweite;
     weiter[68]=text[68]-schrittweite;
     weiter[69]=text[69]-schrittweite;
     weiter[70]=text[70]-schrittweite;
     weiter[71]=text[71]-schrittweite;
     weiter[72]=text[72]-schrittweite;
     weiter[73]=text[73]-schrittweite;
     weiter[74]=text[74]-schrittweite;
     weiter[75]=text[75]-schrittweite;
     weiter[76]=text[76]-schrittweite;
     weiter[77]=text[77]-schrittweite;
     weiter[78]=text[78]-schrittweite;
     weiter[79]=text[79]-schrittweite;
     weiter[80]=text[80]-schrittweite;
     weiter[81]=text[81]-schrittweite;
     weiter[82]=text[82]-schrittweite;
     weiter[83]=text[83]-schrittweite;
     weiter[84]=text[84]-schrittweite;
     weiter[85]=text[85]-schrittweite;
     weiter[86]=text[86]-schrittweite;
     weiter[87]=text[87]-schrittweite;
     weiter[88]=text[88]-schrittweite;
     weiter[89]=text[89]-schrittweite;
     weiter[90]=text[90]-schrittweite;
     weiter[91]=text[91]-schrittweite;
     weiter[92]=text[92]-schrittweite;
     weiter[93]=text[93]-schrittweite;
     weiter[94]=text[94]-schrittweite;
     weiter[95]=text[95]-schrittweite;
     weiter[96]=text[96]-schrittweite;
     weiter[97]=text[97]-schrittweite;
     weiter[98]=text[98]-schrittweite;
     weiter[99]=text[99]-schrittweite;
     weiter[100]=text[100]-schrittweite;
    kürzer schreiben? Evtl. sogar mit einer Schleife.
     
  6. 26. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    Ja klar macht der komische Zeichen aufgrund deines Codes, du musst ja auch prüfen wann der eingegeben Text zu ende ist, zZ machst du das ja nicht. Der text wirt mit \0 beendet und wenn du diesen um einen bestimmten Wert schrittweite erhöhst, dann verschiebst du damit autmatisch die Länge deines Textes und die weiteren zufälligen Zeichen aus dem RAM werden auch angezeigt bis halt eine anderes \0 Zeichen kommt.

    ->
    Code:
    int i=0;
    while (text[i] != 0)
    {
     weiter[i]=text[i];
     for (int w=0; w<schrittweite; w++)
     {
     weiter[i]++;
     if (weiter[i] > 0x7A) // größer wie z
     weiter[i]= 0x97; // bei a wieder anfangen
     }
     i++;
    }
    
    Kp ob der Code funktioniert, aber so in etwa sollte der Ansatz sein.

    Mfg Rushh0ur
     
  7. 27. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    Danke dir. Das mit dem ver-/entschlüsseln funktioniert jetzt einwandfrei, aber das mit dem \0 zeichen verstehe ich nicht. Wo muss ich es denn einbauen, um die zeichen zu löschen?
     
  8. 27. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    Ist in meinem Code auch schon eingebaut:
    while (text != 0) -> \0

    Solange das Zeichen ander I'ten Position nicht den Wert 0 hat wird der Text kopiert/bearbeitet.

    Bsp:
    "hallo" -> { 0x68, 0x61, 0x6C, 0x6C, 0x6F, 0x00} <=> 0x00 = Ende

    Mfg Rushh0ur
     
  9. 28. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    irgendwie geht das aber trotzdem nicht

    Code:
    C:\Users\ForceXX\Documents\C++\C++\Caesar>caesar
    Ein Programm, um Strings mit der Caesar-Verschlüsselung zu ent-
    und verschlüsseln
    Bitte wählen sie aus:
    Entschlüsseln <1>
    Verschlüsseln <2>
    Programm beenden <3>
    2
    Verschlüsselungs-Programm
    Bitte geben sie die Schrittweite der Verschlüsselung ein
    4
    Sie haben eine Schrittweite von +
    4 gewählt.
    Bitte geben sie jetzt den Text ein, den sie Ent-
    schlüsseln wollen ein (max. 100 Zeichen):
    mittwoch
    
    mittwoch
    qmxxasgl♦♥&♦╣(÷y1ÙÈ♦♦♦∟♥&♦ͺF♦▄☻&♦d;D♦►¾G♦õ☻&♦TªF♦t☻&♦♦FH♦♥♥♥♥♦♦♦♦─GH♦♦♦♦♦♠♦♦♦│Î
    G♦ä☻&♦³²■*─GH♦d;D♦►
    er verschlüsselt die eingabe zwar, aber danach kommen trotzem noch die zeichen
    Code:
    ♦♥&♦╣(÷y1ÙÈ♦♦♦∟♥&♦ͺF♦▄☻&♦d;D♦►¾G♦õ☻&♦TªF♦t☻&♦♦FH♦♥♥♥♥♦♦♦♦─GH♦♦♦♦♦♠♦♦♦│Î
    G♦ä☻&♦³²■ ─GH♦d;D♦►
     
  10. 29. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    also ich bin zwar kein c++'ler, aber wenn ich das richtig gesehen habe, fügst du das \0 garnicht ans ende an=)
    also die überlegung ist folgende (kommt mir iwie so vor, als würdest du nochnet ganz verstehen, was rushhour dir versucht zu sagen):
    1. du gibst einen string ein
    2. du fügst ein \0 am ende des strings an
    3. du ver-/entschlüsselst den text, bis das \0 vorkommt, quasi als zeichen für 'hey, der eigentliche text ist zuende, hör auf damit'
    4. profit

    quasi wäre das in deinem fall glaube ich folgende stelle:
    cin >> text;
    da müsstest du sowas wie 'cin >> text+'\0';' hinpacken (genaue syntax kenne ich nicht, aber vom prinzip her, da dir dieses 'stop-zeichen' fehlt)...mfg coach
     
  11. 29. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    cin fügt das Nullzeichen automatisch dazu.

    Im Moment kann man nicht mehr sagen, da der Threadersteller die aktuelle Version seines Sourcecodes nicht gepostet hat.
     
  12. 29. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    ok, also völliger schwachfug von mir^^ sry, aber hab ja gesagt ich bin kein c++'ler=)...mfg coach
     
  13. 29. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    so würde ich das machen (ich lern selber grad c)

    Code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    unsigned char cs_limits[2] = { 0x21, 0x7E };
    
    char *cs_encode(const char *str, int step);
    char *cs_decode(const char *str, int step);
    
    /* leert stdin */
    inline void clearbuff() {
     while(getchar() != '\n');
    }
    
    int main(void) {
     printf("Caesar Verschluesselung\nBitte waehlen:\nencode <1>\ndecode <2>\nexit <3>\n\nOption: ");
     
     int action;
     scanf("%d", &action);
     clearbuff();
     
     int step;
     char str[256];
     char *res = NULL;
     
     switch(action) {
     case 1:
     printf("\nBitte Text eingeben: ");
     gets(str);
     
     printf("Bitte Schrittweite eingeben: ");
     scanf("%d", &step);
     clearbuff();
     
     res = cs_encode(str, step);
     printf("Neuer Text: %s", res);
     free(res);
     return 0;
     
     case 2:
     printf("\nBitte Text eingeben: ");
     gets(str);
     
     printf("Bitte Schrittweite eingeben: ");
     scanf("%d", &step);
     clearbuff();
     
     res = cs_decode(str, step);
     printf("Text: %s", res);
     free(res);
     return 0;
    
     case 3:
     printf("Exit");
     return 0;
     
     default:
     printf("Unbekannte Option");
     return 1;
     }
    }
    
    /**
    * encode
    *
    * @param char *str
    * @param int step
    * @return char *
    */
    char *cs_encode(const char *str, int step) {
     int i, l = strlen(str);
     char *new = (char *) malloc(sizeof(char) * l);
     
     for(i = 0; i < l; ++i) {
     char c = str[i];
     
     if(c < cs_limits[0] || c > cs_limits[1]) {
     /* diese zeichen bleiben wie sie sind */
     new[i] = c;
     continue;
     }
     
     char p = c + step;
     if(p >= cs_limits[1])
     p = cs_limits[0] + (p - cs_limits[1]) - 1;
     
     new[i] = p;
     }
     
     new[l] = '\0';
     return new;
    }
    
    /**
    * decode
    *
    * @param char *str
    * @param int step
    * @return char *
    */
    char *cs_decode(const char *str, int step) {
     int i, l = strlen(str);
     char *new = (char *) malloc(sizeof(char) * l);
     
     for(i = 0; i < l; ++i) {
     char c = str[i];
     
     if(c < cs_limits[0] || c > cs_limits[1]) {
     /* diese zeichen wurden nicht vertauscht */
     new[i] = c;
     continue;
     }
     
     char p = c - step;
     if(p < cs_limits[0])
     p = cs_limits[1] - (p + cs_limits[0]);
     
     new[i] = p;
     }
     
     new[l] = '\0';
     return new;
    }
    
    
    
    i/o ist ein wenig anders, aber das kann man sich ja für c++ umschreiben

    //edit: für groß/kleinschreibung:
    Spoiler
    Code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    char cs_limits[2][2] = { 
     /* A-Z */
     { 0x41, 0x5A },
     
     /* a-z */
     { 0x61, 0x7A }
    };
    
    char *cs_encode(const char *str, int step);
    char *cs_decode(const char *str, int step);
    
    /* leert stdin */
    inline void clearbuff() {
     while(getchar() != '\n');
    }
    
    int main(void) {
     printf("Caesar Verschluesselung\nBitte waehlen:\nencode <1>\ndecode <2>\nexit <3>\n\nOption: ");
     
     int action;
     scanf("%d", &action);
     clearbuff();
     
     int step;
     char str[256];
     char *res = NULL;
     
     if(action >= 3) {
     printf("exit%s", (action > 3 ? ": unbekannte option" : ""));
     return 0;
     }
     
     printf("\nBitte Text eingeben: ");
     gets(str);
     
     do {
     printf("Bitte Schrittweite eingeben: ");
     scanf("%d", &step);
     clearbuff();
     
     if(step > 26)
     printf("Maximal 26 erlaubt!\n");
     if(step <= 0)
     printf("Minimum ist 1\n"); 
     } while(step <= 0 || step > 26);
     
     res = (action == 1 ? cs_encode : cs_decode)(str, step);
     printf("Text: %s", res);
     free(res);
     return 0;
    }
    
    /**
    * encode
    *
    * @param char *str
    * @param int step
    * @return char *
    */
    char *cs_encode(const char *str, int step) {
     int i, l = strlen(str);
     char *new = (char *) malloc(sizeof(char) * l);
     
     for(i = 0; i < l; ++i) {
     char c = str[i];
     
     if(c < cs_limits[0][0] || (c > cs_limits[0][1] 
     && c < cs_limits[1][0]) || c > cs_limits[1][1]) {
     /* diese zeichen bleiben wie sie sind */
     new[i] = c;
     continue;
     }
     
     unsigned short p = c + step;
     if(p > cs_limits[1][1]) 
     /* wenn zeichen p > 'z' -> verwende A-Z */
     p = cs_limits[0][0] + (p - cs_limits[1][1]) - 1;
     else if(p > cs_limits[0][1] && p < cs_limits[1][0])
     /* wenn zeichen p > 'Z' und < 'a' -> verwende a-z */
     p = cs_limits[1][0] + (p - cs_limits[0][1]) - 1;
     
     new[i] = p;
     }
     
     new[l] = '\0';
     return new;
    }
    
    /**
    * decode
    *
    * @param char *str
    * @param int step
    * @return char *
    */
    char *cs_decode(const char *str, int step) {
     int i, l = strlen(str);
     char *new = (char *) malloc(sizeof(char) * l);
     
     for(i = 0; i < l; ++i) {
     char c = str[i];
     
     if(c < cs_limits[0][0] || (c > cs_limits[0][1] 
     && c < cs_limits[1][0]) || c > cs_limits[1][1]) {
     /* diese zeichen wurden nicht vertauscht */
     new[i] = c;
     continue;
     }
     
     unsigned short p = c - step;
     if(p < cs_limits[0][0])
     /* wenn zeichen p < 'A' -> verwende a-z */
     p = cs_limits[1][1] + p - cs_limits[0][0] + 1;
     else if(p < cs_limits[1][0] && p > cs_limits[0][1])
     /* wenn zeichen p < 'a' und > 'Z' -> verwende A-Z */
     p = cs_limits[0][1] + p - cs_limits[1][0] + 1;
     
     new[i] = p;
     }
     
     new[l] = '\0';
     return new;
    }
    
    
    
    
    
     
  14. 29. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    hey, ich habs jetzt geschafft dank der hilfe von Rushh0ur
    hier nochmal der komplette code

    Code:
    //Caesar.cpp - Ein Programm, um Strings mit der Caesar-Verschluesselung zu ent- und verschluesseln
    #include <iostream>
    using namespace std;
    
     void verschluesselungsprogramm()
     {
     int schrittweite;
     char text[100];
     char weiter[100];
     cout << "Bitte geben sie die Schrittweite der Verschl\x81sselung ein" 
     << endl;
     cin >> schrittweite;
     if (schrittweite>26)
     {
     cout << "Sie haben eine zu gro\xE1" << "e Schrittweite gew\x84hlt!" << endl;
     }
     else if (schrittweite<1)
     {
     cout << "Sie haben eine zu niedrige Schrittweite gew\x84hlt!" << endl;
     }
     else
     {
     cout << "Sie haben eine Schrittweite von +" << endl;
     cout << schrittweite << " gew\x84hlt." << endl;
     cout << "Bitte geben sie jetzt den Text ein, den sie Ent-" << endl;
     cout << "schl\x81sseln wollen ein (max. 100 Zeichen):" << endl;
     cin >> text;
     cout << endl;
     cout << text << endl;
     
     
     
     }
     int i=0;
     while (text[i] != 0)
     {
     weiter[i]=text[i];
     
     for (int w=0; w<schrittweite; w++)
     {
     weiter[i]++;
     if (weiter[i] > 0x7A) // größer wie z
     weiter[i]= 0x61; // bei a wieder anfangen
     }
     i++;
     }
     cout << weiter << endl;
     
     }
     
     void entschluesselungsprogramm()
     {
     int schrittweite;
     char text[100];
     char weiter[100];
     cout << "Bitte geben sie die Schrittweite der Entschl\x81sselung ein" << endl;
     cin >> schrittweite;
     
     if (schrittweite>26)
     {
     cout << "Sie haben eine zu gro\xE1" << "e Schrittweite gew\x84hlt!" << endl;
     }
     else if (schrittweite<1)
     {
     cout << "Sie haben eine zu niedrige Schrittweite gew\x84hlt!" << endl;
     }
     else
     {
     cout << "Sie haben eine Schrittweite von -" << endl;
     cout << schrittweite << " gew\x84hlt." << endl;
     cout << "Bitte geben sie jetzt den Text ein, den sie Ent-" << endl;
     cout << "schl\x81sseln wollen ein (max. 100 Zeichen):" << endl;
     cin >> text;
     cout << endl;
     cout << text << endl;
     
     
     }
     
     int i=0;
     while (text[i] != 0)
     {
     weiter[i]=text[i];
     
     for (int w=0; w<schrittweite; w++)
     {
     weiter[i]--;
     if (weiter[i] < 0x61) // größer wie z
     weiter[i]= 0x7A; // bei a wieder anfangen
     }
     i++;
     }
     cout << weiter << endl;
     
     }
     
     
     int main()
     {
     cout << "Ein Programm, um Strings mit der Caesar-Verschl\x81sselung zu ent-" << endl; 
     cout << "und verschl\x81sseln" << endl;
     
     cout << "Bitte w\x84hlen sie aus:" << endl;
     cout << "Entschl\x81sseln <1>" << endl;
     cout << "Verschl\x81sseln <2>" << endl;
     cout << "Programm beenden <3>" << endl;
     
     int eingabe;
     cin >> eingabe;
     
     if (eingabe == 1)
     { 
     cout << "Entschl\x81sselungs-Programm" << endl;
     entschluesselungsprogramm();
     }
     else if (eingabe == 2)
     {
     cout << "Verschl\x81sselungs-Programm" << endl;
     verschluesselungsprogramm();
     }
     else if (eingabe == 3)
     { 
     cout << "Dankesch\x94n, und auf Wiedersehen!" << endl;
     }
     
     else 
     {
     cout << "Diese Option steht nicht zur Auswahl!" << endl;
     } 
     
     return 0;
     
     }
     
    
    danke an alle nochmal

    PS: noch ne frage. Wie kann man sich denn am besten C++ oder andere Sprachen beibringen. Durch Bücher oder Kurse, etc...?
    Würde mich interessieren, weil ich es mir momentan alleine beibringe.

    mfg

    ForceXX
     
  15. 29. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    Das kann man pauschal schlecht sagen.
    Meiner Meinung nach: Durch Coden. Erst einfache Programme, dann mal etwas komplexer, wenn man nicht weiterweiss Google oder ein Buch befragen - und am Besten Programme mit denen man selbst was anfangen kann, da ist man motivierter - learning by doing.
    Aber das ist bei jedem anders, ein gutes Buch kann einem den Start auf jeden Fall erleichtern.

    GreetZ, ~Br4inP4in~
     
  16. 30. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    coden coden coden und das handwerkszeug lernen.
    ich studiere den spaß gerade und ich sehe wie viel einfacher es ist wenn du dir vorher gedanken machst und alles planst. zumindest wenn es um projekte mit etwas größeren dimensionen geht.

    schreib dir für alles nen programm und habe den anspruch an deine arbeit das sie sehr gut sein muss.
     
  17. 30. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    jops, coden und vorher planen, was es für ausnahmefälle geben kann und die beachten^^...mfg coach
     
  18. 30. April 2010
    AW: Caesar-Verschlüsselungsprogramm in C++

    Falls hier jemand an der Caesar Verschlüsselung interessiert ist in C
    Meine Version in C#

    Spoiler
    Code:
    Benötigt:
    textbox1
    textbox2
    Button
    
    
    Rauskopieren, Ausprobieren, Kritisieren (konstruktiv)
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Verschlüsselung
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    
    
    
    private void button1_Click(object sender, EventArgs e)
    {
    // Eingabe:
    string a = textBox1.Text; // String aus textbox1
    string b = ""; // erzeugt string b ohne Wert
    b = "";
    if (a == "") { MessageBox.Show("Verschlüsselung ohne Werte ist nicht möglich"); } //
    for (int i = 0; i < a.Length; i++)
    {
    if (Convert.ToString(a[i]) == "a")
    {
    b = b + "b";
    }
    else if (Convert.ToString(a[i]) == "b")
    {
    b = b + "c";
    }
    else if (Convert.ToString(a[i]) == "c")
    {
    b = b + "d";
    }
    else if (Convert.ToString(a[i]) == "d")
    {
    b = b + "e";
    }
    else if (Convert.ToString(a[i]) == "e")
    {
    b = b + "f";
    }
    else if (Convert.ToString(a[i]) == "f")
    {
    b = b + "g";
    }
    else if (Convert.ToString(a[i]) == "g")
    {
    b = b + "h";
    }
    else if (Convert.ToString(a[i]) == "h")
    {
    b = b + "i";
    }
    else if (Convert.ToString(a[i]) == "i")
    {
    b = b + "j";
    }
    else if (Convert.ToString(a[i]) == "j")
    {
    b = b + "k";
    }
    else if (Convert.ToString(a[i]) == "k")
    {
    b = b + "l";
    }
    else if (Convert.ToString(a[i]) == "l")
    {
    b = b + "m";
    }
    else if (Convert.ToString(a[i]) == "m")
    {
    b = b + "n";
    }
    else if (Convert.ToString(a[i]) == "n")
    {
    b = b + "o";
    }
    else if (Convert.ToString(a[i]) == "o")
    {
    b = b + "p";
    }
    else if (Convert.ToString(a[i]) == "p")
    {
    b = b + "q";
    }
    else if (Convert.ToString(a[i]) == "q")
    {
    b = b + "r";
    }
    else if (Convert.ToString(a[i]) == "r")
    {
    b = b + "s";
    }
    else if (Convert.ToString(a[i]) == "s")
    {
    b = b + "t";
    }
    else if (Convert.ToString(a[i]) == "t")
    {
    b = b + "u";
    }
    else if (Convert.ToString(a[i]) == "u")
    {
    b = b + "v";
    }
    else if (Convert.ToString(a[i]) == "v")
    {
    b = b + "w";
    }
    else if (Convert.ToString(a[i]) == "w")
    {
    b = b + "x";
    }
    else if (Convert.ToString(a[i]) == "x")
    {
    b = b + "y";
    }
    else if (Convert.ToString(a[i]) == "y")
    {
    b = b + "z";
    }
    else if (Convert.ToString(a[i]) == "z")
    {
    b = b + "a";
    }
    else if (Convert.ToString(a[i]) == " ")
    {
    b = b + " ";
    }
    }
    
    
    // Ausgabe
    textBox2.Text = b;
    }
    }
    }
    
    

    Zu meinem Quelltext muss ich noch dazu sagen, dass ich zu diesem Zeitpunkt noch nicht wusste, dass man den ASCII Wert einfach eins hoch oder runter zählen kann, um den nächsten Buchstaben zu erreichen. Ein Quelltext für diesen Verschlüsselungsalgorytmus in C# hab ich noch nicht programmiert.
     
  19. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.