Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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
Postado
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
Postado

@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
Postado

@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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!