Ir ao conteúdo
  • Cadastre-se

C Cifra de césar com erro - algoritmo em c


Leiru

Posts recomendados

Pessoal, sou novo aqui então não sei se este é o tópico certo para este tipo de pergunta. Mas, eu preciso de ajuda com um algoritmo que eu fiz para codificar uma palavra de acordo com a cifra de césar. A intenção é fazer sem ultilizar a tabela ASCII.

 

O código está funcionando somente no primeiro elemento do vetor, os elementos seguintes dão simbolos aleatórios.

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

int main()
{
    int tam,tam2,i=0,j,k, n, l, c;
	char *maiu = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	char palavra[50];


	scanf("%d", &n);

	while(i < n)
	{
        scanf("%s", palavra);
        scanf("%d", &k);

        tam = strlen(palavra);
        tam2 = strlen(maiu);

        char codi[tam];

        for(l=0;l < tam; l++)
        {
            for(j=0;j < tam2; j++)
            {
                if(palavra[i] == *(maiu+j))
                {
                    c=j+k;
                    if(c>=26)
                    {
                        c=c-26;
                    }
                    codi[i]=*(maiu+c);
                }
            }
        }
        printf("%s\n%s\n", palavra, codi);
        i++;
	}

return 0;
}

 

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

@Leiru    para postar seu código é melhor usar o botão   <>   que está lá na barra de ferramentas da janela de postar , pois senão seu código fica faltando alguns caracteres como o [ i ]  que sumiram do seu código ,   e o que você quer fazer nesse código pois ele não está compilando  .

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

3 horas atrás, devair1010 disse:

@Leiru    para postar seu código é melhor usar o botão   <>   que está lá na barra de ferramentas da janela de postar , pois senão seu código fica faltando alguns caracteres como o [ i ]  que sumiram do seu código ,   e o que você quer fazer nesse código pois ele não está compilando  .

@devair1010 Obrigado pela dica. Eu ajustei ao código. Provavelmente não estava funcionando por causa da formatação no texto do post. Ao menos em meu compilador, ele chega a compilar.

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

@Leiru      a cifra de cesar é colocar as letras uma quantidade determinada   de posições a frente da letra na palavra original ,  então seu código com algumas modificações  pode ser assim  :

#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(){
    int tam,tam2,i=0,j,k,n,l;
    char *maiu = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char palavra[50],codi[100];
    printf("Digite Quatidade De Vezes ");
    scanf("%d",&n);
    while(i < n){
        printf("Digite Uma Palavra Ou Frase ");
        fflush(stdin);
        gets(palavra);
        printf("Digite Um Numero Para Cifrar  (  De  1  ate  9  ) ");
        fflush(stdin);
        scanf("%d",&k);
        tam  = strlen(palavra);
        tam2 = strlen(maiu);
        for(l=0;l < tam; l++){
            for(j=0;j < 26; j++){
                if(toupper(palavra[l]) == (maiu[j]) && palavra[l] != ' '){
                    codi[l]= maiu[j+k];
                    break;
                }
                else{
                    if(palavra[l] == ' ')
                        codi[l] = ' ';
                }
            }
            if(j+k > 25){
                codi[l]=maiu[k-(26-j)];
            }
        }
        codi[tam] = '\0';      /* sinalizando o final da string */
        printf("%s\n%s\n\n",palavra,codi);
        i++;
    }
    return 0;
}

 

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