TP 3 : les Boucles (while ou for) 1. Boucle avec un nombre prédéfini

publicité
TP 3 : les Boucles (while ou for)
1.
Boucle avec un nombre prédéfini d'itérations (… et précision sur les flottants)
Attention : les calculs dans cet exercice seront faits en float.
Evaluez la somme des inverses des n premiers entiers. n sera lu au clavier et la somme sera évaluée
en développant l’expression 1+1/2+…++1/(n-1)+1/n
puis en développant 1/n+1/(n-1)+ …+1/2+1
Affichez les deux résultats et observez s’il y a des différences pour certaines valeurs de n. Qu’en
déduisez-vous ?
Algorithme à affiner :
- définir les "flottants" s1, s2, x
- définir les entiers n et i
- lire n
- s1 <- 0
- i <- 1
- tant que (i ≤ n)
- x <- 1/i (on prendra garde que ce ne soit pas la division entière qui soit appliquée)
- s1 est augmenté de x
- i est incrémenté
- fin tant-que
- calcul similaire pour s2 en partant de 1/n et en décrémentant jusqu'à 1
- afficher s1 et s2
2.
Boucle avec un nombre indéterminé d'itérations
En utlisant uniquement la fonction getchar (ex : carCourant=getchar() ; ), écrivez le
programme qui lit une suite de caractères terminée par un point ( '.' ) et qui la recopie en sortie en
remplaçant toute séquence de blancs par un seul blanc. Exemple d'exécution :
Ce programme
supprime les blancs
redondants.
Ce programme supprime les blancs redondants.
Remarque : un caractère blanc n’est réécrit que si son prédécesseur n’est pas blanc.
Algorithme à affiner :
- définir les caractères carCourant et carPrecedent
- initialiser carPrecedent (valeur fictive pour l’algorithme commence bien)
- lire carCourant ( carCourant=getchar() ; )
- tant-que la fin de la phrase n’est pas atteinte
- si carCourant est un blanc
écrire carCourant si son prédécesseur n’est pas un caractère blanc
sinon écrire carCourant
- définir les nouvelles valeurs de carCourant et carPrecedent pour la prochaine itération
- fin tant-que
Remarque : la lecture d'une suite caractères n'est déclenchée que lorsque la touche <entrée> qui clôture
une ligne est tapée. Le résultat s'affichera donc après la validation de cette ligne bien que l'algorithme
traite en apparence les caractères au fur et à mesure de la saisie.
3.
Boucles imbriquées.
Ecrivez le programme qui génère les tables
forme matricielle. Ex :
1 : 1 2 3 4 5 6 7 8 9
2 : 2 4 6 8 10 12 14 16 18
3 : 3 6 9 12 15 18 21 24 27
…
10: 10 20 30 40 50 60 70 80 90
de multiplications de 1 à 10 en présentant le résultat sous
10
20
30
100
Remarque : printf("%3d", i) imprime l’entier i en réservant 3 caractères et en cadrant à droite.
Algorithme à affiner :
- définir les entiers i (n° de ligne) et j (n° de colonne)
- i <- 1
- tant que (i ≤ 10)
- afficher la ligne i
- générer un saut de ligne à l'affichage
- incrémenter i
- fin tant-que
L'action "afficher la ligne i " doit encore être affinée pour obtenir l'algorithme complet : les valeurs de la
table de i seront générées par une boucle affichant successivement le résultat de i*1, i*2, …, i*10
Téléchargement