Université Louis Pasteur
LICENCE 1ère année
Mercredi 21 février 2007
 
Travaux Dirigés
Algorithmique et Programmation
(sujet n°2)

Boucles


Notions et points abordés :

Syntaxe

Exécution

Exemple


for(expr1; expr2; expr3)

instruction


expr1 est une instruction exécutée une seule fois, en début de boucle.

expr2 est une condition évaluée avant chaque itération. Si le résultat est faux alors la boucle se termine.

expr3 est une instruction exécutée à la fin de chaque itération.

int i;
int somme=0;

for(i=1; i<=100; i++)
    somme += i;

Syntaxe

Exécution

Exemple


while(expression)

instruction



expression est une condition évaluée avant chaque itération. Si le résultat est faux alors la on sort de la boucle.

int i=1;
int somme=0;

while(i <= 100)

  {
     somme += i;

     i++;
  }

Syntaxe

Exécution

Exemple


do

instruction

while(expression)


expression est une condition évaluée après chaque itération. Si le résultat est faux vrai alors on sort de la boucle.

int i=0;
int somme=0;

do
  {
     somme += i;

     i++;
   }
while(i <= 100);


Exercices


Sommes

Écrire un programme C qui lit un entier n, calcule une des sommes suivantes et affiche le résultat :

  1.    1*1 + 2*2 + … + n*n
  2.    1 + 3 + … + 2*n-1
  3.    2 + 4 + … + 2*n
  4.    1 + (1 + 2) + … + (1 + 2 + …+ i) + …+ (1 + 2+ … + n)
  5.    1 + 1/2 + 1/3 + ... + 1/n


Factorielle

Écrire un programme C qui calcule la factorielle n! d’un nombre n lu au clavier, tant que l'utilisateur le demande. Rappel : n! = 1.2. … .n et 0!= 1.

Nombres premiers

Écrire un programme C qui affiche tous les nombres premiers de 1 à 100.
Rappel : Un nombre est premier s’il n’est divisible que par 1 et par lui-même.


Suites

Écrire un programme C qui lit un entier n et affiche le n-ième élément de la suite suivante :

  1. u0 = 1 ; un = 2un-1 +3, n>0

  2. u0 = 0 ; u1 = 1 ; un = un-1 + un-2 , n>1 (suite Fibonnacci)


Table de multiplication

  1. Écrire un programme C qui affiche la table de multiplication d’un entier n lu au clavier.

  2. Écrire un programme C qui affiche la table des produits pour n variant de 1 à 10 :

     X*Y    |   1   2   3   4   5   6   7   8   9  10

    ------------------------------------------------

    1      |   1   2   3   4   5   6   7   8   9  10

    2      |   2   4   6   8  10  12  14  16  18  20

    3      |   3   6   9  12  15  18  21  24  27  30

    4      |   4   8  12  16  20  24  28  32  36  40

    5      |   5  10  15  20  25  30  35  40  45  50

    6      |   6  12  18  24  30  36  42  48  54  60

    7      |   7  14  21  28  35  42  49  56  63  70

    8      |   8  16  24  32  40  48  56  64  72  80

    9      |   9  18  27  36  45  54  63  72  81  90

    10     |  10  20  30  40  50  60  70  80  90 100


Compter les voyelles

Écrire un programme C qui calcule le nombre de voyelles dans un texte non accentué et terminé par un caractère #. On suppose que le texte n'est composé que de lettres minuscules non accentuées, que les mots ne sont séparés que par des espaces, qu'il n'y a aucune ponctuation et qu'il n'y a pas de caractère retour-chariot.


Deviner un nombre

Écrire un programme C qui tire au sort un nombre de 1 à 100 et demande à l’utilisateur de le deviner. Si l’utilisateur a trouvé le nombre, alors le jeu s’arrête ; sinon l’ordinateur répond "plus petit" ou "plus grand". L’utilisateur a le droit à cinq tentatives.


Deviner un nombre (version 2)

Écrire un programme C qui tire au sort un nombre de 1 à 100 et demande à l’utilisateur de le deviner. Si l’utilisateur a trouvé le nombre, alors le jeu s’arrête ; si l'écart entre le nombre recherché et la réponse de l'utilisateur est

L’utilisateur a le droit à cinq tentatives pour deviner le nombre.


Le jeu des allumettes

Chaque joueur puise à tour de rôle de 1 à 3 allumettes dans un tas comprenant initialement N allumettes. Celui qui prend la dernière allumette gagne le jeu. Le programme vérifie la validité des choix des 2 joueurs et désigne le vainqueur.


Triplets

Écrire un programme C qui affiche les triplets d’entiers (i, j, k), tel que j < i < n (n donné par l’utilisateur) et i2+ j2= k2. Modifier le programme pour que (i, j, k) vérifie i3 + j3 = k3.


Puissance

Calculer la puissance n-ième de x (x^n), pour x et n des entiers lus au clavier.


Rectangle

Écrire un programme C qui demande la longueur et la largeur d’un rectangle et affiche :

  1. le rectangle plein d’étoiles

  2. le contour du rectangle.
Exemple pour un rectangle de longueur 4 et de largeur 6 :

1. 

    ******
    ******
    ******
    ******


2.

    ******
    *    *
    *    *
    ******



Triangle

Écrire un programme C qui lit un des côtés d’un triangle et affiche :

  1. un triangle plein d’étoiles
  2. le contour du triangle.
Exemple pour un triangle de côté 5 :

1. 

    *
    **
    ***
    ****
    *****


2.

    *
    **
    * *
    *  *
    *****

Compte à rebours

Écrire un programme C qui lit un nombre positif entré au clavier comme une suite de chiffres non nuls, terminée par zéro (Contrôler s'il s'agit vraiment de chiffres), et qui affiche le nombre à rebours.

Exemple :

./compte_a_rebours
Entrer une suite de chiffres (terminée par 0): 1 2 3 4 0
Le résultat est : 4321


PGCD

Écrire un programme C qui calcule le plus grand commun diviseur de deux entiers naturels entrés au clavier en utilisant l'algorithme d'Euclide (pgcd(a,b) = pgcd(b,a modulo b), si a>b>0).