TP n°4                        INFORMATIQUE     DEUG MIAS+MASS S1     2001-2002

Exercice 1
On veut écrire un programme permettant de gérer un examen comportant les épreuves suivantes avec les coefficients indiqués :
        maths        0.5
      physique     2
      électronique 1.5
      informatique 6
1°) Dans un permier temps, on construit un programme qui, pour un candidat,
    - saisit son nom et ses notes sur 20,
    - affiche, en face de son nom, son résultat et éventuellement sa mention.
2°) Dans un deuxième temps, le programme est complété pour permettre de traiter plusieurs candidats. A la fin du traitement, indiquée par la réponse "non" à la question "un autre candidat ? ", le pourcentage de reçus sera affiché.

Exercice 2
Un ivrogne est au pied d'un escalier et tente de parvenir à son sommet :
    - dans tous les cas il a 4 chances sur 10 d'arriver à monter une marche.
    - au pied de l'escalier, il a 6 chances sur 10 d'y rester.
    - s'il est sur une marche, il a 3 chances sur 10 d'y rester, 2 chances sur 10 de redescendre d'une marche et 1 chance sur 10 de dévaler jusqu'en bas.
1°) Ecrire un programme simulant une "montée" et affichant à chaque pas le niveau atteint.
2°) Ajouter les instructions permettant d'enchainer plusieurs "montées" et de calculer le nombre moyen de pas de montée.
Indications : pour simuler le premier pas, il suffit de tirer au hasard un nombre n entre  1 et  10. Si n<=6 l'ivrogne reste en bas, sinon il monte...
N.B. Le nombre de marches de l'escalier sera donné par l'utilisateur.

Exercice 3
On se propose d'afficher en grand sur l'écran selon un dessin similaire à l'affichage digital. Le caractère composant le dessin sera le chiffre lui-même. Un dessin de largeur L devra respecter les contraintes suivantes :
    - 3 <= L <= 12
    - hauteur du dessin 2*L-1
    - la barre médiane du chiffre (s'il en a une) sera au milieu de la hauteur
Exemple avec L=4 :
0000     1    2222   3333   4  4   5555   6      7777   8888   9999
0  0     1       2      3   4  4   5      6         7   8  8   9  9
0  0     1       2      3   4  4   5      6         7   8  8   9  9
0  0     1    2222   3333   4444   5555   6666      7   8888   9999
0  0     1    2         3      4      5   6  6      7   8  8      9
0  0     1    2         3      4      5   6  6      7   8  8      9
0000    111   2222   3333      4   5555   6666      7   8888   9999

Ecrire un programme
    - qui saisit, avec contrôle, la largeur L du dessin,
    - saisit le chiffre à dessiner,
    - dessine le chiffre choisi.
Prévoir la possibilité de recommencer à dessiner avec la même largeur ou avec une autre largeur sans sortir du programme.

Exercice 4 : Dans cet exercice S est une chaîne d'au plus 75 caractères qui sera donnée par l'utilisateur.
Ecrire un programme permettant de saisir S puis, au choix de l'utilisateur, d'effectuer un des traitements suivants :
    -1- afficher S et la souligner n fois par des tirets, le nombre n étant au choix de l'utilisateur,
    -2- afficher S dans un cadre. Le caractère composant le cadre étant au choix de l'utilisateur,
    -3- afficher S verticalement.
Indication : pour avoir le i-ième caractère de S, on utilisera la fonction copy(S,i,1).

Exercice 5 : pour aller plus loin
On cherche à remplir un sac-à-dos avec des objet de différentes tailles. Le programme demande à l''utilisateur d'indiquer la capacité du sac puis il remplit le sac avec des objets successifs de tailles aléatoires.
Si la taille de l'objet saisi dépasse la moyenne des tailles des objets déjà dans le sac, le programme propose à l'utilisateur :
    - soit d'échanger cet objet avec le plus gros objet* (qui est jeté) déjà dans le sac,
    - soit d'échanger cet objet avec le plus petit objet* (qui est jeté) déjà dans le sac,
    - soit de mettre cet objet dans le sac.
Le remplissage sera réussi s'il est compris entre 90% et 100% de la capacité du sac. Le programme fera autant de tentative que nécessaire pour réussir son remplissage (à chaque échec le sac est vidé).
* attention au premier objet mis dans le sac!

Rappels
La fonction LENGTH(S) retourne la longueur de la chaîne S.
La fonction copy(S,d,k) retourne la sous-chaîne de S commençant au d-ième caractère et ayant pour longueur k.
La fonction RANDOM(n) retourne un entier tiré au hasard et compris entre 0 et n-1.
La fonction UPCASE(C) retourne la majuscule associée au caractère C.