Проект генератора шифрования и дешифрования - PullRequest
0 голосов
/ 05 марта 2019

Я в основном занимаюсь школьным проектом и столкнулся с проблемами:

  1. когда бы я ни указывал типы шифров, такие как нажатие 1 в главном меню, когда он переносит вас в шифр Цезаря, затем нажатие выхода, равного 3, затем возвращение в главное меню, нажатие 9, и это дает вам после того, как показываются большие пальцы, он должен завершить программу, но происходит то, что вместо этого он ждет другого ввода или чего-то еще, а затем возвращает вас в главное меню.

  2. Параметр да или нет после шифрования текста. после шифрования теста это даст вам возможность зашифровать или расшифровать снова. если ответ у, то он очистит экран, а затем снова запустит его, а если ответ - нет, то он завершится. К сожалению, это не работает, как я думал о том, как это должно быть. произошло то, что он продолжал повторять clearscreeen и не мог продолжать шифрование или выход.

  3. код расшифровки, я не совсем понимаю, как расшифровать обратно слово, которое было зашифровано.

Вот весь код

//================================================//
//                START OF PROJECT                //
//================================================//

//================================================//
//                    LIBRARY                     //
//================================================//
#include<iostream>
#include<string>
using namespace std;

//================================================//
//                GLOBAL VARIABLES                //
//================================================//


//================================================//
//                GLOBAL FUNCTIONS                //
//================================================//
void intro();   //need more design
int menu(); //function for main menu
void thumbs();  //function for the thumbs up
void caesar();  //function for the caesar cipher
void xo();      //function for the XOR cipher
void hill();    //function for the HILL cipher
void null();    //function for the NULL cipher
void vig();     //function for the VIGENERE cipher
void bacon();   //function for the Baconian cipher
void rot();     //function for the ROT 13 cipher
void keyword(); //function for the keyword cipher
int caesarIN1();    //function within caesar cipher(Encryption)
int caesarIN2();    //function within caesar cipher(Decryption)
string encrypt();   //function on how caesar's encryption
string decrypt();   //function on how caesar's decryption


//************************************************//
//          MAIN FUNCTION OF THE SYSTEM           //
//************************************************//
int main (){
    intro();
    menu();
return 0;
}


//************************************************//
//                 INTRODUCTION                   //
//************************************************//
void intro(){
    cout<<"=======================================";
    cout<<"\n\n\t     ENCRYPTING               ";
    cout<<"\n\n\t     DECRYPTING";
    cout<<"\n\n\t   CODE GENERATOR ";
    cout<<"\n\n=======================================";
    cin.get();
}


//************************************************//
//               MAIN MENU FUNCTION               //
//************************************************//
int menu(){
        int choice;
        do{
        system("cls");
        cout<<"\n\n\n\tMAIN MENU:";
        cout<<"\n\n\t01. CAESAR CIPHER";
        cout<<"\n\n\t02. XOR CIPHER";
        cout<<"\n\n\t03. HILL CIPHER";
        cout<<"\n\n\t04. NULL CIPHER";
        cout<<"\n\n\t05. VIGENERE CIPHER";
        cout<<"\n\n\t06. BACONIAN CIPHER";
        cout<<"\n\n\t07. ROT 13 CIPHER";
        cout<<"\n\n\t08. KEYWORD CIPHER";
        cout<<"\n\n\t09. EXIT SYSTEM";
        cout<<"\n\n\tSelect Your Option(1-9): ";
        cin>>choice;
        system("cls");
            switch(choice)
            {
                case 1:
                    caesar();
                    break;
                case 2:
                    xo();
                    break;
                case 3:
                    hill();
                    break;
                case 4:
                    null();
                    break;
                case 5:
                    vig();
                    break;
                case 6:
                    bacon();
                    break;
                case 7:
                    rot();
                    break;
                case 8:
                    keyword();
                    break;
                case 9:
                    cout<<"Thanks for using the system\n\n";
                    thumbs();
                    break;
                default :
                    cout<<"INVALID INPUT\n";
                    system("pause");
                    cin.ignore();
                    cin.get();
                    menu();
                    break;
            }
        cin.ignore();
        cin.get();
    }while(choice!=9);
}

