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
- Excel trier par ordre croissant chiffre - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Application pour écrire les chiffre en lettre - Télécharger - Outils professionnels
- Convertir chiffre en lettre excel sans macro ✓ - Forum Excel
- Tous les code possible de 1 à 9 (4 chiffres ) - 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 841
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.