Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

захист / 10 / kapysto4ka

.cpp
Скачиваний:
3
Добавлен:
30.05.2020
Размер:
4.28 Кб
Скачать
#include <iostream>
#include <string>
#include <conio.h>
#include <stdlib.h>
#include <sstream>
#include <fstream>

using namespace std;
    int main()
    {
        int k; 
        string result = ""; 
        string key = ""; 
        string key_on_s = "";
        bool flag;
        int x = 0, y = 0; 
        int registr = 0; 
        char dublicat; 
        
        int shift = 0;
        char **tabula_recta = new char *[27]; 
        for (int i=0;i<27;i++)
            tabula_recta[i] = new char [27];
        string alfabet = " abcdefghijklmnopqrstuvwxyz"; 
       
        for (int i = 0; i < 27; i++)
            for (int j = 0; j < 27; j++)
                {
                    shift = j + i;
                    if (shift >= 27) shift = shift % 27;
                        tabula_recta[i][j] = alfabet[shift];
                }
k=1;
        switch (k) 
        {
        case 1: 
            {
            setlocale(LC_ALL,"Russian");
            cout<<"Напишите ключ, который считаете нужным\n";
            cin>>key;
            setlocale(LC_ALL,"Russian");
            string s; 
            ifstream in("1.txt");
            getline(in,s);
            cout<<endl;
              cout<<endl;
               cout<<endl;
            cout<<"Введенный текст в файле: \n"<<s<<endl;
            in.close(); 
             cout<<endl;
              cout<<endl;
               cout<<endl;
                cout<<endl;
                 cout<<endl;
            cout<<"Результат...\n";
            
            for (int i = 0; i < s.length(); i++)
                {
                    key_on_s += key[i % key.length()];
                }
           
            for (int i = 0; i < s.length(); i++)
                {
                
                    if (((int)(s[i]) < 65) || ((int)(s[i]) > 122))
                        result += s[i];
                    else
                        {
                            
                            int l = 0;
                            flag = false;
                            
                            while ((l < 27) && (flag == false))
                            {
                               
                                if (key_on_s[i] == tabula_recta[l][0])
                                {
                                    
                                    x = l;
                                    flag = true;
                                }
                                l++;
                            }
                            
                            if (((int)(s[i]) <= 90) && ((int)(s[i]) >= 65))
                            {
                                dublicat = (char)((int)(s[i]) + 32);
                                registr = 1;
                            }
                            else
                            {
                                registr = 0;
                                dublicat = s[i];

                            }
                            l = 0;
                            flag = false;
                           
                            while ((l < 27) && (flag == false))
                            {
                                if (dublicat == tabula_recta[0][l])
                                {
                                    
                                    y = l;
                                    flag = true;
                                }
                                l++;
                            }
                            
                            if (registr == 1)
                            {
                                
                                dublicat = char((int)(tabula_recta[x][y]) - 32);
                                result += dublicat;
                            }
                       else
                                result += tabula_recta[x][y];
                        }
                    }

            for(int i=0;i<s.length();i++)
            if(result[i]==' ')
            result[i]='I';
            cout<<result; 
            break;
            }
        }
        getch();
        return 0;
    }
Соседние файлы в папке 10