Probléme de test de carractére language c
Fermé
DGAC2000
-
18 mai 2008 à 21:58
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 19 mai 2008 à 01:11
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 19 mai 2008 à 01:11
A voir également:
- Probléme de test de carractére language c
- Test pc - Guide
- Test ram - Guide
- Media test failure check cable - Astuces et Solutions
- Test config pc ✓ - Forum Matériel informatique
- Test de recrutement opérateur de saisie ✓ - Forum Études / Formation High-Tech
1 réponse
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
19 mai 2008 à 01:11
19 mai 2008 à 01:11
En fait ton exercice est simple dès que l'on sait que l'opérateur modulo s'écrit % en langage C (ou C++). Par exemple (3 % 4 = 3, 8 % 4 = 0).
Ensuite il suffit d'écrire les tests : notons (l1,c1) et (l2,c2) les positions (ligne,colonne) des deux caractères lus et
(l1_,c1_) (l2_,c2_) les caractères obtenus suite à la transformation
Notons L la largeur de la matrice, et H sa hauteur :
Si les deux caractères du bigramme représentent deux coins d'un rectangle
dans la matrice (c'est à dire sont sur 2 lignes et colonnes différentes),
on les code par les deux coins restants, dans le sens direct.
- Si les deux caractères sont sur la même ligne, on prend leurs deux voisins de
droite, modulo la largeur de la ligne:
-Si les deux caractères sont sur la même colonne, on prend les deux voisins du
dessous, modulo la hauteur de la colonne:
- Si les deux caractères sont identiques ou si le bigramme ne contient plus
qu'un seul caratère (message de longueur impaire), on ne code tout simplement
pas le bigramme.
Je te laisse chercher pour le reste...
Pour le déchiffrage il suffit de faire les opérations inverse (permutation quand tu permutes pour le chiffrage, soustraction avec modulo quand tu additionnes avec modulo pour le chiffrage, identité quand tu ne changes rien pour le chiffrage).
Bonne chance
Ensuite il suffit d'écrire les tests : notons (l1,c1) et (l2,c2) les positions (ligne,colonne) des deux caractères lus et
(l1_,c1_) (l2_,c2_) les caractères obtenus suite à la transformation
Notons L la largeur de la matrice, et H sa hauteur :
#define L 6 #define H 6
Si les deux caractères du bigramme représentent deux coins d'un rectangle
dans la matrice (c'est à dire sont sur 2 lignes et colonnes différentes),
on les code par les deux coins restants, dans le sens direct.
if(l1!=l2 && c1!=c2){
l1_ = l2;
l2_ = l1;
c1_ = c2;
c2_ = c1;
}
- Si les deux caractères sont sur la même ligne, on prend leurs deux voisins de
droite, modulo la largeur de la ligne:
if(l1 == l2){
l1_ = l1;
l2_ = l2;
c1_ = (c1 + 2) % L;
c2_ = (c2 + 2) % L;
}
-Si les deux caractères sont sur la même colonne, on prend les deux voisins du
dessous, modulo la hauteur de la colonne:
if(c1 == c2){
c1_ = c1;
c2_ = c2;
l1_ = (l1 + 2) % H;
l2_ = (l2 + 2) % H;
}
- Si les deux caractères sont identiques ou si le bigramme ne contient plus
qu'un seul caratère (message de longueur impaire), on ne code tout simplement
pas le bigramme.
if(unseulcaractere || (c1 == c2 && l1 == l2)){
c1_ = c1;
c2_ = c2;
l1_ = l1;
l2_ = l2;
}
Je te laisse chercher pour le reste...
Pour le déchiffrage il suffit de faire les opérations inverse (permutation quand tu permutes pour le chiffrage, soustraction avec modulo quand tu additionnes avec modulo pour le chiffrage, identité quand tu ne changes rien pour le chiffrage).
Bonne chance