//================================================//
//             FUNCTION OF THE SYSTEM             //
//================================================//

//************************************************//
//            FUNCTION OF CAESAR CIPHER           //
//************************************************//
void caesar(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=        CAESAR CIPHER       =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            caesarIN1();
            break;
        case 2:
            caesarIN2();
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }
    cin.ignore();
    cin.get();
    }while(choice!=3);
}

//************************************************//
//          FUNCTION WITHIN CAESAR CIPHER         //
//************************************************//
//Encryption
int caesarIN1(){
    int answer;
    do{
        system("cls");
        cout<<"\n\t==============================";
        cout<<"\n\t=        CAESAR CIPHER       =";
        cout<<"\n\t==============================";
        string encrypt(string text, int s);
        string text; 
        int s=4, y=0; 
        cout <<"\n\t ENCRYPTION";
        cin.ignore();
        cout << "\n\t Text : ";getline(cin,text);
        cout << "\t Shift: " << s; 
        cout << "\n\t Cipher: " << encrypt(text, s); 
        cout<< "\n\t Another Encryption (y/n): ";
        cin>>answer;
    }while(answer != 1);
}
//Decryption
int caesarIN2(){
    int answer;
    do{
        system("cls");
        cout<<"\n\t==============================";
        cout<<"\n\t=        CAESAR CIPHER       =";
        cout<<"\n\t==============================";
        string decrypt(string text, int s);
        string text; 
        int s=4, y=0, n=1;
        cout <<"\n\t DECRYPTION";
        cin.ignore();
        cout << "\n\t Text : ";getline(cin,text);
        cout << "\t Shift: " << s; 
        cout << "\n\t Cipher: " << decrypt(text, s); 
        cout<< "\n\t Another Decryption (y/n): ";
        cin>>answer;
    }while(answer != 1);
}

//************************************************//
//             FUNCTION OF XOR CIPHER             //
//************************************************//
void xo(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=         XOR CIPHER         =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }
    cin.ignore();
    cin.get();
    }while(choice!=3);
}

//************************************************//
//             FUNCTION OF HILL CIPHER            //
//************************************************//
void hill(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=         HILL CIPHER        =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }
    cin.ignore();
    cin.get();
    }while(choice!=3);
}

//************************************************//
//             FUNCTION OF NULL CIPHER            //
//************************************************//
void null(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=         NULL CIPHER        =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }
    cin.ignore();
    cin.get();
    }while(choice!=3);
}

//************************************************//
//           FUNCTION OF VIGENERE CIPHER          //
//************************************************//
void vig(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=       VIGENERE CIPHER      =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }
    cin.ignore();
    cin.get();
    }while(choice!=3);
}

//************************************************//
//           FUNCTION OF BACONIAN CIPHER          //
//************************************************//
void bacon(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=      BACONIAN CIPHER       =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }
    cin.ignore();
    cin.get();
    }while(choice!=3);
}

//************************************************//
//           FUNCTION OF ROT 13 CIPHER            //
//************************************************//
void rot(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t==       ROT 13 CIPHER      ==";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }
    cin.ignore();
    cin.get();
    }while(choice!=3);
}

//************************************************//
//           FUNCTION OF KEYWORD CIPHER           //
//************************************************//
void keyword(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=       KEYWORD CIPHER       =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }
    cin.ignore();
    cin.get();
    }while(choice!=3);
}

//************************************************//
//             FUNCTION FOR THUMBS UP             //
//************************************************//
void thumbs(){
cout<<"\t      ¶¶¶¶"<<endl;
cout<<"\t     ¶    ¶¶"<<endl;
cout<<"\t     ¶     ¶"<<endl;
cout<<"\t      ¶    ¶"<<endl;
cout<<"\t       ¶   ¶"<<endl;
cout<<"\t    ¶¶¶¶¶¶¶¶¶¶¶¶"<<endl;
cout<<"\t   ¶           ¶"<<endl;
cout<<"\t  ¶            ¶"<<endl;
cout<<"\t ¶¶   ¶¶¶¶¶¶¶¶¶¶¶"<<endl;
cout<<"\t ¶               ¶"<<endl;
cout<<"\t ¶               ¶"<<endl;
cout<<"\t  ¶   ¶¶¶¶¶¶¶¶¶¶¶"<<endl;
cout<<"\t   ¶           ¶"<<endl;
cout<<"\t    ¶          ¶"<<endl;
cout<<"\t     ¶¶¶¶¶¶¶¶¶¶"<<endl;
}

