Chiffre de césar
Fermé
cloc
-
21 janv. 2016 à 22:41
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 22 janv. 2016 à 23:59
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 22 janv. 2016 à 23:59
A voir également:
- Chiffre de césar
- Application pour écrire les chiffre en lettre - Télécharger - Outils professionnels
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel trier par ordre croissant chiffre - Guide
- Petit chiffre ✓ - Forum Windows
- 1 million dinar algérien en chiffre ✓ - Forum Programmation
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
21 janv. 2016 à 22:56
21 janv. 2016 à 22:56
Bonjour,
On ne dit pas crypter mais chiffrer :-). De même, dans ton cas, ça sera déchiffrer. Ensuite, tu aurais dû plutôt faire les boucles for dans tes fonctions. Ca serait plus propre.
Pour le côté circulaire, il suffit d'utiliser modulo (opérateur %).
Par exemple, si tous tes caractères sont en majuscule :
Quelques remarques sur le code :
int main()
Le bon prototype est int main(void)
while(cle>=26);
Il faudrait aussi vérifier que cle n'est pas négatif.
Tu peux également simplifier tes fonctions de chiffrement et déchiffrement. Pas besoin de tant de variables, un simple return est suffisant.
Note : pour la prochaine fois, au lieu d'utiliser la balise code, utilise plutôt code c. Cela mettra de la couleur :-).
--
Google is your friend
On ne dit pas crypter mais chiffrer :-). De même, dans ton cas, ça sera déchiffrer. Ensuite, tu aurais dû plutôt faire les boucles for dans tes fonctions. Ca serait plus propre.
Pour le côté circulaire, il suffit d'utiliser modulo (opérateur %).
Par exemple, si tous tes caractères sont en majuscule :
k2 = (k - 'A' + cl) % 26 + 'A';
Quelques remarques sur le code :
int main()
Le bon prototype est int main(void)
while(cle>=26);
Il faudrait aussi vérifier que cle n'est pas négatif.
Tu peux également simplifier tes fonctions de chiffrement et déchiffrement. Pas besoin de tant de variables, un simple return est suffisant.
Note : pour la prochaine fois, au lieu d'utiliser la balise code, utilise plutôt code c. Cela mettra de la couleur :-).
--
Google is your friend
21 janv. 2016 à 23:23
mais je ne comprends pas pourquoi vous avez fait k2 = (k - 'A' + cl) % 26 + 'A';?
21 janv. 2016 à 23:51
Avant d'appliquer le modulo, il faut ramener l'intervalle entre 0 et 26. On fait donc k-'A'.
Ensuite, on applique la clé et le modulo : (k-'A'+cl)%26. Et enfin, on ramène l'intervalle entre 'A' et 'Z' en refaisant une addition avec 'A'.
Prends un papier et vérifier avec différentes valeurs de k. Tu comprendras mieux.
22 janv. 2016 à 20:50
je suis d'accord que le k représente le code ASCII du caractère et qu'il est compris entre 'A' et 'Z'.
Mais pourquoi ramener l'intervalle entre 0 et 26?
22 janv. 2016 à 22:30
22 janv. 2016 à 23:59
Ce sont des maths là. Le modulo 26 ramène à l'intervalle 0 25. Donc si le caractère que tu souhaites chiffrer n'est pas dans cet intervalle, ça ne sera pas bon.