Boa tarde pessoal,
Estou tentando criar um programa que seja capaz de criptografar uma determinada string utilizando o método “Cifra de César”, que basicamente “desloca” a letra em 3 posições em relação ao alfabeto. Ex: Se a letra é “A” ela vai se tornar “D” que está 3 posições a frente dela, se a letra é “C” vai se tornar “F”, se é “G” se torna “J” e assim sucessivamente, porém não estou tendo sucesso.
Até o momento estou utilizando uma lógica de varrer dois vetores: o primeiro com o texto a ser criptografado, e o segundo é o vetor com as letras do alfabeto, comparando as letras, então quando for encontrada a letra correspondente, ela vai ser substituída pela letra 3 posições a frente do vetor de letras.
#include <stdio.h>
int main (){
#define tamanhoTexto 4
#define qtdLetras 26
int i = 0, j = 0;
char vetTexto[tamanhoTexto];
char vetLetras[26] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',
'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
for(i=0; i<tamanhoTexto;i++){ //Lendo o texto a ser encriptado
scanf ("%c", &vetTexto[tamanhoTexto]);
}
for (i = 0; i < tamanhoTexto; i++){ //Varrendo os 2 vetores fazendo a busca de letras correspondentes
for (j = 0; j < qtdLetras; j++){
if(vetTexto[i] == vetLetras[j] && j+ 3 <qtdLetras){ //j+3(deslocamento) não pode sair do vetor letras
vetTexto[i] = vetLetras[j+ 3];
}else{
j = j + 3;
j = j - qtdLetras; //caso saia, faço a soma e tiro 26, pra voltar ao começo.
vetTexto[i] = vetLetras[j];
}
}
}
for (i = 0; i < tamanhoTexto; i++){ //impressão do texto criptografado
printf ("%c", vetTexto[i]);
}
return 0;
}
Alguma ideia de porquê não está funcionando?