1) On ne dit pas cryptage, mais chiffrement. Cryptage ne veut rien dire.
2) Attention, ici tu vas chiffrer un caractère mais pas une chaîne de caractère.
3) #include <cstdlib>, #include <conio.h> et #include <string> sont inutiles.
4) N'utilise jamais "using namespace std;", voir:
[ Lien ]
5) Pas la peine de faire plein de "if", utilise un modulo (%) pour éviter de déborder.
Ex:
char tab[] = "abc";
tab[0] => 'a'
tab[1] => 'b'
tab[2] => 'c'
Si tu veux rester entre 0 et 2, il te suffit de faire un modulo de la taille du tableau:
tab[0 % 3] => tab[0] => 'a'
tab[1 % 3] => tab[1] => 'b'
tab[2 % 3] => tab[2] => 'c'
tab[3 % 3] => tab[0] => 'a'
tab[4 % 3] => tab[1] => 'b'
tab[5 % 3] => tab[2] => 'c'
etc...
Donc pour ton exercice, il te suffit de faire un modulo 26.
Tu peux directement écrire l'alphabet plutôt que de la calculer:
static const char tab[] = "abcdefghijklmnopqrstuvwxyz";
Pour trouver le début du tableau, tel que 'a' == 0, il suffit de soustraire 'a'.
Donc si tu fais ch - 'a', tu obtiens une position.
Ex:
Si ch = 'a', alors ch - 'a' == 'a' - 'a' == position 0
Si ch = 'b', alors ch - 'a' == 'b' - 'a' == position 1
Si ch = 'c', alors ch - 'a' == 'c' - 'a' == position 2
etc...
Ensuite, avec un simple modulo, tu devrais facilement t'en sortir:
tab[(ch - 'a' + j) % 26]
Essaie de corriger ton erreur et poste ton programme corrigé. On regardera ensemble comment l'améliorer.
_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio