Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Leiru

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

Recommended Posts

Postado (editado)

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
Postado (editado)
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






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

×