Ir para conteúdo

Problema com espaço na Cifra de César


William Minerva

Posts Recomendados

Oi gente, bom dia, tudo bem? Eu preciso fazer um programa que leia uma frase e que em seguida cada letra do texto seja substituída por outra fazendo uma troca de 3 posições. Por exemplo: a letra A vira letra D, a letra B vira letra E e assim por diante. O problema é que o programa que eu construí ela lê apenas uma palavra mas não lê o resto que eu escrevo. Por exemplo: quando eu escrevo a palavra "CACHORRO CANSADO" o programa lê apenas a palavra "CACHORRO" e me retorna "FDFKRUUR" mas não lê a palavra "CANSADO", o programa considera apenas a primeira palavra que eu escrevo, por que isso está acontecendo? Como posso resolver esse problema?

Eu escrevi o programa da seguinte forma:

#include <stdio.h>
#include <string.h>

void cifrar( char * saida, const char * entrada, int chave )
{
    int i = 0;
    int tam = strlen(entrada);

    for( i = 0; i <= tam; i++ )
    {
        if( (entrada[i] >= 'a') && (entrada[i] <= 'z') )
        {
            saida[i] = (((entrada[i] - 'a') + chave) % 26) + 'a';
        }
        else if( (entrada[i] >= 'A') && (entrada[i] <= 'Z') )
        {
            saida[i] = (((entrada[i] - 'A') + chave) % 26) + 'A';
        }
        else
        {
            saida[i] = entrada[i];
        }

    }
}


void decifrar( char * saida, const char * entrada, int chave )
{
    int ch = 0;
    int i = 0;
    int tam = strlen(entrada);

    for( i = 0; i <= tam; i++ )
    {
        if( (entrada[i] >= 'a') && (entrada[i] <= 'z') )
        {
            ch = (entrada[i] - 'a') - chave;
            if( ch < 0 ) ch += 26;
            saida[i] = ch + 'a';
        }
        else if( (entrada[i] >= 'A') && (entrada[i] <= 'Z') )
        {
            ch = (entrada[i] - 'A') - chave;
            if( ch < 0 ) ch += 26;
            saida[i] = ch + 'A';
        }
        else
        {
            saida[i] = entrada[i];
        }

    }
}

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

    scanf("%s", original);

    char cifrado[100];

    cifrar( cifrado, original, 3 );

    printf("%s", cifrado);

    return 0;

Editado por William Minerva
Link para o comentário
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...