Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实践面试问题C++的类型错误(AlgoExpert)_C++ - Fatal编程技术网

实践面试问题C++的类型错误(AlgoExpert)

实践面试问题C++的类型错误(AlgoExpert),c++,C++,我需要一些帮助来回答我之前正在做的一个练习面试问题。我想我有一个正确的解决方案,但我得到了一个类型错误消息,我不知道如何修复。我想说,这可能是基于我用来测试代码的接口是如何格式化的,但我不确定。有什么建议吗 下面是完整的问题,后面是我的代码和错误消息。我使用ASCII表整型值与字符互换来尝试回答这个问题 使用名称空间std; 字符串caesarCypherEncryptorstring str,int键{ //在这里编写代码。 整数合计; int指数=0; 内部rem; char-val; fo

我需要一些帮助来回答我之前正在做的一个练习面试问题。我想我有一个正确的解决方案,但我得到了一个类型错误消息,我不知道如何修复。我想说,这可能是基于我用来测试代码的接口是如何格式化的,但我不确定。有什么建议吗

下面是完整的问题,后面是我的代码和错误消息。我使用ASCII表整型值与字符互换来尝试回答这个问题

使用名称空间std; 字符串caesarCypherEncryptorstring str,int键{ //在这里编写代码。 整数合计; int指数=0; 内部rem; char-val; forchar el:str { 总计=英特尔+密钥; i总计>122 { 雷姆=总数-122; val=char97+rem;
//cout这可能无法回答您的问题,但可以对逻辑和风格进行各种改进。即:

不要内联像97和122这样的魔术值。你可以分别使用字符常量“a”和“z”。对于“a”和“z”也一样

使用模运算符%执行环绕逻辑,无需特别检查el+键是否超过字母表的末尾

按常量引用传递字符串,除非您打算就地修改它们

问题中引用的键为非负。因此,请使用无符号参数

在不进行错误检查的情况下,假设所有字符都是小写的a-z,整个函数可以简化为这样

string caesarCypherEncryptor(const string& str, unsigned int key)
{
    const unsigned int ALPHABET_LENGTH = 26;
    string result;

    for (char c : str)
    {
       char x = 'a' + (((c-'a') + key)%ALPHABET_LENGTH);
       result += x;
    }
    return result;
}

发布的代码中没有任何内容会导致json.exception。请参阅问题,然后添加最小的自包含代码以复制该问题。您不需要使用97和122等神奇值。您可以内联“a”和“z”,编译器将它们解释为ascii值。