gpt4 book ai didi

c++ - 土耳其字母的凯撒密码解密

转载 作者:搜寻专家 更新时间:2023-10-31 01:10:49 26 4
gpt4 key购买 nike

我在互联网上找到了很多示例,但找不到土耳其字母表的 Ceaser 密码解密。大多数字母与英文字母表相似,但也有一些差异这是土耳其语字母表:

A B C Ç D E F G Ğ H I İ J K L M N O Ö P R S Ş T U Ü V Y Z

a b c ç d e f g ğ h i ı j k l m n o ö p r s ş t u ü v y z

我找到了这个英文字母表的代码,它没有像 İ,Ö,Ü,Ş,ç,ğ,ı,ö,ş,ü 这样的字母:

#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;

int main()
{
char code[501];
int shift, len, i=0, j=0;

cout << "Caesar Cipher Decoder " << endl;
cout << "\nThis program will decrypt the entered text using Caesar Cipher." << endl;
cout << "\nPress any key to continue...";
_getch();

system("cls");
cout << "Enter the text that has to be decrypted (max 500 characters):" << endl;
cin.getline(code, 501);
len = strlen(code);

while (j < len)
{
if(code[j] == 32)
{
code[j] = code[j];
}

j++;
}

po:
cout << "\nEnter the amount of Caseser Shift in numbers: ";
cin >> shift;
if ((shift > 26) || (shift < 0))
{
cout << "\nShift value should be less than or equal to 26. Type again." << endl;
goto po;
}

while (i < len)
{

code[i] = tolower(code[i]);
code[i] = code[i] - shift;

if (code[i] + shift == 32)
{
code[i] = code[i] + shift;
}

else if(
((code[i] + shift > 31) && (code[i] + shift < 65)
|| ((code[i] + shift > 90) && (code[i] + shift < 97))
|| ((code[i] + shift > 122) && (code[i] + shift < 128)))
)
{
code[i] = code[i] + shift;
}

else if (code[i] < 97)
{
if (code[i] == 32 - shift)
{
code[i] = code[i] + shift;
}
else
{
code[i] = (code[i] + 26);
}
}
i++;
}
system("cls");
cout << "\nYour deciphered code is: \"" << code << "\"" << endl;

cout << "\nYour text has been decrypted." << endl;
cout << "\nPress any key to end." << endl;
_getch();

return 0;
}

请帮我完成土耳其语字母表的工作。

最佳答案

您发布的示例代码依赖于标准拉丁字母表是 ASCII 表中的连续 block 这一事实。土耳其语字母表不是这种情况,因此您必须以不同的方式处理问题。

我建议您使用替换表。创建一个包含 256 个字符的数组(一个字符编码表中的每个代码点),并用应该使用的字母代替它来填充每个代码点。然后迭代输入文本并通过在该数组中查找来替换每个字符。

关于c++ - 土耳其字母的凯撒密码解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15548742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com