Université Abdelmalek Essaadi Ecole Nationale des Sciences Appliquées de Tétouan TRAVAUX PRATIQUES Programmation C Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 2AP2 | [email protected] | [email protected] | [email protected] TP langage C TP 0 : Hello world ! Exercice 1 : Ecrire un programme qui saisit 2 entiers et affiche successivement la somme, la différence, le produit et le quotient de ces 2 entiers. Exercice 2 : Ecrire un programme qui demande à l’utilisateur de donner le rayon d’un cercle et lui retourne sa surface et son périmètre. Exercice 3 : Ecrire un programme qui saisit deux entiers a et b et permute la valeur de ces deux entiers. Exercice 4 : Ecrire un programme qui saisit un réel x et un entier n et affiche x à la puissance n. Exercice 5 : Ecrire un programme retournant la factorielle d’un nombre entier entré par l’utilisateur. Exercice 6 : Ecrire un programme qui résout les équations du premier degré (ax + b = 0). Le programme demande a et b à l’utilisateur puis indique le nombre de solutions ainsi que leurs valeurs. Exercice 7 : Ecrire un programme qui résout les équations du second degré (ax2 + bx + c = 0). Le programme demande a, b et c à l’utilisateur puis indique le nombre de solutions ainsi que leurs valeurs. Exercice 8 : Ecrire un programme retournant le PGCD de 2 entiers entrés par l’utilisateur. Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 2 TP langage C TP 1 : Les boucles Exercice 9 : Ecrivez un programme qui lit N nombres entiers au clavier et qui affiche leur somme, leur produit et leur moyenne. Choisissez un type approprié pour les valeurs à afficher. Le nombre N est à entrer au clavier. Résolvez ce problème a) en utilisant while, b) en utilisant do - while, c) en utilisant for. Exercice 10 : Calculez par multiplications successives X^N de deux entiers naturels X et N entrés au clavie Exercice 11 : Calculez la somme des N premiers termes de la série harmonique : 1 + 1/2 + 1/3 + ... + 1/N Exercice 12 : Affichez un triangle isocèle formé d'étoiles de N lignes (N est fourni au clavier): Nombre de lignes : 7 * *** ***** ******* ********* *********** ************* Exercice 13 (a rendre) : Affiche la table des produits pour N variant de 1 à 10 : X*Y I 0 1 2 3 4 5 6 7 8 9 10 -------------------------------------------------0 I 0 0 0 0 0 0 0 0 0 0 0 1 I 0 1 2 3 4 5 6 7 8 9 10 2 I 0 2 4 6 8 10 12 14 16 18 20 3 I 0 3 6 9 12 15 18 21 24 27 30 4 I 0 4 8 12 16 20 24 28 32 36 40 5 I 0 5 10 15 20 25 30 35 40 45 50 6 I 0 6 12 18 24 30 36 42 48 54 60 7 I 0 7 14 21 28 35 42 49 56 63 70 8 I 0 8 16 24 32 40 48 56 64 72 80 9 I 0 9 18 27 36 45 54 63 72 81 90 10 I 0 10 20 30 40 50 60 70 80 90 100 Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 3 TP langage C Exercice 14 : Ecrire un programme C qui calcule n! (factoriel) une fois avec un while puis une seconde fois avec un for. Exercice 15 : Affichez un triangle formé d'étoiles de N lignes (N est fourni au clavier): Nombre de lignes : 5 * ** *** **** ***** Exercice 16 Ecrire un programme C qui teste si un nombre est premier ou pas, puis un programme C qui teste tous les nombres entre 1 et N TP 2 : Les Tableaux Exercice 17 : Ecrire un programme dont lequel vous déclarer et initialisez un tableau puis vous affichez les éléments du tableau Exercice 18 : Ecrire un programme qui demande à l’utilisateur de de déclarer un tableau de 10 éléments, puis remplir le tableau et l’afficher Exercice 19 : Ecrire un programme qui lit la taille N d'un tableau T du type int (dimension maximale: 50 vérifier la taille et demandez à l’utilisateur de saisir la taille tant que la valeur n’est pas comprise entre 10 et 50), remplit le tableau par des valeurs entrées au clavier et l’afficher. Exercice 20 : Ecrire un programme qui lit la taille N d'un tableau T du type int (dimension maximale: 50 vérifier la taille et demandez à l’utilisateur de saisir la taille tant que la valeur n’est pas comprise entre 10 et 50), remplit le tableau par des valeurs entrées au clavier et l’afficher. Effacez ensuite les occurrences de 5 et tassez les éléments restant. Afficher le tableau résultant Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 4 TP langage C Exercice 21 : Ecrire un programme qui lit la taille N d'un tableau T du type int , remplit le tableau par des valeurs entrées au clavier et affiche le tableau. Ranger ensuite les éléments du tableau T dans l'ordre inverse sans utiliser de tableau d'aide. Afficher le tableau résultant. Exercice 22 : Ecrire un programme qui lit la taille N d'un tableau T du type int , remplit le tableau par des valeurs entrées au clavier et affiche le tableau. Copiez ensuite toutes les composantes strictement positives dans un deuxième tableau TP et toutes les valeurs strictement négatives dans un troisième tableau TN. Afficher les tableaux TP et TN. Exercice 23 : Ecrire un programme : 1. 2. 3. 4. 5. 6. 7. Demande à l’utilisateur de saisir la taille du tableau Crée un objet tableau avec la taille entrée par l’utilisateur Demande à l’utilisateur de remplir le tableau Calcule la somme des éléments saisis Calcule la moyenne des éléments Copier le tableau dans un deuxième tableau T2 et l’afficher Classer les éléments du tableau dans un ordre croissant Exemple tableau taille = 5 Somme = 5+10+2+17+23 = 57 5 10 2 17 23 5 10 17 23 Tableau trié 2 Exercice 24 : Ecrire un programme qui calcule le plus grand écart dans un tableau (l'écart est la valeur absolue de la différence de deux éléments). Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 5 TP langage C TP 3 : Les Chaînes de Caractère Exercice 25 : Écrire un programme déterminant le nombre de lettres « e » présentes dans un texte Exercice 26 : Écrire un programme qui supprime toutes les lettres « e » d’un texte puis afficher le nouveau texte Exercice 27 : Écrire un programme qui lit au clavier un mot et qui l’affiche à l’envers. Exercice 28 : Ecrire un programme qui lit un verbe régulier en "er" au clavier et qui en affiche la conjugaison au présent de l'indicatif de ce verbe. Contrôlez s'il s'agit bien d'un verbe en "er" avant de conjuguer. Utiliser les fonctions gets, puts, strcat et strlen Exercice 29 : Ecrire un programme qui demande l'introduction du nom et du prénom de l'utilisateur et qui affiche alors la longueur totale du nom sans compter les espaces. Exercice 30 : Ecrire un programme qui lit deux chaînes de caractères CH1 et CH2, les compare lexicographiquement et affiche le résultat. Exercice 31 : Ecrire un programme qui lit deux chaînes de caractères CH1 et CH2 et qui copie la première moitié de CH1 et la première moitié de CH2 dans une troisième chaîne CH3. Afficher le résultat Exercice 32 : Ecrire un programme qui lit 10 mots et les mémorise dans un tableau de chaînes de caractères. Trier les 10 mots lexico-graphiquement en utilisant les fonctions de la bibliothèque string. Afficher le tableau trié. Utilisez la méthode de tri par sélection directe Exercice 33 : Ecrire un programme qui lit un nombre entre 1 et 7 et qui affiche le nom du jour de la semaine correspondant Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 6 TP langage C Exercice 34 : Ecrire un programme qui lit une chaîne de caractères CH et qui convertit toutes les majuscules dans des minuscules et vice-versa. Le résultat sera mémorisé dans la même variable CH et affiché après la conversion Exercice 35 : Ecrire un programme qui supprime la première occurrence d'une chaîne de caractères OBJ dans une chaîne de caractères SUJ Exercice 36 : Ecrire un programme qui détermine si le mot donné au clavier est un palindrome. TP 4 : Les Fonctions et Pointeurs Exercice 37 : Ecrire un programme qui lit deux tableaux A et B et leurs dimensions N et M au clavier et qui ajoute les éléments de B à la fin de A. Utiliser le formalisme pointeur à chaque fois que cela est possible Exercice 38 : Testez le problèm2 suivant et donner les résultats Soit P un pointeur qui 'pointe' sur un tableau A: int A[] = {12, 23, 34, 45, 56, 67, 78, 89, 90}; int *P; P = A; Quelles valeurs ou adresses fournissent ces expressions : *P+2 *(P+2) &P+1 &A[4]-3 A+3 &A[7]-P P+(*P-10) *(P+*(P+8)-A[7]) Exercice 39 : Ecrire un programme qui lit un entier X et un tableau A du type int au clavier et élimine toutes les occurrences de X dans A en tassant les éléments restants. Le programme utilisera les pointeurs P1 et P2 pour parcourir le tableau. Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 7 TP langage C Exercice 40 : Ecrire un programme qui range les éléments d'un tableau A du type int dans l'ordre inverse. Le programme utilisera des pointeurs P1 et P2 et une variable numérique AIDE pour la permutation des éléments Exercice 41 : Ecrire de deux façons différentes, un programme qui vérifie sans utiliser une fonction de <string>, si une chaîne CH introduite au clavier est un palindrome: a) en utilisant uniquement le formalisme tableau b) en utilisant des pointeurs au lieu des indices numériques Exercice 42 : Ecrire un programme qui lit une chaîne de caractères CH et détermine la longueur de la chaîne à l'aide d'un pointeur P. Le programme n'utilisera pas de variables numériques. Exercice 43 : Ecrire un programme qui lit une chaîne de caractères CH au clavier et qui compte les occurrences des lettres de l'alphabet en ne distinguant pas les majuscules et les minuscules. Utiliser un tableau ABC de dimension 26 pour mémoriser le résultat et un pointeur PCH pour parcourir la chaîne CH et un pointeur PABC pour parcourir ABC. Afficher seulement le nombre des lettres qui apparaissent au moins une fois dans le texte. Exemple: Entrez un ligne de texte (max. 100 caractères) : ENSAS La chaîne "Jeanne" contient : 1 fois la lettre 'A' 1 fois la lettre 'E' 1 fois la lettre 'N' 2 fois la lettre 'S' Exercice 44 : Ecrire un programme qui lit une matrice A de dimensions N et M au clavier et affiche les données suivantes en utilisant le formalisme pointeur à chaque fois que cela est possible: a) la matrice A b) la transposée de A c) la matrice A interprétée comme tableau unidimensionnel Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 8 TP langage C Exercice 45 : Ecrire un programme qui lit deux matrices A et B de dimensions N et M respectivement M et P au clavier et qui effectue la multiplication des deux matrices. Le résultat de la multiplication sera affecté à la matrice C, qui sera ensuite affichée. Utiliser le formalisme pointeur à chaque fois que cela est possible. Exercice 46 : Ecrire un programme qui lit 5 mots d'une longueur maximale de 50 caractères et les mémorise dans un tableau de chaînes de caractères TABCH. Inverser l'ordre des caractères à l'intérieur des 5 mots à l'aide de deux pointeurs P1 et P2. Afficher les mots. Exercice 47 : Ecrire un programme qui contient une : • • • fonction MOYENNE du type float pour afficher la moyenne arithmétique de deux nombres réels entrés au clavier calcule la valeur XN pour une valeur réelle X (type double) et une valeur entière positive N (type int) fonction MIN et une fonction MAX qui déterminent le minimum et le maximum de deux nombres réels. Le programme aura un menu qui va demander à l’utilisateur la fonction désirée et le menu s’affichera toujours tant que l’utilisateur n’a pas choisi de sortir du programme Exercice 48 : Ecrire la fonction AFFICHE_T à deux paramètres T et N qui affiche N composantes du tableau T du type int. Ecrire la fonction SOMME_T qui calcule la somme des N éléments d'un tableau T du type int. N et T sont fournis comme paramètres; la somme est retournée comme résultat du type long. Exercice 49 : Ecrire des fonctions pour trier un tableau : • • • • En utilisant le tri de shell En utilisant le tri par sélection En utilisant le tri par insertion En utilisant le tri par propagation Le porgramme aura en plus des fonctions de tris demandé une fonction qui va permettre de lire un tableau et une fonction pour l’affichage du tableau et enfin un menu pour permettre à l’utilisateur de choisir le tri voulu et le menu s’affichera tant qu’il n’a pas demander de quitter le programme Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 9 TP langage C Exercice 50 : Cet exercice devra se faire sans passer par les fonctions prédéfinis dans la bibl. String et Stdlib. Le but ici est de dévlopper vos propres fonctions pour la manipulation des chaines de caractère En plus de ces fonctions il doit y avoir une fonction qui permet de lire la chaîne de caractère et une fonction pour l’affichage de la chaine Ecrire un programme qui contient les fonctions suivantes : • • • • • • • LONG_CH qui retourne la longueur d'une chaîne de caractères CH comme résultat. Sans utilisez le fonction strlen de la bibl. String (calcule de longeur). MAJ_CH qui convertit toutes les lettres d'une chaîne en majuscules, sans utiliser de variable d'aide. AJOUTE_CH à deux paramètres CH1 et CH2 qui copie la chaîne de caractères CH2 à la fin de la chaîne CH1 sans utiliser de variable d'aide (fonction de concaténation). Ecrire la fonction INVERSER_CH qui inverse l'ordre des caractères d'une chaîne CH. Utiliser la fonction LONG_CH (déjà définie ) et définir une fonction d'aide PERMUTER_CH qui échange les valeurs de deux variables du type char. Ecrire la fonction NMOTS_CH qui retourne comme résultat le nombre de mots contenus dans une chaîne de caractères CH. Ecrire la fonction MOT_CH qui retourne un pointeur sur le N-ième mot d'une chaîne CH s'il existe, sinon un pointeur sur le symbole de fin de chaîne (fonction pour rechercher une sous chaine dans une chaine). Ecrire la fonction EGAL_N_CH qui retourne la valeur 1 si les N premiers caractères de CH1 et CH2 sont égaux, sinon la valeur 0. (Si N est plus grand que la longueur de CH1 ou de CH2, le résultat peut être 1 ou 0) (fonction de comparaison). Puis implémentez ces fonctions dans un programme main avec un menu TP 5 : LES FICHIERS Exercice 51 Créer puis afficher à l'écran le fichier person.txt dont les informations sont structurées de la manière suivante : • • • Numéro de matricule (entier) Nom (chaîne de caractères) Prénom (chaîne de caractères) Le nombre d'enregistrements à créer est à entrer au clavier par l'utilisateur. Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 10 TP langage C Exercice 52 Ecrire un programme qui crée sur disquette un fichier personbis.txt qui est la copie exacte (enregistrement par enregistrement) du fichier person.txt Exercice 53 Créer sur disquette puis afficher à l'écran le fichier FAMILLE.TXT dont les informations sont structurées de la manière suivante : • • • • • Nom de famille Prénom du père Prénom de la mère Nombre d'enfants Prénoms des enfants Le nombre d'enregistrements à créer est entré au clavier. Note : Le nombre de rubriques des enregistrements varie avec le nombre d'enfants ! Ahmed Bentajer | Sana Nabil | Chaimae Moumouh 11