Почему моя функция c translate () возвращает случайные символы? - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь создать переводчик Atbash, Atbash - это просто алфавит в обратном направлении.Например, A будет равно Z. Но функция translate () возвращает только случайные буквы или символы.

Я не уверен, что проблема в моей логике в переназначении значений.Переменная reverse должна иметь значение atbash соответствующей буквы.

char translate(char text){
    char letter;
    char reverse;
    letter  = text;
    char alphabet[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    char atbash[26] = {'Z','Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A'};
    int x = 0;
    int size = 26;

    while(x <= size)
     {
        if(letter == alphabet[x])
            {
               reverse = atbash[x];
               break;
            }
        x++;        
     }
    return reverse;
}

int main(){
    char text [100];
    char translation [100];
    int strSize, i;

    printf("Hi! this is ATBASH translator.\n");
    printf("Use CAPSLOCK to input text\n");

    printf("ENTER TEXT: ");
    scanf("%[^\n]", text);

    strSize = strlen(text); //I removed the minus 1 
for (i = 0; i < strSize; i++){
    translation[i] = translate(text[i]);
}
    printf("TRANSLATION: %s", translation);
    return 0;
}

Я понял это !!Спасибо, парни!Я вычел размер строки «текст», поэтому я не смог получить последний символ.

ОБНОВЛЕНИЕ: я еще не понял (мне показалось, что я понял, лол)

Я набрал ABC, и он вернул ZYX, но когда я набрал ABCDE, он выдает ZYXWV (что верно), но вместе с ним снова случайные символы.Это так:

ENTER TEXT: ABCDE
TRANSLATION: ZYXWVy`~?.|

Ответы [ 3 ]

0 голосов
/ 16 апреля 2019

Я думаю, что есть проблема с вашей логикой сравнения. Обновлен один это.

char translate(char text){
    char letter;
    char reverse;
    letter  = text;
    char alphabet[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    char atbash[26] = {'Z','Y', 'X', 'W', 'V', 'U', 'T', 'S', 'R', 'Q', 'P', 'O', 'N', 'M', 'L', 'K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C', 'B', 'A'};
    int x = 0;
    int size = 26;

    while(x <= size)
     {
        if(letter == alphabet[x])
            {
               reverse = atbash[x];
               break;
            }
        x++;        
     }
    return reverse;
}
0 голосов
/ 16 апреля 2019

буквенная переменная в функции используется, но никогда не инициализируется

0 голосов
/ 16 апреля 2019

Вы отправляете текст, но текст никогда не используется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...