//================================================//
//        CIPHER PROCESS OF EACH FUNCTION         //
//================================================//

//************************************************//
//              CAESAR CIPHER SYSTEM              //
//************************************************//
//ENCRYPTION PROCESS
string encrypt(string text, int s) { 
    string result = ""; 

    // traverse text 
    for (int i=0;i<text.length();i++) 
    { 
        // apply transformation to each character 
        // Encrypt Uppercase letters 
        if (isupper(text[i])) 
            result += char(int(text[i]+s-65)%26 +65); 

    // Encrypt Lowercase letters 
    else
        result += char(int(text[i]+s-97)%26 +97); 
    } 

    // Return the resulting string 
    return result; 
}

//DECRYPTION
string decrypt(string text, int s) { 
    string result = ""; 

    // traverse text 
    for (int i=0;i<text.length();i++) 
    { 
        // apply transformation to each character 
        // Decrypt whitespace letters 
        if (isspace(text[i])) 
            result += char(int(text[i])); 
        // Decrypt Uppercase letters 
        else if (isupper(text[i])) 
            result += char((int(text[i]+s-65)%26 +65); 

    // Decrypt Lowercase letters 
    else
        result += char((int(text[i]+s-97)%26 +97); 
    } 

    // Return the resulting string 
    return result; 
} 

//================================================//
//                 END OF PROJECT                 //
//================================================//

Ответы [ 2 ]

1 голос
/ 05 марта 2019

Я прошел код, который нашел следующее решение для ваших проблем

  1. вы можете проверить рекурсивный вызов функции menu (), как упомянул Yunnosch. Также вы можете вызвать выход (EXIT_SUCCESS); если выбрана опция 9, процесс будет успешным

  2. cout << "\ n \ t Другое шифрование (y / n):"; CIN >> ответить; // либо объявляем ответ как символ, либо используем 1/0 вместо y / n

3. Функция дешифрования должна быть обратной шифрования. если вы переместитесь на 4 символа вперед при шифровании, то при дешифровании должно быть 4 символа назад ... в вашем коде в обоих случаях вы переместитесь вперед.

FYI Отредактированный код

//================================================//
//                START OF PROJECT                //
//================================================//

//================================================//
//                    LIBRARY                     //
//================================================//
#include<iostream>
#include<string>
using namespace std;

//================================================//
//                GLOBAL VARIABLES                //
//================================================//


//================================================//
//                GLOBAL FUNCTIONS                //
//================================================//
void intro();   //need more design
int menu(); //function for main menu
void thumbs();  //function for the thumbs up
void caesar();  //function for the caesar cipher
void xo();      //function for the XOR cipher
void hill();    //function for the HILL cipher
void null();    //function for the NULL cipher
void vig();     //function for the VIGENERE cipher
void bacon();   //function for the Baconian cipher
void rot();     //function for the ROT 13 cipher
void keyword(); //function for the keyword cipher
int caesarIN1();    //function within caesar cipher(Encryption)
int caesarIN2();    //function within caesar cipher(Decryption)
string encrypt();   //function on how caesar's encryption
string decrypt();   //function on how caesar's decryption


//************************************************//
//          MAIN FUNCTION OF THE SYSTEM           //
//************************************************//
int main (){
    intro();
    menu();
return 0;
}


//************************************************//
//                 INTRODUCTION                   //
//************************************************//
void intro(){
    cout<<"=======================================";
    cout<<"\n\n\t     ENCRYPTING               ";
    cout<<"\n\n\t     DECRYPTING";
    cout<<"\n\n\t   CODE GENERATOR ";
    cout<<"\n\n=======================================";
    cin.get();
}


//************************************************//
//               MAIN MENU FUNCTION               //
//************************************************//
int menu(){
        int choice;
        do{
        system("cls");
        cout<<"\n\n\n\tMAIN MENU:";
        cout<<"\n\n\t01. CAESAR CIPHER";
        cout<<"\n\n\t02. XOR CIPHER";
        cout<<"\n\n\t03. HILL CIPHER";
        cout<<"\n\n\t04. NULL CIPHER";
        cout<<"\n\n\t05. VIGENERE CIPHER";
        cout<<"\n\n\t06. BACONIAN CIPHER";
        cout<<"\n\n\t07. ROT 13 CIPHER";
        cout<<"\n\n\t08. KEYWORD CIPHER";
        cout<<"\n\n\t09. EXIT SYSTEM";
        cout<<"\n\n\tSelect Your Option(1-9): ";
        cin>>choice;
        system("cls");
            switch(choice)
            {
                case 1:
                    caesar();
                    break;
                case 2:
                    xo();
                    break;
                case 3:
                    hill();
                    break;
                case 4:
                    null();
                    break;
                case 5:
                    vig();
                    break;
                case 6:
                    bacon();
                    break;
                case 7:
                    rot();
                    break;
                case 8:
                    keyword();
                    break;
                case 9:
                    cout<<"Thanks for using the system\n\n";
                    thumbs();
                    exit(0);

                default :
                    cout<<"INVALID INPUT\n";
                    system("pause");
                    cin.ignore();
                    cin.get();
                    menu();
                    break;
            }

    }while(choice!=9);
    return 0;
}

//================================================//
//             FUNCTION OF THE SYSTEM             //
//================================================//

//************************************************//
//            FUNCTION OF CAESAR CIPHER           //
//************************************************//
void caesar(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=        CAESAR CIPHER       =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            caesarIN1();
            break;
        case 2:
            caesarIN2();
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }

    }while(choice!=3);
}

