Ir ao conteúdo

Posts recomendados

Postado

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
  • Membro VIP
Postado

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
Postado
    //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?

  • Membro VIP
Postado

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

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...