Vous êtes sur la page 1sur 8

Correction du devoir de synthèse n°3

Exercice 1 :
1) Fonction Calcul (N : entier) : entier
2)
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
s,k Entier
ch Chaine de caractères
3)
Calcul (31) : 1
Calcul (111) : 3
Calcul (145) : 4
4)
Répéter le calcul de la somme des carrées des chiffres d’un entier jusqu’à avoir un
nombre formé par un seul chiffre et le retourner.

Enseignant : AHMED BELHASSEN 1


Correction du devoir de synthèse n°3

Exercice 2 :
Algorithme de la fonction produit :
Fonction produit (n : chaine de caractères, d : entier) : chaine de caractères
Début
k  long (convch (d))-1 # k représente le nombre de zéros de d
res  n
p  pos (".", n) # p représente la position de "." dans n
Si (p ≠ -1) alors # il s’agit d’un réel
nb  long (n)-p-1 # nb représente le nombre de chiffres après la virgule
effacer (res, p, p+1) # éliminer "."
Si (k > nb) alors
Pour i de 1 à k-nb faire
res  res + "0"
Fin pour
res  sous_chaine (res, 0, p+k) + "." + "0"
Sinon si (k < nb) alors
res  sous_chaine (res, 0, p+k) + "." + sous_chaine (res, p+k, long (res))
Sinon
res  sous_chaine (res, 0, p+k) + "." + "0"
Fin si
Sinon # il s’agit d’un entier
Pour i de 1 à k faire
res  res + "0"
Fin si
Retourner res
Fin
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
i , k , p , nb Entier
res Chaine de caractères

Enseignant : AHMED BELHASSEN 2


Correction du devoir de synthèse n°3

Implémentation en python :
def produit (n,d) :
k = len (str (d))-1
res = n
p = n.find (".")
if (p != -1) :
nb = len (n)-p-1 # nb chiffres après la virgule
res = res [ : p] + res [p+1 : ] # éliminer "."
if (k > nb) :
for i in range (1,k-nb+1) :
res += "0"
res = res [ : p+k] + "." + "0"
elif (k < nb) :
res = res [ : p+k] + "." + res [p+k : ]
else :
res = res [ : p+k] + "." + "0"
else :
for i in range (1,k+1) :
res += "0"
return res
#programme principal
print (produit ("1.5",10))

Enseignant : AHMED BELHASSEN 3


Correction du devoir de synthèse n°3

Exercice 3 :
Solution :
Algorithme du programme principal :
Algorithme hydrocarbure
Début
saisir_taille (n)
remplir_tableau (t,n)
trier (t,n)
afficher_tableau (t,n)
Fin
Tableau de déclaration des nouveaux types (TDNT)
Type
Tab = Tableau de 20 chaines de caractères

Tableau de déclaration des objets globaux (TDOG)


Objet Type/Nature
n Entier
t Tab
saisir_taille Procédure
remplir_tableau Procédure
trier Procédure
afficher_tableau Procédure

Algorithme de la procédure saisir_taille :


Procédure saisir_taille (@ x : entier)
Début
Répéter
Ecrire ("Donner le nombre d'hydrocarbures (> 4 et < 21) :")
Lire (x)
Jusqu’à (4 < x < 21)
Fin

Enseignant : AHMED BELHASSEN 4


Correction du devoir de synthèse n°3

Algorithme de la procédure remplir_tableau :


Procédure remplir_tableau (@ ta : Tab, nb : entier)
Début
Pour i de 0 à nb-1 faire
Ecrire ("**** Hydrocarbure num", i+1 ,"****")
Répéter
Ecrire ("Donner le nombre d’atomes de carbone :")
Lire (x)
Jusqu’à (x > 1)
Répéter
Ecrire ("Donner le nombre d’atomes d’hydrogène :")
Lire (y)
Jusqu’à (y = 2*x+2) ou (y = 2*x) ou (y = 2*x-2)
ta [i]  "C" + convch (x) + "H" + convch (y)
Fin pour
Fin
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
i,x,y Entier

