Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. #include <list>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. class Dane {
  10. public:
  11.     string text;
  12.     string klucz;
  13. };
  14.  
  15. void szyfrowanie();
  16. void deszyfrowanie();
  17. Dane pobierzDane();
  18. string poprawKlucz(string klucz, string tekst);
  19.  
  20. int main() {
  21.     while (true) {
  22.         cout << "1.)Szyfrowanie" << endl;
  23.         cout << "2.)Deszyfrowanie" << endl;
  24.         cout << "0.)Wyjdź" << endl;
  25.  
  26.         string order;
  27.         cin >> order;
  28.  
  29.         if (order == "1") szyfrowanie();
  30.         else if (order == "2") deszyfrowanie();
  31.         else if (order == "0") break;
  32.     }
  33.     return 0;
  34. }
  35.  
  36. void szyfrowanie() {
  37.     cout << "-----SZYFROWANIE-----" << endl;
  38.     Dane dane = pobierzDane();
  39.     int licznikKlucza = 0;
  40.     for (int i = 0; i < dane.text.length(); i++) {
  41.         char znak = dane.text[i];
  42.         int klucz = dane.klucz[licznikKlucza] - 65;
  43.  
  44.         if (znak >= 65 && znak <= 90) {
  45.             for (int k = 0; k < klucz; k++) {
  46.                 if (znak == 90) {
  47.                     znak = 65;
  48.                 }
  49.                 else {
  50.                     znak++;
  51.                 }
  52.             }
  53.         }
  54.         else if (znak >= 97 && znak <= 122) {
  55.             for (int k = 0; k < klucz; k++) {
  56.                 if (znak == 122) {
  57.                     znak = 97;
  58.                 }
  59.                 else {
  60.                     znak++;
  61.                 }
  62.             }
  63.         }
  64.         dane.text[i] = znak;
  65.         licznikKlucza++;
  66.         if (licznikKlucza == (dane.klucz.length())) licznikKlucza = 0;
  67.  
  68.     }
  69.     cout << "Szyfr: " << dane.text << endl;
  70.     cout << endl;
  71. }
  72.  
  73. void deszyfrowanie() {
  74.     cout << "-----DESZYFROWANIE-----" << endl;
  75.     Dane dane = pobierzDane();
  76.  
  77.     int licznikKlucza = 0;
  78.     for (int i = 0; i < dane.text.length(); i++) {
  79.         char znak = dane.text[i];
  80.         int klucz = dane.klucz[licznikKlucza] - 97;
  81.  
  82.         if (znak >= 65 && znak <= 90) {
  83.             for (int k = 0; k < klucz; k++) {
  84.                 if (znak == 65) {
  85.                     znak = 90;
  86.                 }
  87.                 else {
  88.                     znak--;
  89.                 }
  90.             }
  91.         }
  92.         else if (znak >= 97 && znak <= 122) {
  93.             for (int k = 0; k < klucz; k++) {
  94.                 if (znak == 97) {
  95.                     znak = 122;
  96.                 }
  97.                 else {
  98.                     znak--;
  99.                 }
  100.             }
  101.         }
  102.         dane.text[i] = znak;
  103.         licznikKlucza++;
  104.         if (licznikKlucza == (dane.klucz.length())) licznikKlucza = 0;
  105.     }
  106.     cout << "Tekst: " << dane.text << endl;
  107.     cout << endl;
  108. }
  109.  
  110. string poprawKlucz(string klucz, string tekst) {
  111.     for(int i = 0; i < klucz.length(); i++) {
  112.         char znak = klucz[i];
  113.         int index = klucz.find(znak, i + 1);
  114.         if (index != -1) klucz.replace(index, 1, "");
  115.     }
  116.     transform(klucz.begin(), klucz.end(), klucz.begin(), ::toupper);
  117.     return klucz;
  118. }
  119.  
  120. Dane pobierzDane() {
  121.     Dane dane;
  122.     cout << "Podaj tekst: ";
  123.     cin >> dane.text;
  124.     cout << endl;
  125.  
  126.     cout << "Podaj klucz: ";
  127.     cin >> dane.klucz;
  128.     dane.klucz = poprawKlucz(dane.klucz, dane.text);
  129.     cout << endl;
  130.  
  131.     return dane;
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement