Travaux dirigés 3
|
Les opérateurs de comparaison (>, <, >=, <=), d'égalité (==, !=) et logiques (&&, ||) renvoient 0 si le résultat est faux et 1 s'il est juste.
L'opérateur de négation logique (!) renvoie 0 pour toute valeur
non-nulle et 1 pour la valeur 0 :
!0 --> 1
!8 --> 0
Ecrire un sous-programme qui détermine si une année est bissextile.
Rappel :
Une année est bissextile si son expression numérale est divisible par 4, sauf si elle
est divisible par 100, à moins qu'elle ne le soit par 400...
Exemples :
1996 est bissextile (multiple de 4, mais pas de 100) ;
2000 est bissextile (multiple de 4, de 100, mais aussi de 400) ;
2100 n'est pas bissextile (multiple de 4, de 100, mais pas de 400).
Ecrire un programme réutilisant le sous-programme précédent et qui, à partir d'une date exprimée sous la forme "jour mois année", renvoie le nombre de jours écoulés depuis le début de l'année précisée dans la date.
Exemple : le programme appelé avec la date suivante : 01 03 1996 en paramètre produira le résultat : 61 jours (résultat de : 31+29+1).
Ecrire un programme C permettant de saisir les notes (entières) obtenues par une classe de 40 élèves à 3 examens successifs. Les notes sont entrées dans l'ordre suivant :
[note de l'élève 1 à l'examen 1]
[note de l'élève 2 à l'examen 1]
[note de l'élève 3 à l'examen 1]
...
[note de l'élève 40 à l'examen 1]
[note de l'élève 1 à l'examen 2]
[note de l'élève 2 à l'examen 2]
...
[note de l'élève 40 à l'examen 2]
[note de l'élève 1 à l'examen 3]
[note de l'élève 2 à l'examen 3]
...
[note de l'élève 40 à l'examen 3]
A l'issue de la saisie des notes, le programme devra produire la moyenne obtenue par
chaque élève à l'ensemble des examens.
Le Jeu de la vie
Sur une matrice n * n, une situation est composée de cases noires et de cases blanches.
Les cases noires indiquent une situation de vie, et les cases blanches, une situation de
mort.
Pour une case m[i][j], on définit quatre voisins :
m[i-1][j], m[i+1][j], m[i][j-1] et m[i][j+1].
A chaque tour de jeu, on réexamine la situation des cases de la grille selon les règles
suivantes :
![]() |
4 voisins noirs : "mort par étouffement". Si la case est blanche, elle reste blanche ; Si la case est noire, elle devient blanche. |
||
![]() |
3 voisins noirs : aucun changement. |
||
![]() |
2 voisins noirs : la case devient noire. Si la case est noire, elle reste noire ; Si la case est blanche, elle devient noire. |
||
![]() |
1 voisin noir : aucun changement. |
||
![]() |
0 voisin noir : "mort par isolement". Si la case est blanche, elle reste blanche ; Si la case est noire, elle devient blanche. |
Ecrire un programme qui, après avoir lu une configuration initiale au clavier, demande à l'utilisateur le nombre d'étapes qu'il veut visualiser, et les affiche une à une à l'écran.
Le problème peut être simplifié en prenant une matrice (n+2) * (n+2) dont les contours sont toujours blancs. En effet, comme les cases blanches n'interviennent pas dans la décision de modification de l'état d'une case, cette bordure rajoutée artificiellement permettra de ne pas faire de traitement particulier pour les cases de bordure ou pour les cases d'angle de la matrice n * n, qui sans cela ne posséderaient que 3 ou 2 voisins.
Ces pages ont été adaptées à partir de celles réalisées par J.D. Durou et Ph. Joly avec leur aimable autorisation.