Шифр Цезаря на C++. Помогите исправить код, работает, но не дешифрует обратно слова. Что делаю не так
Три неточности в коде. Подчеркивает зеленым эти строки
stroka[i] = newstroka; '\0';
for (int i = 0; stroka[i] != '\0'; ++i)
И при дешифровании не выдает искомое слово.
Как происходит процесс 1 я ввожу количество символов - работает, идем дальше 2 я ввожу сдвиг - работает ,но если ввести букву или символ уходи в бесконечный цикл 3 я ввожу одну букву "z" для тестирования, по идее должна появиться буква "a",но выходит "y" и какой то мусор. Подскажите что не так делаю. Спасибо.
#include <iostream>
using namespace std;
char p;
int main()
{
setlocale(LC_ALL, "ru");
while (p != '3')
{
cout << "\nВас приветствует программа \"Шифр Цезаря 1.0\"\n\n";
cout << "Выберите действие :" << endl;
cout << "1.Шифрование \n" <<
"2.Дешифрование \n" <<
"3.Выход \n\n";
cin >> p;
switch (p)
{
case '1':
{
int simvol;
int shift;
cout << "\"Введите количество символов слова\"-" << endl;
cin >> simvol;
cout << "\"Введите сдвиг, на который хотите изменить слово\"-" << endl;
cin >> shift;
cout << "\"Введите слово латинскими буквами\"-" << endl;
char* stroka = new char[simvol];
for (int i = 0; i < simvol; ++i)
{
cin >> stroka[i];
}
if (stroka)
{
char newstroka;
for (int i = 0; stroka[i] != '\0'; ++i)
{
newstroka = stroka[i];
if (newstroka >= 'a' && newstroka <= 'z')
{
newstroka = newstroka - shift;
if (newstroka < 'a')
{
newstroka = newstroka + 'z' - 'a' + 1;
}
stroka[i] = newstroka;
}
else if (newstroka >= 'A' && newstroka <= 'Z')
{
newstroka = newstroka - shift;
if (newstroka < 'A')
{
newstroka = newstroka + 'Z' - 'A' + 1;
}
stroka[i] = newstroka; '\0';
}
}
}
cout << stroka << endl;
delete[]stroka;
break;
}
case '2':
{
int simvol;
int shift;
cout << "\"Введите количество символов слова\"-" << endl;
cin >> simvol;
cout << "\"Введите ключ для расшифровки слова\"-" << endl;
cin >> shift;
cout << "\"Введите слово латинскими буквами\"-" << endl;
char* stroka = new char[simvol];
for (int i = 0; i < simvol; ++i)
{
cin >> stroka[i];
}
if (stroka)
{
char newstroka;
for (int i = 0; stroka[i] != '\0'; ++i)
{
newstroka = stroka[i];
if (newstroka >= 'a' && newstroka <= 'z')
{
newstroka = newstroka - shift;
if (newstroka < 'a')
{
newstroka = newstroka - 'z' + 'a' - 1;
}
stroka[i] = newstroka;
}
else if (newstroka >= 'A' && newstroka <= 'Z')
{
newstroka = newstroka + shift;
if (newstroka < 'A')
{
newstroka = newstroka - 'Z' + 'A' - 1;
}
stroka[i] = newstroka; '\0';
}
}
}
cout << stroka << endl;
delete[]stroka;
break;
}
return 0;
}
}
}