Buscar

desafio cifragem 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Seu colega de trabalho precisava escrever um algoritmo para cifrar um texto. Para isso, 
utilizou o seguinte código: 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
void cifraCesar(char *texto, int chave) { 
 int i; 
 int tam = strlen(texto); 
 for (i = 0; i <= tam-1; i++) { 
 char letra = texto[i]; 
 char letraCifrada = letra + chave; 
 if (letra >= 65 && letra <= 90) { // trata letras maiusculas 
 if (letraCifrada > 91) { 
 letraCifrada = 65 + (letraCifrada - 91); 
 } 
 } else if (letra >= 97 && letra <= 122) { //trata letras minusculas 
 if (letraCifrada > 123) { 
 letraCifrada = 97 + (letraCifrada - 123); 
 } 
 } 
 printf("%c",letraCifrada); 
 } 
} 
int main() { 
 cifraCesar("Adriana", 3); 
 return 0; 
} 
No entanto, nas férias desse colega, seu chefe lhe chamou e pediu que melhorasse tal 
algoritmo, pois não ficara satisfatório. Então, você precisa analisá-lo e refazê-lo para que 
ele cifre e decifre o texto. 
 
 
Padrão de resposta esperado 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
void cifraCesar(char *texto, int chave, int tipo) { 
 int i; 
 int tam = strlen(texto); 
 for (i = 0; i <= tam-1; i++) { 
 char letra = texto[i]; 
 char letraCifrada; 
 if (tipo == 0) { 
 letraCifrada = letra + chave; 
 } else { 
 letraCifrada = letra - chave; 
 } 
 if (letra >= 65 && letra <= 90) { // trata letras maiusculas 
 if (letraCifrada > 91) { 
 letraCifrada = 65 + (letraCifrada - 91); 
 } 
 } else if (letra >= 97 && letra <= 122) { //trata letras minusculas 
 if (letraCifrada > 123) { 
 letraCifrada = 97 + (letraCifrada - 123); 
 } 
 } 
 printf("%c",letraCifrada); 
 } 
} 
int main() { 
 cifraCesar("Dguldqd", 3,1); 
 //cifraCesar("Adriana", 3,0); 
 return 0; 
}

Outros materiais