ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.06.2024
Просмотров: 8
Скачиваний: 0
#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; }