Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <map>
- using namespace std;
- string normalize(string str, int mode) {
- //modes:
- //0 - To lower
- //1 - To upper
- for (int i = 0; i < str.size(); i++) {
- switch (mode) {
- case 0: {
- str[i] = tolower(str[i]);
- break;
- }
- case 1: {
- str[i] = toupper(str[i]);
- break;
- }
- default: {
- i = str.size();
- }
- }
- }
- return str;
- }
- int main() {
- const string ENstrAlphabet = "abcdefghijklmnopqrstuvwxyz";
- string message, key, subAlphabet;
- subAlphabet = ENstrAlphabet;
- map<char, char> Alphabet;
- cout << "ENTER YOUR MESSAGE:\n";
- getline(cin, message);
- cout << "ENTER THE KEY:\n";
- cin >> key;
- //creating subAlphabet
- for (char i : key) {
- subAlphabet.erase(subAlphabet.begin() + subAlphabet.find(i));
- }
- subAlphabet = key + subAlphabet;
- for (int i = 0; i < ENstrAlphabet.size(); i++) {
- }
- //
- //normalizing
- message = normalize(message, 0);
- subAlphabet = normalize(subAlphabet, 1);
- //
- //creating Alphabet map
- for (int i = 0; i < subAlphabet.size(); i++) {
- Alphabet.insert(pair<char, char>(ENstrAlphabet[i], subAlphabet[i]));
- }
- //!adding space to the alphabet
- Alphabet.insert(pair<char, char>(' ', ' '));
- //
- //encode
- for (int i = 0; i < message.size(); i++) {
- message[i] = Alphabet[message[i]];
- }
- //
- cout << " " << endl;
- cout << "ENCODE\n\n" << "Alphabet:\n"<< endl;
- cout << '-' << ENstrAlphabet << endl;
- cout << '+' << subAlphabet << endl;
- cout << " " << endl;
- cout << message << endl;
- //decode
- for (int i = 0; i < message.size(); i++) {
- for (char k : ENstrAlphabet) {
- if (Alphabet[k] == message[i]) {
- message[i] = k;
- break;
- }
- }
- }
- //O(n^2)
- cout << " " << endl;
- cout << "DECODE\n\n" << "Alphabet:\n" << endl;
- cout << '-' << subAlphabet << endl;
- cout << '+' << ENstrAlphabet << endl;
- cout << " " << endl;
- cout << message << endl;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement