TP 1 Et 2 [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

1LISI

Atelier Programmation

TP N° 01 : Les pointeurs Objectifs Apprendre la manipulation de l'un des principaux aspects de programmations dans le langage C : les pointeurs ainsi que la forte liaison tableaux- pointeurs. Exercice 1 Complétez-le pour chaque instruction du programme ci-dessus

Exercice 2 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 : a) *P+2 b) *(P+2) c) &P+1 1

1LISI

Atelier Programmation

d) &A[4]-3 e) A+3 f) &A[7]-P g) P+(*P-10) h) *(P+*(P+8)-A[7]) Exercice 3 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 4 Ecrire un programme qui lit un entier X et un tableau A de type int au clavier et élimine toutes les occurrences de X dans A en tassant les éléments restants. Afficher le tableau A. Le programme utilisera les pointeurs P1 et P2 pour parcourir le tableau. Exercice 5 Ecrire un programme qui lit la dimension N d'un tableau T du type int (dimension maximale : 100), 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 TPOS et toutes les valeurs strictement négatives dans un troisième tableau TNEG. Afficher les tableaux TPOS et TNEG. NB : Utiliser des pointeurs. Exercice 6 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 PH. Le programme n'utilisera pas de variables numériques. Exercice 7 Ecrire un programme qui lit 5 mots (une phrase de 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 8 Soient deux tableaux d’entiers T1 (maximum 50) et T2 (max 100). Ecrire un programme C qui permet de vérifier que T2 existe dans T1. Si T2 existe dans T1, alors supprimer les éléments de T2 dans T1. NB : Utiliser le formalisme pointeur. Exemple :

2

1LISI

Atelier Programmation

Exercice 9 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 10 Ecrire une fonction qui permet de rechercher dans un tableau d'entiers tab une valeur A. void ChercherVal (int tab[], int n, int A, int *pos, int *nbOcc); Dans pos, la fonction sauvegarde l'indice de la dernière apparition et -1 si la valeur n'a pas été trouvée. Dans nbOcc, elle sauvegarde le nombre d'occurrence de A dans tab. Exercice 11 1- Écrire une fonction est EstVoyelle qui prend en paramètre un caractère et retourne 1 si ce caractère est une voyelle et 0 si non. 2- Écrire une fonction NbVoyelle: void NbVoyelles(char ch[], int *v, int *s) À travers v, la fonction sauvegarde le nombre de voyelles dans la chaîne ch. Dans s, la fonction sauvegarde le nombre de consonnes. Exercice 12 Ecrire une fonction qui permet de rechercher dans un tableau d'entiers tab de taille n les deux plus grandes valeurs : void deux_max (int T[ ], int n, int *max1, int *max2); Exemple : si T=[3, 1, 5, 5, 3, 6, 2, 6] alors max1=6 et max2 = 5. Exercice 13 Ecrire une fonction SupprimerC qui à partir d’un texte TXT et d’un caractère C enlève tous les caractères C du text(e TXT. Les modifications se feront dans la même variable TXT. TXT="Cette ligne contient quelques lettres e" 3

1LISI

Atelier Programmation

C='e' Alors TXT="Ctt lign contint qulqus lttrs"

4

1LISI

Atelier Programmation

TP N 02 : Les Structures Objectifs Manipuler les structures de données. Exercice 1 Déclarer une variable P ayant les informations suivantes :  Nom (chaîne de caractères)  Prénom (chaîne de caractères)  Date de naissance : Jour (entier), Mois (entier) et Année (entier)  Matricule (chaîne de caractères)

Remplir P avec les informations suivantes : Nom : "Omrani" Prénom : "Ahmed" Date de naissance : "03/04/2005" Matricule : "A32" Exercice 2 Réaliser une structure point définit par ses coordonnées (Abscisse et Ordonné). 1. Créer les fonctions suivantes :  Saisir() : permettant de saisir un point.  Afficher() : permettant d’afficher un point.  Deplacer() : permettant de déplacer un point avec un déplacement dx horizontalement et dy verticalement.  Milieu() : permettant de retourner le point milieu entre deux points. 2. Créer un programme un programme principale permettant de :  Définir deux points A (6.5, 2.3) et B (-9, 8.5).  Déplacer B de 3 horizontale et 8 verticales.  Afficher le point milieu entre A et B.

Exercice 3 Un nombre complexe est défini par une partie réelle et une partie imaginaire (z=x + j y). 1. Déclarer une structure COMPLEXE. 2. Ecrire une fonction SaisiComplexe permettant de lire la partie réelle et la partie imaginaire d’un nombre complexe. 5

1LISI

Atelier Programmation

3. Ecrire une fonction SommeCompexe permettant de calculer la somme de deux nombres complexes. 4. Ecrire une fonction ProduitCompexe permettant de calculer le produit de deux nombres complexes. 5. Dans la fonction main, étant donnée deux nombres complexes Z1 et Z2 saisis au clavier, calculer et afficher le nombre Z3 tel que Z3 = Z1 + Z2, et le nombre Z4 tel que Z4 = Z1*Z2. Exercice 4 Un bus est caractérisé par un numéro, un lieu de départ, un lieu d’arrivée, un horaire de départ et un horaire d’arrivée. L’horaire est exprimé en (heure / minutes / secondes). 6. Déclarer la structure HORAIRE. 7. Déclarer la structure BUS. 8. Ecrire une fonction SaisirBus un tableau de N éléments de type Bus. 9. Ecrire une fonction AffichBus qui permet d’afficher les numéros des bus qui partent d’une ville VI1 à la direction d’une ville VI2, entre deux horaires donnés 10. Ecrire une fonction AfficheHeureArriv qui permet d’afficher l’heure d’arrivée d’un bus sachant son numéro, son lieu et heure de départ et son lieu d’arrivée. 11. Ecrire un programme principal main () qui permet de : a. Lire les informations de 10 bus. b. Afficher les bus qui partent de Nabeul vers Tunis entre 12h 15mn 00s et 15h20mn 00s. c. Afficher l’heure d’arrivée du bus numéro 5150 partants de Sousse vers Tunis à 15h 30mn 00s. Exercice 5 On désire définir une structure appelée SPORTIF pour décrire une compétition sportive de course. Sachant qu’un sportif est caractérisé par : - un nom et prénom - son pays - sa date de naissance - sa performance dans la course, définie en secondes 1. Définir et déclarer la structure SPORTIF. 2. Ecrire une fonction SaisiSport qui permet de lire un tableau T_SPORT de N éléments de type SPORTIF. 3. Ecrire une fonction TriSport qui permet de trier le tableau T_SPORT selon la performance des sportifs. 6

1LISI

Atelier Programmation

4. Ecrire une fonction AffichSport qui permet d’afficher les noms, prénoms et pays des trois vainqueurs qui vont recevoir les médailles d’or, d’argent et de bronze. Exercice 6 Dans un supermarché un produit est caractérisé par son code à barre (50 chiffres), son nom (20 caractères) et son prix. Un caissier caractérisé par son identifiant (30 caractères) son nom (20 caractères) et l’ensemble des produits vendus pendant la journée (tableau de 100 produits) doit enregistrer les produits achetés par les clients et indiquer le solde de sa caisse à la fin de la journée. 1. Définir la structure de données « Produit » 2. Définir la structure « Caissier ». 3. Ecrire une fonction AfficherProduit permettant d’afficher un produit. 4. Ecrire une fonction VendreProduit permettant de vendre un produit par un caissier. 5. Ecrire une fonction ListeProduits qui permet d’afficher la liste des produits vendus par le caissier. 6. Ecrire une fonction SoldeCaisse qui retourne le solde final de la caisse à la fin d’une journée (la somme des prix des produits vendus par le caissier) 7. Ecrire une fonction ChangerPrix permettant de changer le prix d’un Produit. 8. Ecrire une fonction PlusChere qui retourne le produit le plus chère vendue par le caissier. 9. Ecrire une fonction ChercherProduit permettant de vérifier est ce qu’un produit a été vendu ou non par le caissier. (recherche suivant le code à barre du produit). 10. Dans le supermarché il existe 10 caissiers, écrire une fonction MeilleurCaissier permettant de retourner le caissier qui a marqué le plus grand montant de la caisse à la fin de la journée.

7

1LISI

Atelier Programmation

Correction TP N° 01 Exercice 1

Exercice 2 a) b) c) d) e) f) g) h)

*P+2 = 14 *(P+2) = 34 &P+1 = A+1 &A[4]-3= &A[1] A+3 =&A[3] &A[7]-P = A+7-A= 7 P+(*P-10)= P+2 = &A[2] *(P+*(P+8)-A[7])= *(A+90-89)=A[1]=23

Exercice 3

#include main() { int N, M ; int *PA, *PB ; int A[50],B[50] ; printf("\n Donner N et M ") ; scanf("%d%d",&N,&M) ; for(PA=A ;PA