-6

私はこの問題を何週間も見つめてきましたが、何もありません! それはうまくいきません、私はそれをよく知っていますが、なぜ、何が間違っているのかわかりません。私がハイライトした行に関して、開発者が「エラー: 期待される式」を吐き出すことは知っていますが、実際にはそれは氷山の一角にすぎません。誰かがこの小さな部分を修正する方法を知っているなら、私はそれを大いに感謝します!

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <cs50.h>
#include <ctype.h>

int main(int argc, char *argv[]) 
{

    //Get the key
    if (argc != 2 || atoi(argv[1]) < 0)
    {
        printf("Usage: ./caesar k");
        return 1;
    }

    int key = atoi(argv[1]);
    string plaintex;
    string plaintext = GetString();

    for (int i = 0, n = strlen(plaintext); n < i; i++)
    {
        if (plaintext[i] > 'A' && plaintext[i] <= 'Z')
        {
            plaintext[i] = (plaintext[i] - 'A' + key) % 26 + 'A';
        }
    }  
    for (int i = 0, n = strlen(plaintext); n < i; i++)
    {           
        if (plaintext[i] >= 'A' && plaintext[i] >= 'Z')  // Highlighted line
        {
            plaintext[i] = (plaintext[i] - 'A' + key) % 26 + 'A';
        }
        else if (plaintext[i] >= 'a' && plaintext[i] < 'z')
        {
            plaintext[i] = (plaintext[i] - 'a' + key) % 26 + 'a';
        }
        else
        {
            printf("%c\n", plaintext[i]);
        }
    }
    return 0;
}
4

2 に答える 2

2
if (plaintext[i] >= 'A' && plaintext[i] >= 'Z')

する必要があります

if (plaintext[i] >= 'A' && plaintext[i] <= 'Z')
于 2014-02-25T07:57:08.953 に答える
0

Aのシンボル テーブル インデックスは よりも重要度が低くなりますZ。おそらくA== 65 とZ== 90 です。

if (plaintext[i] >= 'A' && plaintext[i] >= 'Z')

あなたは、「何かが 65 よりも大きく、90 よりも大きい場合」と言っています。ロジックは意味がありません。「何かが 90 より大きい場合」と言っているのとまったく同じです。

あなたはおそらく意味した

if (plaintext[i] >= 'A' && plaintext[i] <= 'Z')
于 2014-02-25T07:58:56.353 に答える