Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstdlib>
- using namespace std;
- void wypelnijTabliceDomyslnie(int modyfikator[])
- {
- modyfikator[0] = 6;
- modyfikator[1] = 3;
- modyfikator[2] = -4;
- modyfikator[3] = 2;
- modyfikator[4] = 8;
- modyfikator[5] = -7;
- }
- void wprowadzTekst(string & tekst)
- {
- cout <<"Wprowad\253 tekst:"<< endl;
- cout <<"Program obs\210uguje wszystkie znaki podstawowej tabeli drukowalnych znak\242w ASCII."<< endl;
- cout <<"Mo\276esz u\276ywa\206 wszystkich znak\242w mo\276liwych do wpisania na klawiaturze,\nopr\242cz tych, do kt\242rych napisania wymagane jest wci\230ni\251cie alt."<< endl;
- getline(cin, tekst);
- cin.clear();
- cin.sync();
- }
- bool sprawdzenieZnakow(string tekst)
- {
- if(tekst.size() == 0)
- {
- system("cls");//zeby wcisniecie samego entera nic nie dawalo
- return false;
- }
- for(int a = 0; a < tekst.size(); a++)
- {
- if(tekst[a] < 32 || tekst[a] > 125)
- {
- cout <<"Znaleziono niedozwolony znak. Wprowad\253 dane poprawnie."<< endl;
- return false;
- }
- }
- return true;
- }
- void zamianaNaChary(string tekst, unsigned char znak[])
- {
- for(int a = 0; a < tekst.size(); a++)
- {
- znak[a] = tekst[a];
- }
- }
- void szyfrowanie1(unsigned char znak[], int dlugosc, int modyfikator[], int ileElementow)
- {
- int m = 0;
- for(int a = 0; a < dlugosc; a++, m++)
- {
- if(m == ileElementow)
- {
- m = 0;
- }
- znak[a] += modyfikator[m];
- if(znak[a] < 32)
- {
- znak[a] = 126 - (32 - znak[a]);
- }
- if(znak[a] > 125)
- {
- znak[a] = 31 + (znak[a] - 125);
- }
- }
- }
- void szyfrowanie2(unsigned char znak[], int dlugosc)
- {
- for(int a = 0; a < dlugosc; a++)
- {
- if(znak[a] == 32)
- {
- znak[a] = 48;
- continue;
- }
- if(znak[a] == 33)
- {
- znak[a] = 120;
- continue;
- }
- if(znak[a] == 34)
- {
- znak[a] = 90;
- continue;
- }
- if(znak[a] == 35)
- {
- znak[a] = 60;
- continue;
- }
- if(znak[a] == 36)
- {
- znak[a] = 50;
- continue;
- }
- if(znak[a] == 37)
- {
- znak[a] = 40;
- continue;
- }
- if(znak[a] == 38)
- {
- znak[a] = 82;
- continue;
- }
- if(znak[a] == 39)
- {
- znak[a] = 101;
- continue;
- }
- if(znak[a] == 40)
- {
- znak[a] = 37;
- continue;
- }
- if(znak[a] == 41)
- {
- znak[a] = 66;
- continue;
- }
- if(znak[a] == 42)
- {
- znak[a] = 93;
- continue;
- }
- if(znak[a] == 43)
- {
- znak[a] = 125;
- continue;
- }
- if(znak[a] == 44)
- {
- znak[a] = 92;
- continue;
- }
- if(znak[a] == 45)
- {
- znak[a] = 51;
- continue;
- }
- if(znak[a] == 46)
- {
- znak[a] = 83;
- continue;
- }
- if(znak[a] == 47)
- {
- znak[a] = 111;
- continue;
- }
- if(znak[a] == 48)
- {
- znak[a] = 32;
- continue;
- }
- if(znak[a] == 49)
- {
- znak[a] = 73;
- continue;
- }
- if(znak[a] == 50)
- {
- znak[a] = 36;
- continue;
- }
- if(znak[a] == 51)
- {
- znak[a] = 45;
- continue;
- }
- if(znak[a] == 52)
- {
- znak[a] = 61;
- continue;
- }
- if(znak[a] == 53)
- {
- znak[a] = 72;
- continue;
- }
- if(znak[a] == 54)
- {
- znak[a] = 99;
- continue;
- }
- if(znak[a] == 55)
- {
- znak[a] = 59;
- continue;
- }
- if(znak[a] == 56)
- {
- znak[a] = 124;
- continue;
- }
- if(znak[a] == 57)
- {
- znak[a] = 74;
- continue;
- }
- if(znak[a] == 58)
- {
- znak[a] = 96;
- continue;
- }
- if(znak[a] == 59)
- {
- znak[a] = 55;
- continue;
- }
- if(znak[a] == 60)
- {
- znak[a] = 35;
- continue;
- }
- if(znak[a] == 61)
- {
- znak[a] = 52;
- continue;
- }
- if(znak[a] == 62)
- {
- znak[a] = 71;
- continue;
- }
- if(znak[a] == 63)
- {
- znak[a] = 100;
- continue;
- }
- if(znak[a] == 64)
- {
- znak[a] = 70;
- continue;
- }
- if(znak[a] == 65)
- {
- znak[a] = 113;
- continue;
- }
- if(znak[a] == 66)
- {
- znak[a] = 41;
- continue;
- }
- if(znak[a] == 67)
- {
- znak[a] = 94;
- continue;
- }
- if(znak[a] == 68)
- {
- znak[a] = 116;
- continue;
- }
- if(znak[a] == 69)
- {
- znak[a] = 91;
- continue;
- }
- if(znak[a] == 70)
- {
- znak[a] = 64;
- continue;
- }
- if(znak[a] == 71)
- {
- znak[a] = 62;
- continue;
- }
- if(znak[a] == 72)
- {
- znak[a] = 53;
- continue;
- }
- if(znak[a] == 73)
- {
- znak[a] = 49;
- continue;
- }
- if(znak[a] == 74)
- {
- znak[a] = 57;
- continue;
- }
- if(znak[a] == 75)
- {
- znak[a] = 123;
- continue;
- }
- if(znak[a] == 76)
- {
- znak[a] = 89;
- continue;
- }
- if(znak[a] == 77)
- {
- znak[a] = 81;
- continue;
- }
- if(znak[a] == 78)
- {
- znak[a] = 80;
- continue;
- }
- if(znak[a] == 79)
- {
- znak[a] = 104;
- continue;
- }
- if(znak[a] == 80)
- {
- znak[a] = 78;
- continue;
- }
- if(znak[a] == 81)
- {
- znak[a] = 77;
- continue;
- }
- if(znak[a] == 82)
- {
- znak[a] = 38;
- continue;
- }
- if(znak[a] == 83)
- {
- znak[a] = 46;
- continue;
- }
- if(znak[a] == 84)
- {
- znak[a] = 97;
- continue;
- }
- if(znak[a] == 85)
- {
- znak[a] = 102;
- continue;
- }
- if(znak[a] == 86)
- {
- znak[a] = 105;
- continue;
- }
- if(znak[a] == 87)
- {
- znak[a] = 95;
- continue;
- }
- if(znak[a] == 88)
- {
- znak[a] = 109;
- continue;
- }
- if(znak[a] == 89)
- {
- znak[a] = 76;
- continue;
- }
- if(znak[a] == 90)
- {
- znak[a] = 34;
- continue;
- }
- if(znak[a] == 91)
- {
- znak[a] = 69;
- continue;
- }
- if(znak[a] == 92)
- {
- znak[a] = 44;
- continue;
- }
- if(znak[a] == 93)
- {
- znak[a] = 42;
- continue;
- }
- if(znak[a] == 94)
- {
- znak[a] = 67;
- continue;
- }
- if(znak[a] == 95)
- {
- znak[a] = 87;
- continue;
- }
- if(znak[a] == 96)
- {
- znak[a] = 58;
- continue;
- }
- if(znak[a] == 97)
- {
- znak[a] = 84;
- continue;
- }
- if(znak[a] == 98)
- {
- znak[a] = 107;
- continue;
- }
- if(znak[a] == 99)
- {
- znak[a] = 54;
- continue;
- }
- if(znak[a] == 100)
- {
- znak[a] = 63;
- continue;
- }
- if(znak[a] == 101)
- {
- znak[a] = 39;
- continue;
- }
- if(znak[a] == 102)
- {
- znak[a] = 85;
- continue;
- }
- if(znak[a] == 103)
- {
- znak[a] = 108;
- continue;
- }
- if(znak[a] == 104)
- {
- znak[a] = 79;
- continue;
- }
- if(znak[a] == 105)
- {
- znak[a] = 86;
- continue;
- }
- if(znak[a] == 106)
- {
- znak[a] = 117;
- continue;
- }
- if(znak[a] == 107)
- {
- znak[a] = 98;
- continue;
- }
- if(znak[a] == 108)
- {
- znak[a] = 103;
- continue;
- }
- if(znak[a] == 109)
- {
- znak[a] = 88;
- continue;
- }
- if(znak[a] == 110)
- {
- znak[a] = 122;
- continue;
- }
- if(znak[a] == 111)
- {
- znak[a] = 47;
- continue;
- }
- if(znak[a] == 112)
- {
- znak[a] = 121;
- continue;
- }
- if(znak[a] == 113)
- {
- znak[a] = 65;
- continue;
- }
- if(znak[a] == 114)
- {
- znak[a] = 119;
- continue;
- }
- if(znak[a] == 115)
- {
- znak[a] = 118;
- continue;
- }
- if(znak[a] == 116)
- {
- znak[a] = 68;
- continue;
- }
- if(znak[a] == 117)
- {
- znak[a] = 106;
- continue;
- }
- if(znak[a] == 118)
- {
- znak[a] = 115;
- continue;
- }
- if(znak[a] == 119)
- {
- znak[a] = 114;
- continue;
- }
- if(znak[a] == 120)
- {
- znak[a] = 33;
- continue;
- }
- if(znak[a] == 121)
- {
- znak[a] = 112;
- continue;
- }
- if(znak[a] == 122)
- {
- znak[a] = 110;
- continue;
- }
- if(znak[a] == 123)
- {
- znak[a] = 75;
- continue;
- }
- if(znak[a] == 124)
- {
- znak[a] = 56;
- continue;
- }
- if(znak[a] == 125)
- {
- znak[a] = 43;
- continue;
- }
- }
- }
- void szyfrowanie3(unsigned char znak[], int dlugosc)
- {
- char przechowalnia;
- for(int a = 0; a < dlugosc - 1; a += 2)
- {
- przechowalnia = znak[a];
- znak[a] = znak[a+1];
- znak[a+1] = przechowalnia;
- }
- }
- void deszyfrowanie1(unsigned char znak[], int dlugosc, int modyfikator[], int ileElementow)
- {
- int m = 0;
- for(int a = 0; a < dlugosc; a++, m++)
- {
- if(m == ileElementow)
- {
- m = 0;
- }
- znak[a] -= modyfikator[m];
- if(znak[a] < 32)
- {
- znak[a] = 126 - (32 - znak[a]);
- }
- if(znak[a] > 125)
- {
- znak[a] = 31 + (znak[a] - 125);
- }
- }
- }
- int menu()
- {
- int menu;
- bool menuGood;
- do
- {
- cout <<"1 - Szyfrowanie"<< endl;
- cout <<"2 - Deszyfrowanie"<< endl;
- cout <<"3 - Ustawienia"<< endl;
- cout <<"4 - Wyj\230cie"<< endl;
- cin >> menu;
- menuGood = cin.good();
- cin.clear();
- cin.sync();
- if(menuGood == false || (menuGood == true && (menu > 4 || menu < 1)))
- {
- cout <<"Wprowadzono b\210\251dne dane. Wprowad\253 jeszcze raz.\n"<< endl;
- }
- }while(menuGood == false || (menuGood == true && (menu > 4 || menu < 1)));
- return menu;
- }
- bool jeszczeRaz()
- {
- string czy;
- do
- {
- cout <<"\nCzy na pewno chcesz zamkn\245\206 program? Wprowad\253 [T]ak lub [N]ie."<< endl;
- cin >> czy;
- cin.clear();
- cin.sync();
- if(czy != "T" && czy != "t" && czy != "N" && czy != "n")
- {
- cout <<"B\210\251dne wprowadzenie danych. Wprowad\253 poprawnie.\nT dla [T]ak, N dla [N]ie. Wielko\230\206 litery nie ma znaczenia."<< endl;
- }
- }while(czy != "T" && czy != "t" && czy != "N" && czy != "n");
- if(czy == "N" || czy == "n")
- {
- return true;
- }
- if(czy == "T" || czy == "t")
- {
- return false;
- }
- }
- int main()
- {
- string tekst;
- bool ifretry;
- int ileElementow = 6;
- int modyfikator[ileElementow];
- wypelnijTabliceDomyslnie(modyfikator); //takie pierdoly do ustawiania domyslnych ustawien, potem sie zrobi opcje do robienia innych ustawien, takich jak ilosc modyfikatorow i ich wartosc
- bool ifexit;
- do
- {
- int opcja = menu();
- if(opcja == 1)
- {
- do
- {
- wprowadzTekst(tekst);
- ifretry = sprawdzenieZnakow(tekst);
- }while(ifretry == false);
- unsigned char znak[tekst.size()];
- zamianaNaChary(tekst, znak);
- int dlugosc = tekst.size();
- szyfrowanie1(znak, dlugosc, modyfikator, ileElementow);
- szyfrowanie2(znak, dlugosc);
- for(int v = 0; v < 2; v++)
- {
- szyfrowanie3(znak, dlugosc);
- }
- cout << "\nZaszyfrowany tekst: ";
- for(int a = 0; a < dlugosc; a++)
- {
- cout << znak[a];
- }
- }
- if(opcja == 2)
- {
- {
- wprowadzTekst(tekst);
- ifretry = sprawdzenieZnakow(tekst);
- }while(ifretry == false);
- unsigned char znak[tekst.size()];
- zamianaNaChary(tekst, znak);
- int dlugosc = tekst.size();
- for(int v = 0; v < 2; v++)
- {
- szyfrowanie3(znak, dlugosc);
- }
- szyfrowanie2(znak, dlugosc);
- deszyfrowanie1(znak, dlugosc, modyfikator, ileElementow);
- cout << "\nOdszyfrowany tekst: ";
- for(int a = 0; a < dlugosc; a++)
- {
- cout << znak[a];
- }
- }
- if(opcja == 3)
- {
- cout <<"Sorry, ale na razie nie ma \276adnych ustawie\344 poza domy\230lnymi.\nB\251d\245 w nast\251pnej wersji."<< endl;
- }
- if(opcja == 4)
- {
- ifexit = jeszczeRaz();
- if(ifexit == false)
- {
- return 0;
- }
- else
- {
- continue;
- }
- }
- cout << "\n";
- system("pause");
- cout << "\n";
- }while(ifexit == true);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement