Ir ao conteúdo
  • Cadastre-se
Leiru

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

Recommended Posts

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;
}

 

Editado por Leiru
  • Amei 1

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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.

Editado por Leiru
  • Obrigado 1

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Neste caso, eu só não vou precisar fazer o uso a biblioteca ctype porque a entrada supostamente vai ser sempre maiúscula. Mas muito obrigado pela correção!

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×