Здравствуйте, столкнулся с такой проблемой. Написал код для шифрования и дешифрования методом Шифра Трисемуса. Но выводит он не зашифрованное слово как и задумано, а слово, которое ввели. Скажите пожалуйста, где я ошибся.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <locale.h>
#include<string.h>
#include <cstdio>
#include <conio.h>
#include <windows.h>
// 1) Создать массив для алфавита.
//2) Вписать в алфавит сначала ключ, который задаст пользователь
//3) Вписать в массив остальные буквы алфавита исключая те, которые есть в ключе.
char alphabeth[4][8] = { {'К', 'О', 'М', 'П', 'Ь', 'Ю', 'Т', 'Е'},
{'Р', 'А', 'Б', 'В', 'Г', 'Д', 'Ж', 'З'},
{'И', 'Й', 'Л', 'Н', 'С', 'У', 'Ф', 'Х'},
{'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Э', 'Я'} };
int res;
char word[15];
char Encryption(char s) {
setlocale(LC_ALL, "Russian");
for (int i = 0; i < 4; i++)
{
for (int f = 0; f < 8; f++)
{
if ((int)s == (int)alphabeth[i][f]) {
if (i == 3)
{
return alphabeth[0][f];
}
return alphabeth[i + 1][f];
}
}
}
}
char Decryption(char s) {
setlocale(LC_ALL, "Russian");
for (int i = 0; i < 4; i++)
{
for (int f = 0; f < 8; f++)
{
if ((int)s == (int)alphabeth[i][f]) {
if (i == 0)
{
return alphabeth[3][f];
}
return alphabeth[i - 1][f];
}
}
}
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(LC_ALL, "Russian");
printf("Введите слово: ");
gets_s(word);
printf("Меню: \n1)Шифрование \n2)Дешифрование\nВведите цифру для выбора: ");
scanf("%d", &res);
switch (res) {
case 1:
for (int d = 0; d < 15; d++) {
Encryption(word[d]);
}
puts(word);
break;
case 2:
for (int d = 0; d < 15; d++) {
Decryption(word[d]);
}
puts(word);
break;
default:
printf("Нет такого числа!");
}
return 0;
}