TP de Programmation en C
n°1
Les types entiers et leurs limites, les tableaux et la fonction main() paramétrée
http://www-sop.inria.fr/oasis/personnel/Carine.Courbis/c/
IUT GTR Sophia Antipolis
Oct 2000
Recommandations importantes :
Exercice 1 (fichier
fahrenheitCelsius.c)Affichez la table des températures en degrés Fahrenheit et leurs équivalents en degrés Celsius (minimum 0 °F, maximum 300 °F, incrément de 20 °F).
Exercice 2 (fichier
matriceAddition.c)Additionnez 2 matrices (une matrice étant un tableau à 2 dimensions).
Rappel : R = C + D
R matrice résultat, C et D les matrices à additionner
R, C et D doivent avoir le même nombre de lignes et de colonnes
Voilà comment calculer la valeur de la case de ligne i et de colonne j : Rij = Cij + Dij
Exemple de définition en C d’une matrice :
int matrice[NB_LIG][NB_MAX] = {{1,2,3}, {4,5,6}} ;
Exercice 3 (fichier
matriceMultiplication.c)Multipliez 2 matrices.
Rappel : R = C*D
R matrice résultat, C et D les matrices à multiplier
C ayant n lignes et o colonnes, D ayant o lignes et p colonnes et R ayant n lignes et p colonnes
Voilà comment calculer la valeur de la case de ligne i et de colonne j :
Exercice 4 (fichier factorielle.c)
Calculez n! en utilisant la relation de récurrence : n! = n*(n-1)! avec 1!=1
Deux solutions :
Codez la deuxième solution.
Voici le prototype de main : int main(int nbArg, char* argL[]) ;
L'appel de votre programme (appelé par exemple
factorielle) se fera par factorielle 6nbArg sera égal à 2, argL[0] = ² factorielle² et argL[1] = ² 6 ² .
Si l'utilisateur n'a tapé que
factorielle, affichez une message d’erreur.Pour convertir la chaîne contenant la valeur de n en int, il faut utiliser la fonction
int atoi(const char *s) ;
de la bibliothèque stdlib.h.Rappel : -2n-1
£ nombre signé £ 2n-1-1 (n étant le nombre de bits)0
£ nombre non signé £ 2n-1Exercice 5 (fichier
morpion.c)Implantez le jeu du morpion en C.
Vous avez besoin d’une grille 3*3 et de 2 joueurs ayant des pions différents.
A tour de rôle, chaque joueur positionne un de ses pions sur la grille. Le jeu se finit quand un joueur a réalisé une ligne, une colonne ou une diagonale avec ses pions (c'est le gagnant) ou quand la grille est pleine (pas de gagnant).
La grille est représentée par un tableau à 2 dimensions, global au module (i.e. accessible de n'importe quelle fonction). Chaque case contiendra soit VIDE, ROND ou CROIX.
Algorithme principal :
Initialisation de la grille à vide
Tant que (pas de gagnant ou pas grille pleine)
Afficher grille
Mettre un pion sur la grille
Nous vous fournissons le corps du programme. Votre rôle est de compléter ces quatre fonctions :
/* Initialise la grille du morpion à vide */
void initialiseGrille() ;
/* Affiche la grille du morpion
_ indique case vide, O pion joueur 1 et X pion joueur 2 */
void afficheGrille() ;
/* Saisie les coordonnées du nouveau pion à mettre sur la grille
Si les coordonnées sont en dehors de la grille ou si la case possède déjà un pion, la saisie est refusée, un message d'erreur est affiché, et le joueur doit rejouer
*/
void metUnPionSurLaGrille() ;
/* Teste si l'un des joueurs a gagné (ligne, colonne ou diagonale remplie de pions semblables). Dans ce cas, affiche un message pour indiquer le joueur qui a gagné.
S'il n'y a pas de gagnant, teste que la grille n'est pas pleine. Si elle est pleine, affiche un message indiquant qu'aucun des joueurs a gagné
Retourne TRUE si la grille est pleine ou si un joueur a gagné
FALSE sinon
*/
Boolean testeFinJeu() ;
Commencez d'abord par les deux premières fonctions et testez. Puis continuez avec la fonction
metUnPionSurLaGrille et testez. Et enfin, terminez avec la fonction testeFinJeu qui est un peu plus complexe.