aí pessoal, tenho de desenvolver um pequeno programa em C++ a respeito da Cifra de César. No Programa tem de haver um deslocamento após cada elemento.
a b c d e f g h i j k l m n o p q r s t u v x w y z
de a para b deslocar +1
b para c deslocar +2
c para d deslocar +3 e assim por diante até a última letra (z deslocando +26)
Primeiramente:
Eu só consegui até o momento fazer código normal mostrando somente o deslocamento de uma cifra. Assim como na Cifra de César, o exemplo 'abcdefghijklmnopqrstuvxwyz' ficaria 'bcdefghijklmnopqrstuvxwyz{'. O_o por que a chave aparece aqui? Depois de terminar o 'z' eu desejaria que o alfabeto retorna-se até completar o ciclo de +26 ...mas como ainda estou vendo como desenvolver isso...alguma dica?
Segundo:
Para gerar esse deslocamento +1, +2, +3...qual o caminho a seguir? Já tentei fazer mudança no contador e no deslocamento mas não acertei...
Terceiro:
Outra coisa: seria melhor utilizar ASCII para desenvolver o código ou assim dá para fazer?
*Já existe um tópico com o mesmo tema, mas não consegui sanar minha dúvida.
Obrigado!!!
Código:
#include <iostream>
using namespace std;
//PROTOTIPO
void cesar(string);
void cesar(string cadeia)
{
int comprimento, deslocamento;
comprimento = cadeia.length(); //length() dá o verdadeiro comprimento da string
cout << "Cifra de Cesar" << endl;
cout << "De o valor do deslocamento: ";
cin >> deslocamento;
for(int contador = 0; contador < comprimento; contador++) //O Index de uma string sempre começa com 0
cout << static_cast<char>(cadeia[contador] + deslocamento);
cout << endl << endl;
}
int main()
{
string entrada;
cout << "Digite a cadeia de caracteres (sem espacos): ";
cin >> entrada;
cout << "A cadeia de caracteres nativa e: " << entrada << endl << endl;
cesar(entrada);
return 0;
}