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