Algorithmique Correction TD9 : Comment vérifier une multiplication

Transcription

Algorithmique Correction TD9 : Comment vérifier une multiplication
Algorithmique
Correction TD9 : Comment vérifier une multiplication
1.1)
--détermine la somme des chiffres qui composent un entier
Fonction sommeChiffres (entrée nombre <Entier>) retourne <Entier> ;
1.2)
Programme preuvePar9
Glossaire
op1 <Entier> ; --première opérande
op2 <Entier> ; --seconde opérande
produit <Entier> ; --résultat de la multiplication
Début
écrire(« entrez deux opérandes et leur produit ») ;
lire(op1) ;
lire(op2) ;
lire(produit) ;
si (sommeChiffre(op1) mod 9 * sommeChiffre(op2) mod 9) mod 9 =
sommeChiffre(produit) mod 9 alors
écrire(« Rien à signaler ») ;
sinon
écrire(« Multiplication erronée ») ;
fin si ;
Fin
1.3)
--détermine la somme des chiffres qui composent un entier
Fonction sommeChiffres (entrée nombre <Entier>) retourne <Entier>
Glossaire
res <Entier> ;
dividende <Entier> ;
Début
res <- 0 ;
dividende <- nombre ;
tantque dividende /= 0 faire
res <- res + dividende mod 10 ;
dividende <- dividende div 10 ;
fin tantque ;
retourner(res) ;
Fin
2.1)
op1 op2 résultat op1 op2 résultat op1 op2 résultat 0
2.2)
Les multiplications commençant par opérande 1 = 0.
2.3)
Début
écrire(« message d’invite ») ;
lire(nombre1) ;
tantque nombre1 /= 0 faire
lire(nombre2) ;
lire(résultat) ;
si la preuve par 9 des 3 derniers entiers lu est valide alors
écrire(« ok ») ;
sinon
écrire(« erreur ») ;
fin si ;
lire(nombre1) ;
fin tantque ;
Fin
2.4)
--renvoie VRAI si preuve par 9 valide pour trois entiers donnés dénotant respectivement deux opérandes
--d’une multiplication et son résultat escompté FAUX sinon
Fonction preuvePar9Valide (entrée op1 <Entier>, entrée op2 <Entier>, entrée résultat <Entier>)
retourne <Booléen> ;
2.5)
Programme preuvePar9
Glossaire
op1 <Entier> ;
op2 <Entier> ;
résultat <Entier> ;
Début
écrire(« message d’invite ») ;
lire(op1) ;
tantque op1 /= 0 faire
lire(op2) ;
lire(résultat) ;
si preuvePar9Valide(op1,op2,résultat) alors
écrire(« ok ») ;
sinon
écrire(« erreur ») ;
fin si ;
lire(op1) ;
fin tantque ;
Fin
2.6)
--renvoie VRAI si preuve par 9 valide pour trois entiers donnés dénotant respectivement deux opérandes
--d’une multiplication et son résultat escompté FAUX sinon
Fonction preuvePar9Valide (entrée op1 <Entier>, entrée op2 <Entier>, entrée résultat <Entier>)
retourne <Booléen>
Début
retourner([sommeChiffre(op1) mod 9 * sommeChiffre(op2) mod 9] mod 9 =
sommeChiffre(résultat) mod 9) ;
Fin
3.1)
--construit les quatre chiffres de la croix de Saint André de la preuve par 9 pour le produit opd1 * opd2 = res
Procédure construireCroisStAndré (entrée opd1 <Entier>, entrée opd2 <Entier>, entrée res <Entier>,
sortie croix <EnrCroix>)
Début
croix.haut <- sommeChiffre(op1) mod 9 ;
croix.bas <- sommeChiffre(op2) mod 9 ;
croix.gauche <- (croix.haut * croix.bas) mod 9 ;
croix.droite <- sommeChiffre(res) mod 9 ;
Fin

Documents pareils