gpt4 book ai didi

c++ - 继续获取未声明的标识符我错误 caesar

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:09 25 4
gpt4 key购买 nike

我正在研究 cs50 类(class)中的 pset2,但我不明白为什么我一直收到这个我没有声明的错误,因为我想我做了。首先我要求一个数字用作一个用于加密的 key ,而不是我要求的纯文本,它应该用给定的数字加密,然后打印出来。

这是我的代码:

int main(int argc, string argv[])
{
// get key from command line argument, return 1 if wrong
if (argc < 2)
{
printf("No value entered!\n");
return 1;
}

//store key in integer
int k = atoi(argv[1]);

if (k < 0)
{
printf("No right variable detected\n");
return 1;
}
else
{
printf("Plain text: \n");
string s = get_string();

// iterate over strings in argv
for (int i = 0; n = strlen(s); i < n; i++);
{
if (isalpha(s[i]))
{
// for capitalized letters
if (isupper(s[i]))
{
int a = s[i] - 65;
int b = (a + k) % 26;
int c = b + 65;
printf("%c", c);
}

//for lowercase
else
{
int d = s[i] - 97;
int e = (d + k) % 26;
int f = e + 97;
printf("%c", f);
}
}
else
{
//for non alphabetical characters
printf("%c", s[i]);
}
}
}
// print new line
printf("\n");
return 0;
}

最佳答案

你有一个 ; 在 for 循环的末尾

for (int i = 0; n = strlen(s); i < n; i++);
^

改成

for (int i = 0, n = strlen(s); i < n; i++)

此外,如您所见,init 必须放在第一个分号 之前,(逗号)分隔。

边注

  1. 您应该避免在代码中使用“魔数(Magic Number)”。在您的情况下,您可以简单地使用
  2. 您应该使用可以使您的代码更具可读性的变量名
  3. 您可以使用单个变量进行灰化,而不是 6

    if (isalpha(s[i]))
    {
    int ashed;

    // for capitalized letters
    if (isupper(s[i]))
    {
    ashed = s[i] - 'A';
    ashed = (ashed + k) % 26;
    ashed += 'A';
    }

    //for lowercase
    else
    {
    ashed = s[i] - 'a';
    ashed = (ashed + k) % 26;
    ashed += 'a';
    }
    printf("%c", ashed);
    }

关于c++ - 继续获取未声明的标识符我错误 caesar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114141/

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