//************************************************//
//          FUNCTION WITHIN CAESAR CIPHER         //
//************************************************//
//Encryption
int caesarIN1(){
    int answer;
    do{
        system("cls");
        cout<<"\n\t==============================";
        cout<<"\n\t=        CAESAR CIPHER       =";
        cout<<"\n\t==============================";
        string encrypt(string text, int s);
        string text; 
        int s=4, y=0; 
        cout <<"\n\t ENCRYPTION";
        cin.ignore();
        cout << "\n\t Text : ";getline(cin,text);
        cout << "\t Shift: " << s; 
        cout << "\n\t Cipher: " << encrypt(text, s); 
        cout<< "\n\t Another Encryption (y/n): ";
        cin>>answer; // either use 1/0  or make answer as char
    }while(answer != 1);
    return 0;
}
//Decryption
int caesarIN2(){
    int answer;
    do{
        system("cls");
        cout<<"\n\t==============================";
        cout<<"\n\t=        CAESAR CIPHER       =";
        cout<<"\n\t==============================";
        string decrypt(string text, int s);
        string text; 
        int s=4, y=0, n=1;
        cout <<"\n\t DECRYPTION";
        cin.ignore();
        cout << "\n\t Text : ";getline(cin,text);
        cout << "\t Shift: " << s; 
        cout << "\n\t Cipher: " << decrypt(text, s); 
        cout<< "\n\t Another Decryption (y/n): ";
        cin>>answer;
    }while(answer != 1);
    return 0;
}

//************************************************//
//             FUNCTION OF XOR CIPHER             //
//************************************************//
void xo(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=         XOR CIPHER         =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }

    }while(choice!=3);
}

//************************************************//
//             FUNCTION OF HILL CIPHER            //
//************************************************//
void hill(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=         HILL CIPHER        =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }

    }while(choice!=3);
}

//************************************************//
//             FUNCTION OF NULL CIPHER            //
//************************************************//
void null(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=         NULL CIPHER        =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }
    cin.get();
    }while(choice!=3);
}

//************************************************//
//           FUNCTION OF VIGENERE CIPHER          //
//************************************************//
void vig(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=       VIGENERE CIPHER      =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }

    }while(choice!=3);
}

//************************************************//
//           FUNCTION OF BACONIAN CIPHER          //
//************************************************//
void bacon(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=      BACONIAN CIPHER       =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }

    }while(choice!=3);
}

//************************************************//
//           FUNCTION OF ROT 13 CIPHER            //
//************************************************//
void rot(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t==       ROT 13 CIPHER      ==";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }

    }while(choice!=3);
}

