100% ont trouvé ce document utile (1 vote)
197 vues4 pages

Correction Ds2

Transféré par

Jamel Ben Mefteh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
197 vues4 pages

Correction Ds2

Transféré par

Jamel Ben Mefteh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Commissariat Régional de l’Éducation de Mahdia

Épreuve : Algorithmique et Programmation


Correction Section : Sciences de l’Informatique Niveau : 4ème année
Date : Mardi 02 Avril 2024 Durée : 3h
Exercice 1 : (3 points)
a. Quel est l’ordre de récurrence de cette fonction ? justifier votre réponse.
Le premier résultat toujours dépend de la valeur d’indice et la 2eme c’est la concaténation avec la
première et ainsi de suite donc cette fonction est récurent d’ordre 1
b. Exécuter manuellement inconnu ("245")
"101" ="101"
"100" +inconnu ("5") ="100101"
"010" +inconnu ("45") ="010100101"
inconnu ("245")
inconnu ("245")= "010100101"

c. Déduire le rôle de cette fonction sachant que CH est une chaine numérique de la base 8.
Fonction inconnu permet de convertir un nombre de la base 8 vers base 2
Exercice 2 : (4 points)

Fonction addition(N1,N2 :chaine,B :entier) :chaine R1


Début Sinon
Ch "" R0
Tant que long(N1)<long(N2) faire Finsi
N1"0"+N1 Si Z<=10 alors
Fintantque Chconvch(Z)+Ch
Sinon
Tant que long(N1)<long(N2) faire
ChCHR(Z+55)+ch
N1"0"+N1
Finsi
Fintantque
Finpour
R0
Si R !=0 alors
Pour i de long(N1)-1 a 0 faire (pas-1)
Ch "1"+Ch
Zadd(N1[i],N2[i],R)
Retourner Ch
Si Z>=B alors
Fin
ZZ-B Fonction add(a,b :caractère,r :entier) :entier
Début
Si "0"<=a<="9" alors
Xvaleur(a)
Sinon
Xord(a)-55
Finsi
Si "0"<=b<="9" alors
yvaleur(a)
Sinon
yord(a)-55
finsi
retourner x+y+r
fin
- Page 1 / 4 -
Exercice 3 : (5 points)
Réponse :

1) Fonction SommeChiffre(N :entier) :Entier 2) Fonction SMITH (N : Entier) : chaine


Début Début
Si N<10 alors i2
Retourner N ch""
Sinon s0
Retourner N mod 10 +SommeChiffre(N Div Tant que N ≠ 1 faire
10) Si N Mod i=0 alors
Fin Ch=Ch+convch(i)+"*"
N=N Div i
Si i<10 alors
TDOL
ss+i
objet T/N sinon
i,s Entier ss+sommeChiffre(i)
ch chaine Sinon
ii+1
finsi
fintantque
si s=sommeChiffre(N) alors
retourner ""
sinon retourner sous_chaine(ch,0,long(ch)-
1)
fin

3) procédure Generer (@G : texte ; D, F : entier)


Début
Ouvrir(«[Link]» ,G, «w» )
Pour i de D a F faire
TDOL
Si SMITH(i)≠"" alors
Ecrire_nl(convch(i)+ "facteur premier= "+SMITH(i)) objet T/N
Finsi i entier

Finpour
Fermer(G)
Fin

- Page 2 / 4 -
Exercice 4 : (8 points)
Algorithme P_P TDNT
Début Type
Nph1 "[Link]" eleve = enregistrement
Nph2 "Ré[Link]" NP_E :chaine
Transfert(Nph1,T,n) A :tableau de 8 entier
Calcul(T,n) Nb_ab :entier
modifier(Nph1,T,n) fin
Remplir(M,Nph1,n1) Tab=tableau de 40 eleve
Former(Nph2,Nph1,M,n2) Mat= tableau de 40*8 entier
Afficher(Nph2)
Fin TDOG
objet T/N
Nph1,Nph2 Chaine
T Tab
M Mat
n Entier
Transfert, Calcul, modifier, procédure
Remplir, Former, Afficher
Procédure Procédure modifier(Nph1 :chaine,T :tab,n :entier)
Transfert(Nph1 :chaine,@T :tab,@n :entier) Début
Début Ouvrir(Nph1,F,"wb")
Ouvrir(Nph1,F,"rb") Pour i de 0 a n-1 faire
n0 Ecrire(F,T[i])
TDOL
Tantque NON(fin_fichier(F)) faire Finpour objet T/N
Lire(F,T[n]) Fermer(F) I Entier
TDOL F Fichier eleve
nn+1 objet T/N
Fin
Fintantque I Entier
Fermer(F) F Fichier eleve
Fin

Procédure Calcul(@T :tab, n :entier) Fonction somme(t :tableau de 8 entier) :entier


Début Début
Pour i de 0 a n-1 faire S0
T[i].Nb_absomme(T[i].A) Pour i de 0 a 7 faire
Finpour SS+t[i]
Fin TDOL Finpour
TDOL
objet T/N Retourner S objet T/N
i Entier Fin i,S entier
somme Fonction

Procédure Remplir(@M :Mat,Nph1 :chaine, Procedure


@n :entier) former(Nph2,Nph1 :chaine,M :Mat,n :entier)
Début Début

- Page 3 / 4 -
Ouvrir(Nph1,F, "rb") Ouvrir(Nph1,Fb, "rb")
n0 Ouvrir(Nph1,Ft, "w")
Tant que NON(Fin_fichier(F)) faire i0
Lire(F,E) tantque NON(Fin_fichier(Fb)) faire
Si E.Nb_ab≠0 faire lire(Fb,E)
Pour j de 0 a 7 faire si E.Nb_ab≠0 faire
M[n,j]E.A[ j] ch""
Finpour pour j de 0 a 7 faire
nn+1 TDOL chch+convch(m[i,j])
objet T/N
finsi j Entier finpour
fintantque E eleve codeconv2_10(
fermer(F) F Fichier eleve ch1E.NP_E+ " *****
TDOL "+code
fin ecrire_nl(Ft,ch1) objet T/N
j Entier
ii+1 E eleve
finsi Fb Fichier eleve
Ft Texte
fintantque
Conv2_10 Fonction
fermer(Ft)
fermer(Fb)
fin

Fonction conv2_8(chb :chaine) :chaine Si chx[i] = "1" alors


Début ss+p
Ch "" Fin si
Tant que long(chb) mod 3 ≠ 0 faire p p * 2
chb  "0" + chb Fin pour
Fin tant que Ch ch + convch(s)
Répéter Jusqu’à chb = ""
Chx sous_chaine(chb, 0, 3) Retourner ch
Chb  effacer(chb, 0, 3) Fin
S 0 p 1
Pour i de 2 à 0 (pas = -1) faire

- Page 4 / 4 -

Vous aimerez peut-être aussi