Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <limits>
- using namespace std;
- // Encode a character.
- char encode_char(char character)
- {
- // The encoded charater to return.
- char encoded_char = '@';
- // Based on the character,
- switch (character)
- {
- // Replace with a different character.
- case 'A': encoded_char = 'N'; break;
- case 'B': encoded_char = 'U'; break;
- case 'C': encoded_char = '4'; break;
- case 'D': encoded_char = 'E'; break;
- case 'E': encoded_char = 'M'; break;
- case 'F': encoded_char = '3'; break;
- case 'G': encoded_char = 'l'; break;
- case 'H': encoded_char = 'L'; break;
- case 'I': encoded_char = '!'; break;
- case 'J': encoded_char = '2'; break;
- case 'K': encoded_char = '?'; break;
- case 'L': encoded_char = 'k'; break;
- case 'M': encoded_char = '.'; break;
- case 'N': encoded_char = '1'; break;
- case 'O': encoded_char = 'A'; break;
- case 'P': encoded_char = 'T'; break;
- case 'Q': encoded_char = 'j'; break;
- case 'R': encoded_char = ' '; break;
- case 'S': encoded_char = 'S'; break;
- case 'T': encoded_char = 'i'; break;
- case 'U': encoded_char = 'z'; break;
- case 'V': encoded_char = 'K'; break;
- case 'W': encoded_char = 'y'; break;
- case 'X': encoded_char = 'x'; break;
- case 'Y': encoded_char = 'h'; break;
- case 'Z': encoded_char = 'w'; break;
- case 'a': encoded_char = 'R'; break;
- case 'b': encoded_char = 'Q'; break;
- case 'c': encoded_char = 'Z'; break;
- case 'd': encoded_char = 'g'; break;
- case 'e': encoded_char = 'D'; break;
- case 'f': encoded_char = 'v'; break;
- case 'g': encoded_char = 'f'; break;
- case 'h': encoded_char = 'u'; break;
- case 'i': encoded_char = 'J'; break;
- case 'j': encoded_char = 't'; break;
- case 'k': encoded_char = 'P'; break;
- case 'l': encoded_char = '0'; break;
- case 'm': encoded_char = 's'; break;
- case 'n': encoded_char = 'e'; break;
- case 'o': encoded_char = 'r'; break;
- case 'p': encoded_char = 'C'; break;
- case 'q': encoded_char = 'Y'; break;
- case 'r': encoded_char = 'q'; break;
- case 's': encoded_char = '9'; break;
- case 't': encoded_char = 'd'; break;
- case 'u': encoded_char = 'I'; break;
- case 'v': encoded_char = 'p'; break;
- case 'w': encoded_char = 'X'; break;
- case 'x': encoded_char = 'W'; break;
- case 'y': encoded_char = 'c'; break;
- case 'z': encoded_char = '8'; break;
- case '1': encoded_char = 'o'; break;
- case '2': encoded_char = 'B'; break;
- case '3': encoded_char = '7'; break;
- case '4': encoded_char = 'H'; break;
- case '5': encoded_char = 'V'; break;
- case '6': encoded_char = 'n'; break;
- case '7': encoded_char = 'm'; break;
- case '8': encoded_char = 'G'; break;
- case '9': encoded_char = '6'; break;
- case '0': encoded_char = 'a'; break;
- case ' ': encoded_char = 'b'; break;
- case '.': encoded_char = 'O'; break;
- case '?': encoded_char = '5'; break;
- case '!': encoded_char = 'F'; break;
- default: encoded_char = '@';
- }
- // Return the encoded character.
- return encoded_char;
- }
- // Decode a character.
- char decode_char(char character)
- {
- char decoded_char = '@';
- // Based on the encoded character,
- switch (character)
- {
- // Replace with the original character.
- case 'N': decoded_char = 'A'; break;
- case 'U': decoded_char = 'B'; break;
- case '4': decoded_char = 'C'; break;
- case 'E': decoded_char = 'D'; break;
- case 'M': decoded_char = 'E'; break;
- case '3': decoded_char = 'F'; break;
- case 'l': decoded_char = 'G'; break;
- case 'L': decoded_char = 'H'; break;
- case '!': decoded_char = 'I'; break;
- case '2': decoded_char = 'J'; break;
- case '?': decoded_char = 'K'; break;
- case 'k': decoded_char = 'L'; break;
- case '.': decoded_char = 'M'; break;
- case '1': decoded_char = 'N'; break;
- case 'A': decoded_char = 'O'; break;
- case 'T': decoded_char = 'P'; break;
- case 'j': decoded_char = 'Q'; break;
- case ' ': decoded_char = 'R'; break;
- case 'S': decoded_char = 'S'; break;
- case 'i': decoded_char = 'T'; break;
- case 'z': decoded_char = 'U'; break;
- case 'K': decoded_char = 'V'; break;
- case 'y': decoded_char = 'W'; break;
- case 'x': decoded_char = 'X'; break;
- case 'h': decoded_char = 'Y'; break;
- case 'w': decoded_char = 'Z'; break;
- case 'R': decoded_char = 'a'; break;
- case 'Q': decoded_char = 'b'; break;
- case 'Z': decoded_char = 'c'; break;
- case 'g': decoded_char = 'd'; break;
- case 'D': decoded_char = 'e'; break;
- case 'v': decoded_char = 'f'; break;
- case 'f': decoded_char = 'g'; break;
- case 'u': decoded_char = 'h'; break;
- case 'J': decoded_char = 'i'; break;
- case 't': decoded_char = 'j'; break;
- case 'P': decoded_char = 'k'; break;
- case '0': decoded_char = 'l'; break;
- case 's': decoded_char = 'm'; break;
- case 'e': decoded_char = 'n'; break;
- case 'r': decoded_char = 'o'; break;
- case 'C': decoded_char = 'p'; break;
- case 'Y': decoded_char = 'q'; break;
- case 'q': decoded_char = 'r'; break;
- case '9': decoded_char = 's'; break;
- case 'd': decoded_char = 't'; break;
- case 'I': decoded_char = 'u'; break;
- case 'p': decoded_char = 'v'; break;
- case 'X': decoded_char = 'w'; break;
- case 'W': decoded_char = 'x'; break;
- case 'c': decoded_char = 'y'; break;
- case '8': decoded_char = 'z'; break;
- case 'o': decoded_char = '1'; break;
- case 'B': decoded_char = '2'; break;
- case '7': decoded_char = '3'; break;
- case 'H': decoded_char = '4'; break;
- case 'V': decoded_char = '5'; break;
- case 'n': decoded_char = '6'; break;
- case 'm': decoded_char = '7'; break;
- case 'G': decoded_char = '8'; break;
- case '6': decoded_char = '9'; break;
- case 'a': decoded_char = '0'; break;
- case 'b': decoded_char = ' '; break;
- case 'O': decoded_char = '.'; break;
- case '5': decoded_char = '?'; break;
- case 'F': decoded_char = '!'; break;
- default: decoded_char = '@';
- }
- // Return the decoded character.
- return decoded_char;
- }
- // Encode a string by substitution.
- string encode_string(string text)
- {
- string encoded_text;
- // One character at a time,
- for (size_t i = 0; i < text.size(); ++i)
- {
- // Encode the character and add to new string.
- encoded_text.append(1, encode_char(text[i]));
- }
- return encoded_text;
- }
- // Decode a string by substitution.
- string decode_string(string text)
- {
- string decoded_text;
- // One character at a time,
- for (size_t i = 0; i < text.size(); ++i)
- {
- // Decode the character and add to new string.
- decoded_text.append(1, decode_char(text[i]));
- }
- return decoded_text;
- }
- int main()
- {
- // 1 for encode, 2 for decode
- int task = 0;
- // Text to encode or decode.
- string input;
- // Encoded or decoded text.
- string output;
- cout << "Would you like to:\n"
- "1. encode text\n"
- "2. decode text\n"
- "Enter 1 or 2: ";
- cin >> task; // Get the task.
- // If the user doesn't choose 1 or 2,
- while ((task != 1) && (task != 2))
- {
- cout << "Please enter 1 or 2: ";
- cin >> task; // Get new input.
- }
- // Confirm user's choice.
- cout << "\nYou chose to ";
- if (task == 1) cout << "encode";
- else cout << "decode";
- cout << " some text.\n";
- // If this is encoding, state what characters are allowed.
- if (task == 1)
- {
- cout << "The only characters allowed are:\n"
- "letters, numbers, space, period, "
- "question mark, exclamation point\n";
- }
- cout << "\nPlease enter your text:\n";
- // Clear the input buffer.
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- getline(cin, input); // Get user text to encode or decode.
- // If encode was chosen, encode the text.
- if (task == 1) output = encode_string(input);
- // Otherwise, if decode was chosen, decode the text.
- else output = decode_string(input);
- // Announce text is done.
- cout << "\nHere is your ";
- if (task == 1) cout << "encoded";
- else cout << "decoded";
- cout << " text:\n";
- // Display encoded or decoded text
- cout << output << endl;
- // End the program.
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement