Ir ao conteúdo
  • Cadastre-se

C Codificação (Espaço entre strings)


Posts recomendados

Boa noite!

 

Estou com duvidas em relação ao espaço entre as 2 palavras de uma frase, preciso criar um programa que codifique uma frase, sendo assim desenvolvi o código abaixo, ele é simples, soma a cada letra da frase, o valor X da variável (chave) que o usuário escolhe, porém o caractere "espaço" entre as palavras está sendo somada também, virando outra caractere.

 

Ex: usuário digita o valor da chave de 1, então na frase "a b c", deveria ficar "b c d", só que está ficando "b!c!d", então como o programa está somando +1 no caractere de espaço, resolvi fazer o IF para subtrair este valor e deixar o espaço como espaço, so que nada muda...

 

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

int main()
{
    setlocale(LC_ALL, "Portuguese");
    //declaração de variáveis
    int i, chave;
    char frase[500];

    //entrada de dados
    printf("Digite um numero inteiro para iniciar a criptografia: ");
    scanf("%d", &chave);

    getchar();

    printf("Digite a frase que deseja criptografar: ");
    gets(frase);

    getchar();

    //processamento de dados
    for (i=0; i<strlen(frase); i++){
        frase[i]=frase[i]+chave;
    }
    if (frase[i]==' '){
            frase[i]==frase[i]-chave;
    }
    printf("\n\nSua frase criptografada é: %s", frase);

    return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá @Paulo Henrique de Barros_B, seja bem vindo ao Fórum do Clube do Hardware.

 

4 minutos atrás, Paulo Henrique de Barros_B disse:

    for (i=0; i<strlen(frase); i++){
        frase[i]=frase[i]+chave;
    }
    if (frase[i]==' '){
            frase[i]==frase[i]-chave;
    }

Veja que você colocou o if fora do for. :D

 

O princípio da ideia está correto, mas seria mais fácil colocar um if verificando se não é um espaço antes de alterar..

 

 

No aguardo.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

    //processamento de dados
    for (i=0; i<strlen(frase); i++){
        frase[i]=frase[i]+chave;
        if (frase[i]==' '){
            frase[i]==frase[i]-chave;
    }
    }
    printf("\n\nSua frase criptografada é: %s", frase);

    return 0;
}

Coloquei o if dentro do for, mas não alterou em nada, o código está certo? Será que meu code blocks está com problema?

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

O if não está funcionando porque lá não tem mais espaço lá... afinal, a posição já está criptografada.

 

Siga essa dica:

33 minutos atrás, Simon Viegas disse:

seria mais fácil colocar um if verificando se não é um espaço antes de alterar..

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!