Simulation de la multiplication – Bac théorique – Section informatique – 2018

Bac Info 12-01-26
25 0

Sujet (Algo et programmation - Bac 2018)

On se propose de simuler la multiplication de deux entiers naturels A et D (avec A et H dans 110, 10000j), en utilisant ]a méthode du mathématicien Ibn Al Barna comme suit

a.) Former deux chaînes CA et CB contenant respectivement, les chiffres de l'entier A et les chiffres de l'entier B.

b) Ajuster la longueur des deux chaîne CA et CB en complétant par des .zéros à gauche, si nécessaire, l'une des deux chaînes pour qu'elles soient de même longueur. CA et CD seront Formées chacune de n chiffres ci auront la forme suivante :

CA  =  "AN...A4A3A2A1"

CD = "BN .. B4B3B2B1"

c) Générer une matrice carrée M de taille nxn, tel que :

M[i][j] = te produit du ième chiffre de la chaîne CA par le jème chiffre de la chaîne CH

d) La matrice M est supposée formée par 2xri diagonales en plaçant le chiffre des dizaines dans la moitié supérieure Lie chaque case et le chiffre des unités dans b moitié inférieure de la même case, comme le montre la figure ci-après pour le cas où n=3.

Remplir chacune des cases d'un tableau R de taille lin par la somme des chiffres d'une diagonale de la matrice PA en commençant par la diagonale du coin inférieur droit jusqu'à celle du coin supérieur gauche.

Avec :

- d et u sont respectivement. le chiffre des dizaines et le chiffre des unités de chaque élément de la matrice.

- Si est la somme des chiffres de la diagonale leI ,

e) En commençant par la dernière case du tableau R et pour chaque élément R[i] supérieur ou égal à 10, mettre à jour son contenu comme suit :

R[i-1] = R[i-1] + R[i] Div 10

R[i] = R[i] Div 10

f) Le résultat du produit des deux entiers A et B est obtenu en concaténant rJLL2anche i clroillo les éléments du tableau R obtenus dans l'étape précédente.

Exemple Pour A = 7842 et B = 35

a) Les deux chaînes CA et CH seront respectivement "7842" et "35".

b) Après ajustement des longueurs des deux chaînes, on aura : CA="7842", CF="0035" et n =4.

Travail demandé :

