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