﻿/********************************************************
* szyfrGaderypoluki
*
* program szyfruje podany tekst
* szyfrem podstawieniowym zwanym GADERYPOLUKI.
* Zamieniamy litery wg.klucza GA-DE-RY-PO-LU-KI 
* pierwsza litera w parze jest zastępowana przez drugą, 
* druga przez pierwszą np.: litera D zastępowana jest przez E,
* a litera E przez D. 
* Litery inne niż GADERYPOLUKI pozostają bez zmian
* 
* ****************************************************/

#include <iostream>
#include <string>
using namespace std;

// deklaracja funkcji szyfrującej
string zaszyfruj(string slowo);

int main()
{
    // słowo do zaszyfrowania
    string slowo = "";
    cout << "GADERYPOLUKI\n\n";
    cout << "Podaj słowo do zaszyfrowania (male litery):\n";    
    cin >> slowo;
    cout << zaszyfruj(slowo);

    // zdanie do zaszyfrowania
    string zdanie = "";
    cout << "\nPodaj zdanie do zaszyfrowania (male litery):\n";
    // usuwa enter z bufora cin
    cin.get();
    // pobieramy zdanie
    getline(cin, zdanie);
    cout << zaszyfruj(zdanie) << endl;
    
    // zaszyfrowanie i odszyfrowanie powinno dać taki sam wyraz
    //cout << zaszyfruj(zaszyfruj(slowo));
}

// definicja funkcji szyfrującej
string zaszyfruj(string slowo)
{  
    // sprawdzamy każdą literę w słowie
    // i podmieniamy zgodnie z szyfrem
    // gdy litery nie ma jej w słowie gaderypoluki
    // nie zmieniamy jej
    for (int i = 0; i < slowo.size(); i++)
    {
        switch (slowo[i]) {
        case 'g':
            slowo[i] = 'a';
            break;
        case 'a':
            slowo[i] = 'g';
            break;
        case 'd':
            slowo[i] = 'e';
            break;
        case 'e':
            slowo[i] = 'd';
            break;
        case 'r':
            slowo[i] = 'y';
            break;
        case 'y':
            slowo[i] = 'r';
            break;
        case 'p':
            slowo[i] = 'o';
            break;
        case 'o':
            slowo[i] = 'p';
            break;
        case 'l':
            slowo[i] = 'u';
            break;
        case 'u':
            slowo[i] = 'l';
            break;
        case 'k':
            slowo[i] = 'i';
            break;
        case 'i':
            slowo[i] = 'k';
        }
    }
    return slowo;
}