Algorithme de la procédure trier :


Procédure trier (@ ta : Tab, nb : entier)
Début
i0
Pour k de 0 à nb-1 faire
ch  ta [i]
p  pos ("H", ch)
x  valeur (sous_chaine (ch, 1, p))
y  valeur (sous_chaine (ch, p+1, long (ch)))
Si (y = 2*x+2) alors
decalage_gauche (ta, nb, i)
Sinon si (y = 2*x-2) alors
decalage_droite (ta, i)
ii+1

Enseignant : AHMED BELHASSEN 5


Correction du devoir de synthèse n°3

Sinon
ii+1
Fin si
Fin pour
Fin
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
i,k,p,x,y Entier
ch Chaine de caractères
decalage_gauche Procédure
decalage_droite Procédure

Algorithme de la procédure decalage_gauche :


Procédure decalage_gauche (@ ta : Tab, nb, ind : entier)
Début
tmp  ta [ind]
Pour j de ind à nb-2 faire
ta [j]  ta [j+1]
Fin pour
ta [nb-1]  tmp
Fin
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
j Entier
tmp Chaine de caractères

Algorithme de la procédure decalage_droite :


Procédure decalage_droite (@ ta : Tab, ind : entier)
Début
tmp  ta [ind]
Pour j de ind à 1 (pas = -1) faire
ta [j]  ta [j-1]
Fin pour
ta [0]  tmp
Fin

Enseignant : AHMED BELHASSEN 6


Correction du devoir de synthèse n°3

Tableau de déclaration des objets locaux (TDOL)


Objet Type/Nature
j Entier
tmp Chaine de caractères

Algorithme de la procédure afficher_tableau :


Procédure afficher_tableau (ta : Tab, nb : entier)
Début
Pour i de 0 à nb-1 faire
Ecrire (ta [i])
Fin pour
Fin
Tableau de déclaration des objets locaux (TDOL)
Objet Type/Nature
i Entier

Implémentation en python :
from numpy import array
def saisir_taille () :
x = int (input ("Donner le nombre d'hydrocarbures (> 4 et < 21) :"))
while not (4 < x < 21) :
x = int (input ("Donner le nombre d'hydrocarbures (> 4 et < 21) :"))
return x
def remplir_tableau (ta,nb) :
for i in range (nb) :
print ("**** Hydrocarbure num", i+1 ,"****")
x = int (input ("Donner le nombre d’atomes de carbone :"))
while (x <= 1) :
x = int (input ("Donner le nombre d’atomes de carbone :"))
y = int (input ("Donner le nombre d’atomes d’hydrogène :"))
while (y != 2*x+2) and (y != 2*x) and (y != 2*x-2) :
y = int (input ("Donner le nombre d’atomes d’hydrogène :"))
ta [i] = "C" + str (x) + "H" + str (y)
def decalage_droite (ta,ind) :
tmp = ta [ind]

Enseignant : AHMED BELHASSEN 7


Correction du devoir de synthèse n°3

for j in range (ind,0,-1) :


ta [j] = ta [j-1]
ta [0] = tmp
def decalage_gauche (ta,nb,ind) :
tmp = ta [ind]
for j in range (ind,nb-1) :
ta [j] = ta [j+1]
ta [nb-1] = tmp
def trier (ta,nb) :
i=0
for k in range (nb) :
ch = ta [i]
p = ch.find ("H")
x = int (ch [1 : p])
y = int (ch [p+1 : ])
if (y == 2*x+2) :
decalage_gauche (ta,nb,i)
elif (y == 2*x-2) :
decalage_droite (ta,i)
i += 1
else :
i += 1
def afficher_tableau (ta,nb) :
for i in range (nb) :
print (ta [i], end= " ")
#programme principal
n = saisir_taille ()
t = array ([str] * n)
remplir_tableau (t,n)
trier (t,n)
afficher_tableau (t,n)

Enseignant : AHMED BELHASSEN 8

Vous aimerez peut-être aussi