Ir ao conteúdo
  • Cadastre-se
Ailton Reis Pinheiro

Cifra de césar

Recommended Posts

Boa Noite

Preciso desenvolver um programa em c nas seguintes condições:

 

A entrada contém vários casos de teste. A primeira linha de entrada contém um inteiro N que indica a quantidade
de casos de teste. Cada caso de teste é composto por duas linhas. A primeira linha contém uma string com até 50
caracteres maiúsculos ('A'-'Z'), que é a sentença após ela ter sido codificada através desta Cifra de César
modificada. A segunda linha contém um número que varia de 0 a 25 e que representa quantas posições cada letra
foi deslocada para a direita.

 

Já consegui desenvolver boa parte do programa mas não consigo deixar as strings somente de A a Z e maiúsculas. Pesquisei algumas coisas a respeito em outros tópicos daqui que mostram como utilizar somente o alfabeto maiúsculo mas não sei exatamente onde e de que forma acrescentar nesse modelo de programa que tenho.

Se alguém tiver alguma dica será de grande valor.

 

Programa segue anexado

 

Muito obrigado

ex_4.txt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cifra de César, criptografia de texto de César

Citação

[...]É um tipo de cifra de substituição na qual cada letra do texto é substituída por outra, que se apresenta no alfabeto[...] Wikipédia 2016.

Basta entendermos que o alfabeto encontra se em um círculo onde vemos o A no início e o Z no fim, ou o Z antes, e após o A.

417034.jpgmontevideo.com

Se X := A, acrescentarmo +100 que nome daremos a X?

Resposta A, por quê? Primeiro temos que saber a distância que existe entre os extremos, d = Z - A

d := 25, de A a Z temos 25 elementos na tabela de códigos ASCII.

Se incrementamos X 1 a 1 até que quando X := Z, e +1 daí tornamos a chamar X := A.

Portanto o módulo(100,25) marca o limite X tendo a X.

Mod(100,25) := 0 + A - 0 = A

Mod(30,25)   := 5 + A - 1 = E

 

Mod(-100,25) := -0 + Z + 0 = Z

Mod(-30,25)   := -5 + Z + 1 = V

 

</code>

Mauro Britivaldo C Cifra de César.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Mauro.

Muito obrigado pela ajuda. Consegui ter uma noção melhor da lógica, ainda to com dificuldades em acertar o ponto adequado de onde implementar ela no programa que tenho. Como esse programa que tenho peguei uma base pronta e fui modificando ele, ainda tenho dificuldades. To criando alguns programas mais simples somente pra leitura de A a Z pra tentar pegar melhor o ponto ideal de acrescentar essa lógica.

De qualquer forma a explicação acima já me tirou do zero e já me deu um norte pra tentar resolver o meu problema. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual quer pergunta pode fazer, tentarei ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ailton Reis Pinheiro Olá, poderia por gentileza postar a solução encontrada? Se possível o código completo! Assim você ajuda os demais que estiverem com a mesma dúvida.

Certo de sua compreensão,

Agradeço desde já.

Moderador DiF

Compartilhar este post


Link para o post
Compartilhar em outros sites

@DiF Boa Noite

Segue parte do programa responsável por realizar a cifra de "A" a "Z".

Programa completo segue anexo.

 

i = 0;
while(palavra != '\0')
{
aux = palavra - chave;
if((palavra - chave) > 90)
{
aux -=26;
}
if((palavra - chave) < 65)
{
aux += 26;
}
i++;
}

 

Obrigado a todos pela colaboração.

ex_4.txt

  • 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

×