Correction du devoir de synthèse N°3
Correction du devoir de synthèse N°3
Exercice 1:
1) Tableau de déclaration des objets locaux:
Objet | Type/nature | Rôle |
i | entier | Compteur |
x | entier | valeur de T[i] |
e | entier | erreur |
nom | booléen | résultat |
2) "225" , "4501" , "75" , "421" , "630"
(tous autres chaines contenant seulement des entiers)
3) La fonction vérifie si un tableau contient seulement des chaines numériques ou non
=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
Exercice 2:
Programme 1 | Programme 2 | Programme 3 | |
Erreur dans l'instruction 1 | Affectation de procédure | PROC manque Paramètres non ordonnés | Paramètres incorrectes |
Erreur dans l'instruction 2 | fonction nom2 sans paramètres | Fonction sans affectation | Erreur de type |
Solutions proposées | 1) PROC Nom3(T,FN nom1(A,B),ch) 2) Ecrire (FN nom2(T,A)) | 1) PROC nom3(T,FN nom1(A,B),ch) 2)ch ← FN nom2(T,FN nom1(A,B)) | 1) PROC nom3 (T,A,ch) 2) ch←FN nom2 (T,A) |
Exercice 3:
5) Résultat = PROC afficher(R,n)
4) r = PROC former(R,A,B,n)
1) n = PROC saisir (n)
2) A = PROC remplir (A,n)
3) B = PROC remplir (B,n)
TYPE |
tab = tableau de 11 chaines de caractères |
Objet | Type/Nature | Rôle |
affiche | procédure | affiche R |
R | TAB | Résultat |
former | procédure | former R |
saisir | procédure | saisir n |
remplir | procédure | remplir A et B |
n | entier | nombre de cases |
A | TAB | Tableau1 |
B | TAB | Tableau2 |
DEF PROC afficher (r:tab; n:entier)
Résultat = [ ] pour i de 1 à n faire
écrire (r[i])
finpour
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
DEF PROC saisir (var n : entier)
Résultat = n
n= [ ] répéter
n = donnée ("Donner n")
jusqu'à n dans [3..10]
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
DEF PROC remplir (var T:tab; n :entier)
Résultat = T
T=[] pour i de 1 à n faire
répéter
t[i] = donnée ("donner un nombre ")
jusqu'à FN verif (t[i])
finpour
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
DEF PROC former (var R: tab; A,B :tab ; n : entier)
Résultat = R
R=[ ] pour i de 1 à n faire
R[i] ← FN calcul (A[i],B[i])
fin pour
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
DEF FN verif (ch:chaine de caractères) : booléen
Résultat = VErif ← test
test =[ ]Si (i > long(ch)) et (long(ch)> 8 ) alors
test ← VRAI
sinon
test ← faux
finsi
i= [i ← 0] Répéter
i ← i + 1
jusqu'à (i>long(ch)) ou (non (ch[i] dans ["0".."9"]))
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
DEF FN calcul (ch1,ch2:cahines de carcatères):chaine de caractères
Résultat = calcul ← res
res= [ res ← "", PROC taille(ch1,ch2), ret ← 0] pour i de 1 à long (ch1) faire
valeur(ch1[i],x,e)
valeur(ch2[i],y,e)
z ← (x+y+ret) mod 10
ret ← (x+y+ret) div 10
convch(z,rch)
res ← rch + res
finpour
Si ret = 1 alors insère ("1",res,1)
Finsi
*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*
DEF PROC taille (var ch1,ch2 : chaine de caractères)
Resultat = ch1,ch2
ch1,ch2 = [ ] tantque long(ch1)‡long(ch2) faire
si long(ch1)>long(ch2) alors insère("0",ch2,1)
sinon insère("0",ch1,1)
finsi
fintantque
» Correction du devoir de synthèse N° 1 :
» Correction du devoir de contrôle N° 1 :
» Devoir de synthèse N°3
» Correction du devoir de synthèse N°2 :
|
|