1- Analyser le problème en le décomposant en modules ( prévoir la saisie des entiers. A et B (avec A et B flans [10, 10.000] et l'affichage du résultat. )

2- Ecrire les algorithmes des modules envisages.

 

Solution Algorithmique

Dans cet algorithme, On va utiliser deux fonctions et six procédures:

- la fonction saisie()

- la procédure convert_chaine()

- la procédure remplir_matrice()

- la procédure afficher_matrice()

- la procédure remplir_tableau()

- la procédure maj_tableau()

- la procédure afficher_tableau()

- la fonction resultat()

Algorithme du programme Principal

Déclaration des objets

Objet Type / Nature
a entier
b entier
ca chaîne
cb chaîne
m matrice
r tableau

 

La fonction saisie

Cette fonction permet de saisir un entier valide compris entre deux bornes inf et sup.

1- Elle demande à l’utilisateur de saisir un entier n.

2- Elle vérifie que n appartient à l’intervalle [𝑖𝑛𝑓,𝑠𝑢𝑝]

3- Si la valeur saisie n’est pas valide, la fonction redemande la saisie jusqu’à obtenir un entier correct.

4- Elle retourne finalement la valeur valide saisie par l’utilisateur.

Déclaration des objets

Objet Type / Nature
n entier

 

La procédure convert_chaine

Cette procédure sert à rendre les deux chaînes de caractères ca et cb de même longueur en ajoutant des zéros à gauche de la chaîne la plus courte.

1- Si ca est plus courte que cb, on ajoute des '0' au début de ca.

2- Si cb est plus courte que ca, on ajoute des '0' au début de cb.

3- À la fin de l’exécution, ca et cb ont exactement la même longueur.

Déclaration des objets

Objet Type / Nature
ca chaîne (variable globale)
cb chaîne (variable globale)

 

La procédure remplir_matrice

Cette procédure permet de trier un tableau t par ordre croissant en utilisant l’algorithme du tri rapide (Quick Sort).

1- Elle choisit un pivot (l’élément du milieu du sous-tableau).

2- Elle place ce pivot au début du sous-tableau.

3- Elle partitionne le tableau :

- Tous les éléments inférieurs au pivot sont déplacés à gauche.

- Les éléments supérieurs ou égaux restent à droite.

- Elle remet ensuite le pivot à sa position définitive dans le tableau.

4- Elle applique récursivement le même traitement au sous-tableau situé à gauche du pivot, puis au sous-tableau situé à droite du pivot

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La procédure afficher_matrice

Cette procédure affiche à l’écran les éléments de la matrice de caractères ligne par ligne.

1- Elle parcourt la matrice selon le nombre de lignes l et de colonnes c.

2- Elle affiche chaque caractère de la matrice avec un espace entre les éléments.

3- Elle passe à la ligne après l’affichage de chaque ligne de la matrice.

Déclaration des objets

Objet Type / Nature
i entier
j entier

 

La procédure remplir_tableau

Cette procédure permet de remplir le tableau r en additionnant les chiffres des éléments de la matrice m diagonale par diagonale.

1- Elle parcourt toutes les diagonales de la matrice carrée m de taille n × n.

2- Pour chaque élément m[i][j] appartenant à une diagonale :

3- Elle transforme sa valeur en chaîne de caractères.

4- Elle force l’écriture sur deux chiffres (en ajoutant un zéro à gauche si nécessaire).

6- Elle additionne séparément les deux chiffres : le chiffre des dizaines est ajouté à r[k] et le chiffre des unités est ajouté à r[k+1].

7- Le tableau r contient ainsi les sommes partielles des produits, organisées selon les diagonales.

Déclaration des objets

Objet Type / Nature
i entier
j entier
k entier

 

La procédure maj_tableau

Cette procédure permet de mettre à jour le tableau r en gérant les retenues en base 10, exactement comme dans une addition ou une multiplication manuelle.

Elle parcourt le tableau r de l’indice 1 jusqu’à n-1.

Pour chaque case r[i] : Elle transfère la retenue (r[i] div 10) vers la case précédente r[i-1].

Elle conserve uniquement le chiffre des unités dans r[i] grâce à l’opération modulo 10.

À la fin, chaque case de r contient un seul chiffre compris entre 0 et 9.

Déclaration des objets

Objet Type / Nature
i entier

 

La procédure afficher_tableau

Cette procédure permet d’afficher les n premiers éléments du tableau t sur une seule ligne.

1- Elle parcourt le tableau t de l’indice 0 à n-1.

2- Elle affiche chaque élément suivi d’un espace, sans passer à la ligne après chaque affichage.

Déclaration des objets

Objet Type / Nature
i entier

 

La fonction resultat

Cette fonction permet de transformer les n premiers éléments du tableau t en une chaîne de caractères représentant le résultat final du calcul (produit).

1- Elle parcourt le tableau t de l’indice 0 à n-1.

2- Elle concatène chaque élément du tableau à une chaîne liste.

3- Elle retourne la chaîne obtenue, qui correspond au nombre final calculé.

Déclaration des objets

Objet Type / Nature
i entier

 

Solution en Python

Exécution du programme

0 commentaire

laisser un commentaire

Veuillez noter s'il vous plaît*

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Passion de robotique

Atelier robotique

Construction des robots

Bras robotique

Maison intelligente

But de ce site web

La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.

Coordonnées

Zaouiet Kontech-Jemmel-Monastir-Tunisie

+216 92 886 231

medaliprof@gmail.com

Photos des articles

Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info