Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <algorithm>
- #include <list>
- #include <vector>
- using namespace std;
- class Dane {
- public:
- string text;
- string klucz;
- };
- void szyfrowanie();
- void deszyfrowanie();
- Dane pobierzDane();
- string poprawKlucz(string klucz, string tekst);
- int main() {
- while (true) {
- cout << "1.)Szyfrowanie" << endl;
- cout << "2.)Deszyfrowanie" << endl;
- cout << "0.)Wyjdź" << endl;
- string order;
- cin >> order;
- if (order == "1") szyfrowanie();
- else if (order == "2") deszyfrowanie();
- else if (order == "0") break;
- }
- return 0;
- }
- void szyfrowanie() {
- cout << "-----SZYFROWANIE-----" << endl;
- Dane dane = pobierzDane();
- int licznikKlucza = 0;
- for (int i = 0; i < dane.text.length(); i++) {
- char znak = dane.text[i];
- int klucz = dane.klucz[licznikKlucza] - 65;
- if (znak >= 65 && znak <= 90) {
- for (int k = 0; k < klucz; k++) {
- if (znak == 90) {
- znak = 65;
- }
- else {
- znak++;
- }
- }
- }
- else if (znak >= 97 && znak <= 122) {
- for (int k = 0; k < klucz; k++) {
- if (znak == 122) {
- znak = 97;
- }
- else {
- znak++;
- }
- }
- }
- dane.text[i] = znak;
- licznikKlucza++;
- if (licznikKlucza == (dane.klucz.length())) licznikKlucza = 0;
- }
- cout << "Szyfr: " << dane.text << endl;
- cout << endl;
- }
- void deszyfrowanie() {
- cout << "-----DESZYFROWANIE-----" << endl;
- Dane dane = pobierzDane();
- int licznikKlucza = 0;
- for (int i = 0; i < dane.text.length(); i++) {
- char znak = dane.text[i];
- int klucz = dane.klucz[licznikKlucza] - 97;
- if (znak >= 65 && znak <= 90) {
- for (int k = 0; k < klucz; k++) {
- if (znak == 65) {
- znak = 90;
- }
- else {
- znak--;
- }
- }
- }
- else if (znak >= 97 && znak <= 122) {
- for (int k = 0; k < klucz; k++) {
- if (znak == 97) {
- znak = 122;
- }
- else {
- znak--;
- }
- }
- }
- dane.text[i] = znak;
- licznikKlucza++;
- if (licznikKlucza == (dane.klucz.length())) licznikKlucza = 0;
- }
- cout << "Tekst: " << dane.text << endl;
- cout << endl;
- }
- string poprawKlucz(string klucz, string tekst) {
- for(int i = 0; i < klucz.length(); i++) {
- char znak = klucz[i];
- int index = klucz.find(znak, i + 1);
- if (index != -1) klucz.replace(index, 1, "");
- }
- transform(klucz.begin(), klucz.end(), klucz.begin(), ::toupper);
- return klucz;
- }
- Dane pobierzDane() {
- Dane dane;
- cout << "Podaj tekst: ";
- cin >> dane.text;
- cout << endl;
- cout << "Podaj klucz: ";
- cin >> dane.klucz;
- dane.klucz = poprawKlucz(dane.klucz, dane.text);
- cout << endl;
- return dane;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement