Lycée Mohamed Boudhina Section : Science de
l’informatique
Hammamet 4 SI 2
Devoir de synthèse N°2
Matière : Algorithmique et Programmation Mars 2008
Prof : Ncir Mohamed
NB: Les apparences sont trompeuses, le devoir parait facile, mais l'EX 3 demande
beaucoup d'effort !
Exercice N°1 :
Ecrire une fonction permettant de calculer et d’afficher la somme S pour un entier n >10
donnée :
S = 1 – 1/3 + 1/5 – 1/7 + …………+ 1/(2n-1)
Exercice N°2 :
Soit N un entier long strictement positif et formé au maximum de 8 chiffres.
Ecrire une analyse permettant de mettre les chiffres de ce nombre en ordre décroissant
puis afficher le résultat.
Exemple : N=172491 -------àN devient -------à N=974211
Exercice N°3 :
On se propose d’écrire un programme qui fait une addition exacte de deux entiers naturels
très grands. Ces nombres peuvent aller jusqu’à 250 chiffres. Pour cela, la saisie des entiers
se fera sous forme de chaînes de caractères. Ces caractères sont impérativement des
chiffres décimaux (0,1,2……, 8et 9). Le programme ajustera ensuite ces deux chaînes de
telle façon qu’elles auront la même longueur. Cette opération consiste à ajouter des 0 à
gauche de la plus courte des chaînes pour qu’elle soit de même longueur que l’autre. On
passe ensuite à l’opération d’addition et le résultat obtenu est mis dans une troisième
chaîne qui sera affichée.
Question
1- Analyser ce problème et envisager sa division en modules.
2- Analyser les module de la question 1- .
Un peu trop facile mais, c'est exactement ça les devoirs que j'aime en un peu plus dur.
Pour le 3e exercice, on suppose que les deux chaînes a et b contenant les entiers à saisir
par l'utilisateur ont déjà été ajustées à la même longueur.
Je propose l'algorithme suivant pour faire la somme.
Code:
r:=0
pour i de long(a) à 1 faire
valeur(a[i],ai,e)
valeur(b[i],bi,e)
transformer_en_chaine(u,(ai+bi+r)mod 10)
r:=(ai+bi+r) div 10
c:=u+c
fin pour
si r=1 alors c:="1"+c
Si l'énoncé m'en laissait le choix, j'aurais inversé les chaînes pour ne pas devoir ajouter de
zéros au début de la plus courte chaînes entre a et b, avant de faire la somme.