Isso é ótimo!
Nesta atividade iremos criptografar (tornar secreto) o nome do destinatário.
Vamos usar o Código ASCII
Código ASCII
O código ASCII mostra que cada caractere possui um valor numérico. Por exemplo, o caractere A é o número 65, B é 66, C é 67, etc.
A lista a seguir mostra o valor dos caracteres mais comumente usados:

Como cada caractere possui um valor numérico, podemos usar isso para adicionar ou subtrair valores a essas letras, e assim alterar a ordem delas de uma determinada maneira. Permite-nos converter caracteres (char) em números (int) e vice-versa.
Exemplo
char letra = 'A';
int letra_valor = letra;
cout << letra << " = " << letra_valor << endl;
Isso imprimirá:
A = 65
Neste exemplo, salvamos o caractere em uma variável do tipo char. Então, em uma variável do tipo int salvamos a variável do tipo char, mas como a segunda variável salva números, ela irá converter o caractere em seu valor numérico de acordo com o código ASCII.
Poderíamos fazer o oposto, por exemplo:
int letra_valor = 67;
char letra = letra_valor;
cout << letra_valor << " = " << letra << endl;
Isso imprimirá:
67 = C
Para criar a mensagem secreta utilizaremos uma palavra-chave, a partir da qual codificaremos o nome. A ideia é percorrer cada caractere do nome com uma instrução for e, ao mesmo tempo, percorrer cada caractere da palavra-chave. Em seguida adicionaremos o valor do caractere do nome e da palavra-chave, e o resultado será um novo caractere, que tornará a mensagem criptografada.
Por exemplo, se minha palavra-chave for 'queen e o nome que desejo criptografar for programmer, o programa terá que adicionar o 'r' e o 'p', e salvar o resultado no lugar de ‘p ’na string “programmer”. Então eu adicionaria o 'r' e o 'e', o 'o' e o 'i' , etc. Quando estamos no caractere 5 da string do programador (contado o primeiro como 0 ), teremos que virar na string da rainha e iniciar no caracter retornado 0, ou seja, a letra 'r', já que a string da rainha não possui mais caracteres.
Para isso vamos reunir parte do que já fizemos, e devemos seguir os seguintes passos:
- Primeiro, crie uma variável do tipo
stringpara ser a palavra-chave. - Armazene a entrada recebida do console nesta variável. Este será o nome.
- Repita as duas primeiras etapas, mas isso armazenará a palavra-chave.
- Declare um loop
fore use uma variável do tipointinicializada em 0. Adicione1a esta variável para cada ciclo do loop e continue o loop enquanto a variável for menor que astringtamanhoda variável. - No corpo do loop
for, crie uma variávelintque seja igual à soma do caractere do nome (nome[i]) e do caractere da palavra-chave na posição do contador (chave[contador]). Desta soma devemos subtrair uma letra minúscula'a'para que a soma corresponda a uma letra e não a algum outro caracter aleatório do código ASCII. - Use uma instrução
ifpara determinar se a soma dos caracteres corresponde a um caractere maior que'z'. Nesse caso, subtraia25(o número de letras do alfabeto) para garantir que obteremos uma letra verdadeira no alfabeto. - Defina o caracter
nome[i]como o valor contido na variávelsum. Isso mudará a letra original para o novo caractere. - Adicione
1ao contador que carregamos da palavra-chave. - Verifique se o contador de palavras-chave é maior ou igual ao comprimento da string
chave; em caso afirmativo, redefina o contador para0. - Finalmente, após a instrução
for, imprima a mensagem criptografada no console.
Lembre-se que você sempre pode voltar às atividades anteriores para revisar qualquer coisa!
Assim que as etapas forem concluídas, comece a jogar e criptografar suas palavras! Pressione Executar e digite no console a palavra-chave seguida da tecla Enter e, a seguir, o nome ou palavra a ser criptografada, seguida também de Enter. Por exemplo, você pode copiar e colar o seguinte em seu console:
programador
rainha