1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Caesar Verschlüsselung - Algorithmus für C++ ?

Dieses Thema im Forum "C/C++" wurde erstellt von Cyraid, 30. Mai 2006.

  1. Cyraid

    Cyraid Grünschnabel

    Guten Abend,

    Ich bin gerade dabei mit C++ eine Caesar Verschlüsselung (aus a wird b, aus b wird c usw.) zu erstellen. Allerdings bin ich noch nicht sehr erfahren in C++, daher könnte ich etwas Hilfe gebrauchen! :(
    Wisst ihr vielleicht, wo es einen solchen Algorithmus für C++ bereits gibt?

    Viele Grüße,
    Cyraid
  2. Buba235

    Buba235 Erfahrenes Mitglied

  3. Cyraid

    Cyraid Grünschnabel

    Hallo!

    Danke für deine Antwort Buba235! :)
    Ich habe mir den Link angeschaut, aber komme leider nicht ganz zurecht damit.
    Meine C++ Kentnisse sind wohl noch nicht ausreichend genug dafür.. :(

    Damit ihr euch ein Bild von meinem bisherigen Programm machen könnt, hier mal der Code:
    Code (Text):
    1.  
    2. // main.cpp - Caesar Verschiebung
    3.  
    4. #include <iostream>
    5. #include <conio>
    6. #include <stdio>
    7.  
    8. using namespace std;
    9.  
    10. int main()
    11. {
    12.   int auswahl, i = 0;
    13.   char klartext[50], geheimtext[50];
    14.  
    15.   do
    16.   {
    17.     for(i = 0; i <= 50; i++)
    18.     {
    19.       klartext[i] = ' ';
    20.       geheimtext[i] = ' ';
    21.     }
    22.  
    23.     i = 0;
    24.  
    25.     clrscr();
    26.     cout << endl;
    27.     cout << "- Caesar Verschiebung -  v1.0" << endl << endl;
    28.     cout << "Menueauswahl:" << endl;
    29.     cout << "Nachricht verschluesseln   [1]" << endl;
    30.     cout << "Nachricht entschluesseln   [2]" << endl;
    31.     cout << "Programm beenden           [3]" << endl << endl;
    32.     cout << "Ihre Auswahl: ";
    33.     cin  >> auswahl;
    34.  
    35.     switch(auswahl)
    36.     {
    37.       case 1: cout << "Bitte zu entschluesselnde Nachricht (max. 50 Zeichen) eingeben: " << endl;
    38.               cin  >> klartext;
    39.  
    40.               while (klartext != '\0')
    41.               {
    42.                 geheimtext[i] = ((klartext[i] + 1) % 256);
    43.                 i++;
    44.               }
    45.  
    46.               cout << "Verschluesselte Nachricht lautet: " << endl << geheimtext << endl;
    47.  
    48.               break;
    49.  
    50.       case 2: cout << "Bitte zu entschluesselnde Nachricht (max. 50 Zeichen) eingeben: " << endl;
    51.               cin  >> geheimtext;
    52.  
    53.               while (geheimtext != '\0')
    54.               {
    55.                 klartext[i] = (geheimtext[i] - 1);
    56.                 i++;
    57.               }
    58.  
    59.               cout << "Entschluesselte Nachricht lautet: " << endl << klartext << endl;
    60.  
    61.               break;
    62.     }
    63.   } while(auswahl != 3);
    64.  
    65.  
    66.   return 0;
    67.  
    Ich weiss, er ist sehr umständlich geschrieben, aber besser habe ich es nicht hinbekommen...
    - Das Programm soll ein Menü beinhalten, in dem man sich entscheiden kann, ob man eine Nachricht ver- oder entschlüsseln will. (Verschiebung um 1. Stelle im Alphabet)
    - Die Nachricht soll man eingeben können und darauf soll sie direkt ver- oder entschlüsselt angezeigt werden.

    Nur leider klappt das mit meinem Programm hinten und vorne noch nicht!
    Ich bekomme Fehlermeldungen wegen irgendwelchen Zugriffsverletzungen..

    Könnt ihr mir weiterhelfen? :confused:

    Viele Grüße,
    Cyraid
  4. Buba235

    Buba235 Erfahrenes Mitglied

  5. Flegmon

    Flegmon Erfahrenes Mitglied

    Das Problem ist deine Schleife (sowohl beim ver- als auch beim entschlüsseln)

    [c]
    i = 0;
    ......
    while (klartext != '\0')
    {
    geheimtext = ((klartext + 1) % 256);
    i++;
    }
    [/c]


    1. wenn du eine Laufvariable nutzt, dann mach mal besser eine for schleife
    2. klartext ist nur ein Zeiger. So wie du das nutzen willst musst du noch bestimmen, welche Stelle von dem Array verglichen werden soll
    3. das %256 kannst du dir sparen. char reicht nur von -128 bis 127. Wenn du einen Wert über 127 speicherst wird daraus von alleine einer aus dem negativen bereich

    das ganze könnte dann so aussehen
    [c]
    for(int i = 0; klartext != '\0'; i++)
    {
    geheimtext = klartext+1;
    }
    [/c]

    soll das z eigentlich zu einem a werden? denn so wie du das atm machst, wird z nicht zu a
  6. Cyraid

    Cyraid Grünschnabel

    @Buba235

    Vielen Dank für den Link. Ich habe mich dort umgeschaut und viele gute Ansätze und Tipps gefunden! :)

    @Flegmon

    Danke, dass du dir die Mühe gemacht hast, mein Programm anzuschauen!
    Du hast Recht, was die Schleifen betrifft. Ich habe daher mein Programm noch einmal überarbeitet.
    Voilà:

    Code (Text):
    1.  
    2. // main.cpp - Caesar Verschiebung
    3.  
    4. #include <iostream>
    5. #include <conio>
    6. #include <stdio>
    7.  
    8. using namespace std;
    9.  
    10. int main()
    11. {
    12.   int auswahl, i = 0;
    13.   char klartext[50], geheimtext[50];
    14.  
    15.   do
    16.   {
    17.     for(i = 0; i <= 50; i++)
    18.     {
    19.       klartext[i] = ' ';
    20.       geheimtext[i] = ' ';
    21.     }
    22.  
    23.     clrscr();
    24.     cout << endl;
    25.     cout << "\n- Caesar Verschiebung -  v1.0" << endl << endl;
    26.     cout << "Menueauswahl:" << endl;
    27.     cout << "Nachricht verschluesseln   [1]" << endl;
    28.     cout << "Nachricht entschluesseln   [2]" << endl;
    29.     cout << "Programm beenden           [3]" << endl << endl;
    30.     cout << "Ihre Auswahl: ";
    31.     cin  >> auswahl;
    32.  
    33.     switch(auswahl)
    34.     {
    35.       case 1: cout << "Bitte zu entschluesselnde Nachricht (max. 50 Zeichen) eingeben: " << endl;
    36.               cin  >> klartext;
    37.  
    38.               for(i = 0; klartext[i] != '\0'; i++)
    39.               {
    40.                 if(klartext[i] == 'z')
    41.                 {
    42.                   geheimtext[i] = 'a';
    43.                 }
    44.                 else
    45.                 {
    46.                   if(klartext[i] == 'Z')
    47.                   {
    48.                     geheimtext[i] = 'A';
    49.                   }
    50.                   else
    51.                   {
    52.                     geheimtext[i] = klartext[i] + 1;
    53.                   }
    54.                 }
    55.               }
    56.  
    57.               cout << "Verschluesselte Nachricht lautet: " << endl << geheimtext << endl;
    58.  
    59.               break;
    60.  
    61.       case 2: cout << "\nBitte zu entschluesselnde Nachricht (max. 50 Zeichen) eingeben: " << endl;
    62.               cin  >> geheimtext;
    63.  
    64.               for(i = 0; geheimtext[i] != '\0'; i++)
    65.               {
    66.                 if(geheimtext[i] == 'a')
    67.                 {
    68.                   klartext[i] = 'z';
    69.                 }
    70.                 else
    71.                 {
    72.                   if(geheimtext[i] == 'A')
    73.                   {
    74.                     klartext[i] = 'Z';
    75.                   }
    76.                   else
    77.                   {
    78.                     klartext[i] = geheimtext[i] - 1;
    79.                   }
    80.                 }
    81.               }
    82.  
    83.               cout << "Entschluesselte Nachricht lautet: " << endl << klartext << endl;
    84.  
    85.               break;
    86.     }
    87.   } while(auswahl != 3);
    88.  
    89.  
    90.   return 0;
    91. }
    92.  
    Mit deinem Tipp funktioniert es recht gut.
    Ich habe zusätzlich 2 if-Verzweigungen eingebaut, um dem Problem, dass z nicht zu a wird, zu entgehen. Meine Lösung scheint mir aber nicht sehr elegant..

    Ein weiteres Problem besteht darin, dass meine Zeichenanzahl auf 50 beschränkt ist. Wie kann ich sie unbeschränkt machen bzw. so einstellen, dass sie sich daraus ergibt, wieviel man eingibt?

    Muss ich außerdem den Array klartext und geheimtext in einer for-Schleife durchlaufen lassen, um alle Zeichen auf "leer" zu setzen? :confused:
    So wie ich es hier, am Anfang des Progamms, gemacht habe:

    Code (Text):
    1.  
    2.     for(i = 0; i <= 50; i++)
    3.     {
    4.       klartext[i] = ' ';
    5.       geheimtext[i] = ' ';
    6.     }
    7.  
    Beste Grüße :)
    Cyraid
  7. Flegmon

    Flegmon Erfahrenes Mitglied

    es wird sich kaum eleganter lösen lassen

    du hast hier verschiedene möglichkeiten. Die einfachste wäre wohl die Verwendung von std::string, da brauchst du dir um sowas eigentlich keine gedanken zu machen.
    Außerdem kannst du mit dem [] immer noch wie von arrays gewohnt umgehen

    Kurz zur verwendung

    Code (C++):
    1.  
    2. #include <string> // NICHT string.h
    3.  
    4. using namespace std; // damit du nicht std::string schreiben musst
    5.  
    6. string text;
    7.  
    8. cin>>text;
    9.  
    10.  
    11. /*
    12. zum Zugriff hast du mehrere Möglichkeiten (hier nur ein paar)
    13.  
    14. 1. du kannst mit string[n] auf die stelle n zugreifen (wie bei einem array)
    15.  
    16. 2. du kannst += benutzen um etwas hinzuzufügen (ans Ende)
    17.  
    18. string s;
    19. s += "Hallo";
    20. s += '1';
    21.  
    22. 3. wenn du nur 1 Zeichen hinzufügen willst (ans Ende), kannst du push_back benutzen
    23.  
    24. s.push_back('a');
    25.  
    26. du musst nur drauf achten, bei einem Zeichen ' ' und bei mehreren " " zu benutzen
    27.  
    28. Zugriff kann zB. so erfolgen
    29. */
    30.  
    31. for(int i = 0; i < klarText.length(); i++)
    32. {
    33.    geheimText.push_back(klarText[i] + 1);
    34. }
    35.  
    36.  
    wenn du ihn leer haben willst, ist das die einzige methode. Aber normalerweiße braucht man einen string nicht leeren
  8. Cyraid

    Cyraid Grünschnabel

    @Flegmon

    Vielen Dank für deine ausführlich Antwort und Erklärung! :)

    Das mit string ist eine gute Idee. Mit push_back() klappt das auch wunderbar, allerdings ergibt sich daraus ein neues Problem.
    Wenn mein Programm einmal durchgelaufen ist und man noch einmal auswählt eine Nachricht entschlüsseln zu wollen, werden die weiteren Zeichen an die der vorigen Nachricht dran gehängt, was natürlich sehr störend ist.

    Um das zu vermeiden habe ich mir überlegt (wie du es auch schon erwähnt hast), den string wie ein array zu benutzen.
    Also folgendermaßen:

    Code (Text):
    1.  
    2.               for(i = 0; i < klartext.length(); i++)
    3.               {
    4.                 geheimtext[i] = klartext[i] + 1;
    5.               }
    6.  
    7.               cout << "Verschluesselte Nachricht lautet: " << endl << geheimtext << endl;
    8.  
    Daraufhin wird mir allerdings nichts ausgegeben, als wäre nichts in geheimtext geschrieben worden. Habe ich einen Fehler bei der Verwendungs des strings gemacht? Mir wird kein Fehler angezeigt..


    Hier noch einmal mein komplettes Programm (Die Entschlüsselung ist noch beim alten):

    Code (Text):
    1.  
    2. // main.cpp - Caesar Verschiebung
    3.  
    4. #include <iostream>
    5. #include <conio>
    6. #include <stdio>
    7. #include <string>
    8.  
    9. using namespace std;
    10.  
    11. int main()
    12. {
    13.   int auswahl, i = 0;
    14.   string klartext, geheimtext;
    15.  
    16.   do
    17.   {
    18.     clrscr();
    19.     cout << endl;
    20.     cout << "\n- Caesar Verschiebung -  v1.0" << endl << endl;
    21.     cout << "Menueauswahl:" << endl;
    22.     cout << "Nachricht verschluesseln   [1]" << endl;
    23.     cout << "Nachricht entschluesseln   [2]" << endl;
    24.     cout << "Programm beenden           [3]" << endl << endl;
    25.     cout << "Ihre Auswahl: ";
    26.     cin  >> auswahl;
    27.  
    28.     switch(auswahl)
    29.     {
    30.       case 1: cout << "Bitte zu entschluesselnde Nachricht (max. 50 Zeichen) eingeben: " << endl;
    31.               cin  >> klartext;
    32.  
    33.               for(i = 0; i < klartext.length(); i++)
    34.               {
    35.                 geheimtext[i] = klartext[i] + 1;
    36.               }
    37.  
    38.               cout << "Verschluesselte Nachricht lautet: " << endl << geheimtext << endl;
    39.  
    40.               break;
    41.  
    42.       case 2: cout << "\nBitte zu entschluesselnde Nachricht (max. 50 Zeichen) eingeben: " << endl;
    43.               cin  >> geheimtext;
    44.  
    45.               for(i = 0; geheimtext[i] != '\0'; i++)
    46.               {
    47.                 if(geheimtext[i] == 'a')
    48.                 {
    49.                   klartext[i] = 'z';
    50.                 }
    51.                 else
    52.                 {
    53.                   if(geheimtext[i] == 'A')
    54.                   {
    55.                     klartext[i] = 'Z';
    56.                   }
    57.                   else
    58.                   {
    59.                     klartext[i] = geheimtext[i] - 1;
    60.                   }
    61.                 }
    62.               }
    63.  
    64.               cout << "Entschluesselte Nachricht lautet: " << endl << klartext << endl;
    65.  
    66.               break;
    67.     }
    68.   } while(auswahl != 3);
    69.  
    70.  
    71.   return 0;
    72. }
    73.  
    Viele Grüße,
    Cyraid
  9. Flegmon

    Flegmon Erfahrenes Mitglied

    Der string speichert intern seine länge. Wenn du mit [] die einzelnen zeichen setzt, verhindert der string, dass es eine zugriffsverletzung gibt, da es ja über die gespeicherte länge hinausgeht.

    Wenn du den string löschen willst mach einfach string = "";
  10. Cyraid

    Cyraid Grünschnabel

    @Flegmon

    Danke für deine Antwort! :)

    Deine Antwort macht Sinn, eines ist mir dabei allerdings nicht ganz klar.
    Der String sieht also eine Zugriffsverletzung, wenn ich mit [] ein einzelnes Zeichen setze.
    Welche Länge bzw. welchen Speicher sieht er als verletzt, wenn ich ihn doch ohne Angabe einer Länge deklariert habe?

    Code (Text):
    1.  
    2.   string klartext, geheimtext;
    3.  
    Müsste die Länge des Strings sich nicht erst durch die Eingabe des Benutzers ergeben :confused:

    Viele Grüße,
    Cyriad
  11. Flegmon

    Flegmon Erfahrenes Mitglied

    Ich hab mal nachgeschaut im Source Code.

    Also mit der länge meine ich, die Länge der gespeicherten Daten.
    Beim [] wird aber nicht überprüft, ob es eine Verletzung gibt. Mein Fehler sry.
    Intern ist der string auch nur ein Array. Der hat am anfang eine gewisse größe (ich glaub je nach pc anders, aber passen schon recht viel zeichen rein). Und sobald man zuweit schreibt (also über die größe des Arrays hinaus) block die string Klasse das.

    Ich hab jetzt nicht genauer nachgeschaut, wie die string klasse aufgebaut ist.
    Wenn es dich interresiert, dann kannst du mal bei deinem include verzeichnis schauen,
    da kannst du den ganzen source der stl anschauen.
  12. Cyraid

    Cyraid Grünschnabel

    @Flegmon

    Ich versuche gerade das Programm mit dieser Variante zum Laufen zu bringen:

    Code (Text):
    1.  
    2.               for(i = 0; i < klartext.length(); i++)
    3.               {
    4.                 geheimtext[i] = klartext[i] + 1;
    5.               }
    6.  
    7.               cout << "Verschluesselte Nachricht lautet: " << geheimtext << endl;
    8.  
    Allerdings bekomme ich keine Ausgabe des Strings geheimtext, stattdessen eine Meldung
    "main.cpp": W8012 Vergleich von signed- und unsigned-Werten in Funktion main() in Zeile 32".

    Zeile 32 ist folgende:

    Code (Text):
    1.  
    2.               for(i = 0; i < klartext.length(); i++)
    3.  
    Ob dadurch nichts in den String geheimtext geschrieben wird?
    Wie könnte man diesen Fehler beheben?


    Zum include Verzeichnis und dem Source Code.
    Ich kann dir da nur teilweise folgen, da stößt mein C++ Wissen leider schon an seine Grenzen. :(
    Ich habe einen Blick in die header-Datei von string riskiert, kann aber nicht viel mit dem Inhalt anfangen.

    Viele Grüße,
    Cyraid
  13. Flegmon

    Flegmon Erfahrenes Mitglied

    zu den headern,

    wenn du dev-c++ benutzt, kannst du nich viel in dem header nachschauen, da dort der Zeilenumbruch nicht richtig angezeigt wird. Aber wenn du noch keine templates kennst,
    bringt es dir sowieso noch nicht viel da zu schauen.

    Zu deinem Problem. Die Meldung ist nur eine Warnung, es sollte trotzdem funktioniere.
    Nutze lieber die Variante davor und setze die string nach jedem durchlauf zurück...
  14. Cyraid

    Cyraid Grünschnabel

    @Flegmon

    Erstmal: Danke wieder für deine Antwort! :)

    Ich benutze den C++ BuilderX. Die Header-Dateien werden mir mit Zeilenumbruch, also richtig, dargestellt. Ich verstehe allerdings trotzdem nicht sehr viel davon, nur sehr sehr vage.

    Ich habe, wie du vorgeschlagen hast, wieder die vorherige Variante benutzt, die mit push_back(). Funktioniert auch einwandfrei, nur komme ich nun wieder an mein altes Problem..
    Ich musste nämlich auch bei dieser Variante wieder auf ein paar Zeichen mittels [] zugreifen, um von 'z' zu 'a' zu kommen. Doch das funktioniert, wie oben schon, leider nicht.
    So sieht meine for-Schleife zur Verschluesselung nun aus:

    Code (Text):
    1.  
    2.               for(i = 0; i < klartext.length(); i++)
    3.               {
    4.                 if(klartext[i] == 'z')
    5.                 {
    6.                   geheimtext[i] = 'a';
    7.                 }
    8.                 else
    9.                 {
    10.                   if(klartext[i] == 'Z')
    11.                   {
    12.                     geheimtext[i] = 'A';
    13.                   }
    14.                   else
    15.                   {
    16.                     geheimtext.push_back(klartext[i] + 1);
    17.                   }
    18.                 }
    19.               }
    Wenn ich bei dieser Variante ein 'z' eingebe passiert, so scheint es, im geheimtext String nichts.

    Hier ein Auszug aus dem laufenden Programm:

    Bitte zu entschluesselnde Nachricht (max. 50 Zeichen) eingeben:
    abza
    Verschluesselte Nachricht lautet: bcb

    Wie du siehst, wird die Stelle mit dem 'z' bei der Verschlüsselung ganz übersprungen.
    Wo steckt der Fehler?
    Oder gibt es eine Möglichkeit das zu umgehen?

    Viele Grüße,
    Cyraid
  15. Flegmon

    Flegmon Erfahrenes Mitglied

    Ich habs jetzt mal ausprobiert. Das problem is wirklich das, dass er intern die länge speichert. Hab aber einen sehr einfachen weg gefunden es zu umgehen. Man kann die länge nämlich manuel ändern.

    Versuchs mal mit

    geheimtext._Mysize++;

    nach geheimtext = 'A';
    das könnte evtl. funktionieren

    EDIT: da fällt mir ein, warum baust du nicht schon beim verschlüsseln folgendes ein:

    Code (C++):
    1.  
    2. if(klartext[i] == 'z')
    3.   geheimtext.push_back('a');
    4. else
    5.  geheimtext.push_back(klartext[i]+1);
    6.  
    Zuletzt bearbeitet: 7. Juni 2006
  16. Cyraid

    Cyraid Grünschnabel

    Beim geheimtext habe ich probiert die Funktion mysize zu verwenden, klappt aber nicht so richtig..
    Da kommt bei mir eine Fehlermeldung.

    Ist aber nicht weiter schlimm, denn dein anderer Vorschlag, bereits bei der If-Verzweigung push_back einzubauen klappt perfekt!
    Aber erst einmal darauf kommen... ganz nach dem Motto:
    Warum einfach, wenn es auch kompliziert geht? ;)


    So, nun gibt es noch ein letztes kleines Problem.
    (Der Thread nähert sich dem Ende ;) )
    Damit die verschlüsselte Nachricht auch noch zu lesen ist und nicht gleich das Menü wieder kommt, habe ich folgendes eingebaut:

    Code (Text):
    1.  
    2.               cout << "\n\t- Beliebige Taste zum Fortfahren drücken -" << endl;
    3.               cin  >> taste;
    4.  
    Die Variable "taste" ist eine integer Variable.
    Das mit dem Taste drücken funktioniert damit allerdings nur begrenzt. Denn damit es weiter geht muss man eine Zahl eingeben und anschließend auf Enter drücken.
    Was muss ich tun, damit man tatsächlich nur eine beliebige Taste drücken muss?

    Viele Grüße,
    Cyraid
  17. deepthroat

    deepthroat Premium-User

    Hi.
    Mit einem vernünftigen Editor werden die Dateien auch richtig angezeigt.
    Wozu soll das denn gut sein? (mal ganz abgesehen davon das es nicht funktionieren sollte - was benutzt du denn für einen Compiler?).

    Die C++ std::string Klasse besitzt eine resize Methode. Das Richtige wäre also die beiden Strings auf die gleiche Länge zu bringen bevor du in die Schleife gehst.

    Gruß
  18. Cyraid

    Cyraid Grünschnabel

    Erst einmal danke für deine Antwort @deepthroat! :)

    Du hast Recht, mit der resize Methode geht es.
    Ich habe es ausprobiert. Man kann dadurch auf den String wie bei einem Array zugreifen.
    So sieht das dann aus:

    Code (Text):
    1.  
    2.               geheimtext.resize(klartext.size());
    3.  
    4.               for(i = 0; klartext[i] != '\0'; i++)
    5.               {
    6.                 if(klartext[i] == 'z')
    7.                 {
    8.                   geheimtext[i] = 'a';
    9.                 }
    10.                 else
    11.                 {
    12.                   if(klartext[i] == 'Z')
    13.                   {
    14.                     geheimtext[i] = 'A';
    15.                   }
    16.                   else
    17.                   {
    18.                     geheimtext[i] = klartext[i] + 1;
    19.                   }
    20.                 }
    21.               }
    Damit hätten wir nun zwei Lösungen für mein bisheriges Problem ;)

    Bleibt nur noch das letzte Problem übrig, siehe oben.

    Viele Grüße,
    Cyraid
  19. Flegmon

    Flegmon Erfahrenes Mitglied

    @deepthroat

    ich hab nur kurz mit dem notepad nen blick drüber geworfen.

    ich benutze VC++ .net 2003 und hab nur ganz kurz geschaut, ob es mit [] wirklich nicht geht. mit _mySize hats funktioniert! Die resize methode hatte ich wohl übersehen und ansonsten arbeite ich nich viel mit der string klasse... aber naja war ja nur ein versuch


    und zum Problem mit cin. Benutze doch getch() (conio.h), dass wartet auf einen Tastendruck
  20. deepthroat

    deepthroat Premium-User

    Das ist nicht so einfach zu sagen da die Antwort abhängig von der Umgebung (Betriebssystem/Terminal) ist. Aber unter Windows kannst du das Programm pause aufrufen:
    Code (C++):
    1. cout << "Taste drücken..." << endl;
    2. system("pause > nul");
    Gruß

Diese Seite empfehlen