Ir para conteúdo
Fórum Script Brasil
  • 0

Problema com espaço na Cifra de César


Yumeiro Theory

Pergunta

Oi gente, boa noite, 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;

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

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

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...