Vous êtes sur la page 1sur 2

Université de la Méditerranée - Année 2005/2006

Examen de Programmation 1
Janvier 2006

Durée de l’épreuve : 2 heures.


Les notes de cours, TD et TP sont autorisées. Les calculettes sont interdites.
Cet examen est noté sur 15 points. A cette note sera ajoutée la note de TD/TP, sur 5.
Il y a 3 exercices à traiter.

Exercice 1 (30 mn, 4 points)


Soit t un tableau de huit nombres entiers initialisé avec les chiffres qui composent votre date
de naissance (jjmmaaaa). Par exemple, pour une personne née le 18 avril 1985, le tableau t
contient : 1 8 0 4 1 9 8 5.
On suppose que les variables i, j et aux représentent des nombres entiers et que la fonction
af f iche(t, n) affiche sur une même ligne les n éléments du tableau t séparés par un espace.
Décrire précisément les affichages produits lorsqu’on exécute les instructions ci-dessous (rappel :
si x et y sont deux entiers, la valeur de x%y est le reste de la division entière de x par y) :

affiche(t,8) ;
p = t[0]%2 ;
i = 1 ;
j = 7 ;
while (i <= j)
{
if(t[i]%2 != p)
{
aux = t[i] ;
t[i] = t[j] ;
t[j] = aux ;
j-- ;
}
else i++ ;
affiche(t,8) ;
}

Exercice 2 (40 mn, 5 points)


Jeu de casino
Il vous est demandé d’écrire un programme qui simule une partie de casino, en vous conformant
aux règles du jeu décrites ci-dessous.
Le joueur dispose au départ d’une quantité d’argent égale à T = 100  et va miser une partie
de cet argent (le montant S) sur un numéro n de son choix parmi les valeurs {0, 1, 2, 3, 4, 5}.
Le tirage aléatoire a ensuite lieu : soit x le numéro qui a été tiré.
Deux cas de figure peuvent se présenter :
– Si n = x : le joueur a gagné. Il récupère la somme S qu’il a misée et gagne autant. La somme
dont il dispose pour continuer à jouer est donc égale à T + S.
– Si n 6= x : le joueur a perdu. Il perd la somme S qu’il a misée sur le nombre n. La somme
dont il dispose pour continuer à jouer est donc égale à T − S.
Le joueur peut ensuite recommencer à jouer s’il le souhaite (et à condition qu’il ait encore de
l’argent, c’est-à-dire si T > 0) ou bien décider d’arrêter de jouer.

Lorsque le joueur décide d’arrêter de jouer ou bien lorsqu’il n’a plus d’argent, le programme
affiche le bilan du jeu :
– Si T > 100 , le programme affiche : “Vous avez gagné de l’argent !”
– Si T = 100 , le programme affiche : “Vous n’avez pas perdu d’argent”
– Si T < 100 , le programme affiche : “Vous avez perdu de l’argent !”
– Si T = 0 , le programme affiche : “Vous êtes ruiné !”

Exercice 3 (50 mn, 6 points)


Statistiques sur des températures
On désire écrire un programme qui fait quelques statistiques sur des relevés de température
effectués à Paris pendant le mois de janvier 2005.
La température a été relevée chaque jour, à chaque heure de la journée : le premier relevé
est fait à 0h, le deuxième à 1h, ..., le dernier à 23h. Ces données sont enregistrées dans un
tableau à deux dimensions, déclaré en variable globale par double tab temp[24] [32] ; tel que
le nombre tab temp[h] [j] est la température (en degrés) relevée à l’heure h le jour j (les jours
étant numérotés de 1 à 31, on n’utilise pas la valeur 0 pour le deuxième indice).

1) Ecrivez la fonction double max temp(int jr) qui renvoie la température maximale relevée
pendant le jour jr.

2) Ecrivez la fonction int nb jours glacials(void) qui renvoie le nombre de jours pendant lesquels
la température n’a pas dépassé 0 degré.

3) Ecrivez la fonction double temp moy journee(int jr) qui renvoie la température moyenne du
jour jr pendant la journée, c’est-à-dire entre 8h et 19h (bornes comprises).

4) On désire maintenant étudier des températures relevées à Paris pendant toute l’année 2005.
Chaque mois, les relevés ont été faits suivant les modalités qui ont été décrites ci-dessus pour
le mois de janvier.
On modifie donc le programme, en utilisant un tableau à trois dimensions, appelé tab temp 2005,
dans lequel le troisième indice sert à noter le numéro du mois (de 1 à 12).
a) Ecrivez la déclaration du tableau tab temp 2005.
b) Modifiez la fonction double temp moy journee(int jr) de la question 3 pour obtenir la fonction
double temp moy journee 2005(int jr, int ms) qui renvoie la température moyenne dans la
journée pendant le jour jr du mois ms.
c) Ecrivez la fonction double temp moy journee ete(void) qui renvoie la température moyenne
dans la journée pendant les mois d’été, c’est-à-dire entre le 1er juin et le 31 août.

Vous aimerez peut-être aussi