//************************************************//
//           FUNCTION OF KEYWORD CIPHER           //
//************************************************//
void keyword(){
    int choice;
    do{
    cout<<"\n\t==============================";
    cout<<"\n\t=       KEYWORD CIPHER       =";
    cout<<"\n\t==============================";
    cout<<"\n\n\tCHOOSE ACTION:";
    cout<<"\n\n\t01. ENCRYPT";
    cout<<"\n\n\t02. DECRYPT";
    cout<<"\n\n\t03. EXIT";
    cout<<"\n\n\tSelect Your Option(1-3): ";
    cin>>choice;
    switch(choice)
    {
        case 1:
            break;
        case 2:
            break;
        case 3:
            menu();
            break;
        default :
        cout<<"INVALID INPUT\n";
        system("pause");
        caesar();
    }

    }while(choice!=3);
}

//************************************************//
//             FUNCTION FOR THUMBS UP             //
//************************************************//
void thumbs(){
cout<<"\t      ¶¶¶¶"<<endl;
cout<<"\t     ¶    ¶¶"<<endl;
cout<<"\t     ¶     ¶"<<endl;
cout<<"\t      ¶    ¶"<<endl;
cout<<"\t       ¶   ¶"<<endl;
cout<<"\t    ¶¶¶¶¶¶¶¶¶¶¶¶"<<endl;
cout<<"\t   ¶           ¶"<<endl;
cout<<"\t  ¶            ¶"<<endl;
cout<<"\t ¶¶   ¶¶¶¶¶¶¶¶¶¶¶"<<endl;
cout<<"\t ¶               ¶"<<endl;
cout<<"\t ¶               ¶"<<endl;
cout<<"\t  ¶   ¶¶¶¶¶¶¶¶¶¶¶"<<endl;
cout<<"\t   ¶           ¶"<<endl;
cout<<"\t    ¶          ¶"<<endl;
cout<<"\t     ¶¶¶¶¶¶¶¶¶¶"<<endl;
}

//================================================//
//        CIPHER PROCESS OF EACH FUNCTION         //
//================================================//

//************************************************//
//              CAESAR CIPHER SYSTEM              //
//************************************************//
//ENCRYPTION PROCESS
string encrypt(string text, int s) { 
    string result = ""; 

    // traverse text 
    for (int i=0;i<text.length();i++) 
    { 
        // apply transformation to each character 
        // Encrypt Uppercase letters 
        if (isupper(text[i])) 
            result += char(int(text[i]+s-65)%26 +65); 

    // Encrypt Lowercase letters 
    else
        result += char(int(text[i]+s-97)%26 +97); 
    } 

    // Return the resulting string 
    return result; 
}

//DECRYPTION
string decrypt(string text, int s) { 
    string result = ""; 

    // traverse text 
    for (int i=0;i<text.length();i++) 
    { 
        // apply transformation to each character 
        // Decrypt whitespace letters 
        if (isspace(text[i])) 
            result += char(int(text[i])); 
        // Decrypt Uppercase letters 
        else if (isupper(text[i])) 
            result += char((int(text[i] - s-65)%26 +65)); 

    // Decrypt Lowercase letters 
    else
        result += char((int(text[i] - s-97)%26 +97)); 
    } 

    // Return the resulting string 
    return result; 
} 

//================================================//
//                 END OF PROJECT                 //
//================================================//
0 голосов
/ 05 марта 2019

Вы вызываете menu() рекурсивно, что вызывает наблюдаемое неправильное поведение.
Если вы находитесь внутри какого-либо меню, кроме корневого внутри main(), то после ввода «9» для выхода вы попадете в одну мелкую зону.Уровень рекурсивного меню.
Это соответствует вашему наблюдаемому неправильному поведению.

Чтобы исправить, убедитесь, что вы только каждый звонок menu() из main().
Все остальные ситуации "Я хочуменю снова ", должны быть закрыты, оставив любую подфункцию и вернувшись к do {} while внутри отдельного меню из main().
Таким образом, любая" 9 "выведет вас из этого единственного слоя цикла меню,вне функции menu() (вызывается непосредственно из main() и нигде больше) и, следовательно, до конца программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...