Vous êtes sur la page 1sur 19

ISTA HAY RYAD TDI1A

2011/2012

Langage de programmation structure Les 101 Exercices en langage C


Forever trust in who we are, and nothing else matters Exercice 1 : Ecrire un programme qui permet dafficher le message Hello world lcran. Exercice 2 : Ecrire un programme qui permet dchanger les valeurs de deux entiers A et B (les valeurs de A et B, vont tre saisies par lutilisateur). Il est demand dans ce programme : Dafficher les deux valeurs initiales de A et B. Effectuer la permutation de A et B. Afficher les deux valeurs de A et B permutes.

Exercice 3 : Ecrire un programme qui permet de faire la somme, la soustraction, la multiplication et enfin la division de deux nombres rels X et Y. Afficher tous les rsultats.
Exercice 4 : Ecrire un programme qui lit le prix HT dun article, le nombre darticles et le taux de TVA, et qui fournit le prix total TTC correspondant. Faire en sorte que des libells apparaissent clairement.

Exercice 5 : Ecrire un algorithme qui demande un nombre lutilisateur, et linforme ensuite si ce nombre est positif ou ngatif (on inclut cette fois le traitement du cas o le nombre vaut zro). Exercice 6 : Ecrire un programme qui demande deux nombres lutilisateur et linforme ensuite si le produit est ngatif ou positif (on inclut cette fois le traitement du cas o le produit peut tre nul). Attention toutefois, on ne doit pas calculer le produit ! Exercice 7 : Ecrire un programme qui permet la rsolution dune quation du premier degr (une quation sous la forme ax+b=0) Exercice 8 : Ecrire un programme qui permet la rsolution dune quation du second degr (une quation sous la forme ax2+bx+c=0)

Exercice 9 :Ecrivez un programme qui range trois nombres donn x, y, z, dans l'ordre croissant (x < y < z). Exercice 10 : quel est le rsultat final du programme suivant ? int main () { int i=4; i+=1; i-=1; i*=2; i++; i--; printf("i = %d\n",i);
Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A system("pause"); return 0; }

2011/2012

Exercice 11: La direction dun supermarch a dcid daccorder des rductions ses clients selon le montant dachat. La rduction est calcule selon les rgles suivantes: -20% pour un montant dachat de plus de 5000 dhs -15% pour un montant dachat entre 3000 dhs<montant dachat <= 5000 dhs -10% pour un montant dachat entre 1000 dhs <montant dachat <= 3000 dhs -Aucune rduction pour un montant dachat infrieur 1000 dhs. Ecrire un programme qui permet de calculer et dafficher la rduction et montant payer Exercice 12: La direction dune entreprise dsire automatiser le calcul de lindemnit verser aux cadres en cas de licenciement. Aprs danciennet, dans lentreprise, il sera allou aux cadres licencis une indemnit tenant compte de leur anciennet et stablissant comme suit: La moiti du salaire dun mois par anne danciennet : pour la tranche danciennet entre 1 ans et 10 ans. Au-del de 10 ans un mois de salaire par anne danciennet. Une indemnit supplmentaire serait alloue aux cadres gs de plus de 45 ans de: - 2 mois de salaire si le cadre est g de 46 49 ans. - 5 mois si le cadre est g de plus de 50 ans. Ecrire un programme qui permet de saisir lge , lanciennet et le dernier salaire et dafficher lindemnit du cadre. Exercice 13 : Ecrire un programme qui demande un nombre de dpart, et qui ensuite crit la table de multiplication de ce nombre, prsente comme suit (cas o l'utilisateur entre le nombre 5) : Table de 5 : 5x1=5 5 x 2 = 10 5 x 3 = 15 5 x 10 = 50 Exercice 14 : Ecrire un programme qui demande un nombre de dpart, et qui calcule la somme des entiers jusqu ce nombre. Par exemple, si lon entre 5, le programme doit calculer : 1 + 2 + 3 + 4 + 5 = 15 Exercice 15 : Ecrire un programme qui demande un nombre de dpart, et qui calcule sa factorielle. NB : la factorielle de 8, note 8 ! vaut 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

Exercice 16 : Ecrire un programme qui demande successivement 10 nombres lutilisateur, et qui lui dise ensuite quel tait le plus grand parmi ces 10 nombres et sa position : Entrez le nombre numro 1 : 12 Entrez le nombre numro 2 : 14 Entrez le nombre numro 10 : 6 Le plus grand de ces nombres est : 14, sa position : 2 Exercice 17 : Ecrire un algorithme qui demande un nombre de dpart, et qui ensuite affiche les dix nombres suivants. Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 27. Exercice 18 : Ecrire un programme qui demande successivement des nombres lutilisateur, et qui lui dise ensuite quel tait le plus grand parmi ces nombres et quel tait sa position. La saisie des nombres sarrte lorsque lutilisateur entre un zro. Exercice 19 : Ecrire un programme qui demande successivement des nombres lutilisateur, et qui calcule leur moyenne. La saisie des nombres sarrte lorsque lutilisateur entre un zro. Exercice 20 : Ecrire un programme qui permet de calculer la somme : 1-1/2+1/2^2-1/2^3+1/2^4-..+1/2^n Exercice 21 : Ecrire un programme qui vrifie si un nombre entier saisi par lutilisateur est un nombre premier ou pas. Un nombre premier est un nombre qui ne permet la division que sur 1 et lui-mme. Exemples de nombre premier : 2,5,7,11,13,31. Exercice 22 : Ecrire un algorithme qui permet de calcule la somme de la suit suivant S=1+2+4+7+11+16+22+29+ Exercice 23:Ecrire un algorithme qui demande lutilisateur de saisir une somme dargent, puis affiche la dcomposition de cette somme dargent en billets et pices de (200, 100, 50, 20, 10, 5, 2 et 1 dhs) en utilisant le moins de billets et de pices possibles. Exercice 24: On considre la suite : u(0)=a (a entier) si u(n) pair alors u(n+1)=u(n)/2 sinon u(n+1)=3*u(n)+1 Pour toutes les valeurs a, il existe un entier N tel que u(N)=1 Ecrire un programme qui demande l'utilisateur de taper a et qui affiche toutes les valeurs de u(n) de n=1 n=N. Exercice 25 : Ecrire un programme qui demande lutilisateur de saisir deux nombre a et b (tel que a<b ) et affiche tous les nombres premiers compris entre ces deux nombres. Exercice 26: Ecrire le programme permettant dafficher le triangle suivant : (le nombre de ligne est saisi par lutilisateur) 1
Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A 12 123 1234 12345 123456 1234567

2011/2012

Exercice 27 :Ecrivez un programme qui calcule le terme UN de la suite de Fibonacci donne par : U1=1, U2=1, UN=UN-1 + UN-2 (pour N>2)

Exercice 28 : On veut calculer une approximation de sinus de x par un dveloppement limit

sin(x) x

: crivez un programme qui demande lutilisateur de saisir la valeur de x et n puis calcule une approximation de sinus de x avec (n+1) termes. Exercice 29 : Calculez le nombre lu rebours d'un nombre positif entr au clavier en supposant que le fichier d'entre standard contient une suite de chiffres non nuls, termine par zro (Contrlez s'il s'agit vraiment de chiffres). Exemple: Entre: 1 2 3 4 0 Affichage: 4321 Exercice 30: Calculez le nombre lu rebours d'un nombre positif entr au clavier en supposant que le fichier d'entre standard contient le nombre inverser. Exemple: Entre: 1234 Affichage: 4321 Exercice 31: a- Ecrire un programme qui permet de convertir un nombre dcimal en un nombre binaire (on saisit un nombre dcimal et le programme affiche son quivalent en binaire) b- Ecrire qui permet de convertir un nombre binaire en un nombre dcimal (si le nombre saisi nest pas un nombre binaire, le programme ne doit pas faire la conversion) Exercice 32 : On dnomme nombre de Armstrong un entier naturel qui est gal la
somme des cubes des chiffres qui le composent. Exemple : 153=1^3+5^3+3^3 153 = 1 + 125 + 27, est un nombre dArmstrong. Spcifications de lalgorithme : On sait qu'il n'existe que 4 nombres dArmstrong (153, 370, 371 ,407) et qu'ils ont tous 3 chiffres (ils sont compris entre 100 et 500). Si l'on suppose qu'un tel nombre est crit ijk (i chiffre des centaines, j chiffres des dizaines et k chiffres des units), il suffit simplement d'envisager tous les nombres possibles en faisant varier les chiffres entre 0 et 9 et de tester si le nombre est de Armstrong. Ecrivez lalgorithme complet qui fournisse les 4 nombres de Armstrong

x3 x 5 x 2n1 ..... (1) n 6 5! (2n 1)!

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

Exercice 33 : Affichez un triangle isocle form d'toiles de N lignes (N est fourni au clavier):
Nombre de lignes : 8 * *** ***** ******* ********* *********** ************* ***************

Exercice 34 : Afficher un sapin

Exercice 35: affiche la table des produits pour N variant de 1 10 :


X*Y 0 1 2 3 4 5 6 7 8 9 10 -------------------------------------------------0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 2 3 4 5 6 7 8 9 10 2 0 2 4 6 8 10 12 14 16 18 20 3 0 3 6 9 12 15 18 21 24 27 30 4 0 4 8 12 16 20 24 28 32 36 40 5 0 5 10 15 20 25 30 35 40 45 50 6 0 6 12 18 24 30 36 42 48 54 60 7 0 7 14 21 28 35 42 49 56 63 70

Exercice 36: Calculer le pgcd de deux nombres a et b Exercice 37 : Un programme qui demande un nombre n de lignes puis affiche la pyramide suivant
Exemple n=6

8*1=8 8*11=88 8*111=888 8*1111=8888 8*11111=88888


Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A 8*111111=888888 Exercice 38: Faire un programme pour le calcul et laffichage suivant

2011/2012

Exercice 39 : Les donnes traiter sont constitues par une suite de nombres entiers taps au clavier. Chaque nombre est spar du prcdent par au moins un blanc (ou un retour). Pour indiquer la fin de la suite, on met la valeur 999 (et on impose que tous les nombres de la suite soient diffrents de 999). Les rsultats indiqus seront valables pour les donnes : 12 -4 6 4 6 999

Attention : on peut donner une suite vide en tapant seulement 999. Vrifier ce que deviennent vos solutions dans ce cas particulier. A1. Lire les donnes et afficher le nombre total de valeurs de la suite. A2. Lire les donnes et afficher la somme des valeurs lues. A3. Lire les donnes et afficher le minimum. A4. Lire les donnes et afficher la somme des valeurs strictement positives. Rsultat : 5 Rsultat : 24 Rsultat : -4 Rsultat : 28

A5. Lire les donnes et afficher le minimum des valeurs strictement positives. Rsultat : 4 Exercice 40 : Ecrire un programme qui remplit le tableau (de dimension 10) par des valeurs entres au clavier et affiche le tableau. Calculer et afficher ensuite la somme des lments du tableau. Exercice 41: Ecrire un programme qui demande successivement 10 nombres lutilisateur, et qui lui dise ensuite quel tait le plus grand et le plus petit parmi ces 10 nombres et leurs positions : Entrez le nombre numro 1 : 12 Entrez le nombre numro 2 : 14 Entrez le nombre numro 10 : 6 Le plus grand de ces nombres est : 14, sa position : 2 Le plus petit de ces nombres est : 6, sa position 10 P.S : utilisez un tableau.

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

Exercice 42: Soit T un tableau de N rels. Ecrire le programme qui permet de calculer le nombre des occurrences dun nombre X (c'est--dire combien de fois ce nombre X figure dans le tableau T). Exercice 43: Ecrire un programme qui augmente de 1 tous les lments dun tableau, le nouveau tableau sera affich lcran. Exemple : tab[4]={1,23,6,9,-1} devient tab[4]={2,24,7,10,0} Exercice 44: Ecrire un programme constituant un tableau, partir de deux tableaux de mme longueur pralablement saisis. Le nouveau tableau sera la somme des lments des deux tableaux de dpart. Exercice 45: Ecrire un programme qui permet de lire 10 notes et de dterminer le nombre de celles qui sont suprieures la moyenne. (En utilisant un tableau) Exercice 46: Ecrire un programme qui lit la dimension N d'un tableau T du type int (dimension maximale: 20 lments), remplit le tableau par des valeurs entres au clavier et affiche le tableau. Effacer ensuite toutes les occurrences de la valeur 0 dans le tableau T et tasser les lments restants. Afficher le tableau rsultant. Exercice 47: Ecrire un programme qui lit la dimension N d'un tableau T du type int (dimension maximale: 20 lments), remplit le tableau par des valeurs entres au clavier et affiche le tableau. Ranger ensuite les lments du tableau T dans l'ordre inverse sans utiliser de tableau d'aide. Afficher le tableau rsultant. Exercice 48: Ecrire un programme qui lit la dimension N d'un tableau T du type int (dimension maximale: 20 lments), remplit le tableau par des valeurs entres au clavier et affiche le tableau. Copiez ensuite toutes les composantes strictement positives dans un deuxime tableau TPOS et toutes les valeurs strictement ngatives dans un troisime tableau TNEG. Afficher les tableaux TPOS et TNEG. Exercice 49: Ecrire un programme qui demande l'utilisateur de taper 10 entiers compris entre 0 et 20 qui seront stocks dans un tableau et qui affiche le nombre de fois qu'on a tap un 0, le nombre de 1, le nombre de 2, ..., le nombre de 20. Exercice 50 : On considre une squence d'entiers s de longueur L reprsente dans un tableau T d'entiers dfini sur l'intervalle [1Lmax], 0 < L < Lmax. On veut crire un programme qui remplace dans T la suite s par la suite s' de longueur L' (avec L' <= L), dduite de s en supprimant tous les lments redondants. Un lment de s est redondant s'il est gal un autre lment de s. Le programme ne doit pas utiliser de tableau intermdiaire pour crer s'. L'ordre des lments reste celui de la squence de dpart. Etudier tout d'abord le problme en supposant que T peut ne pas tre tri en ordre croissant. Exemple : si s = [15, 4, 19, 4, 8, 11, 11, 3, 4, 19] et L = 10 alors s' = [15, 4, 19, 8, 11, 3] et L = 6 Exercice 51 : m personnes sont assises autour d'une table circulaire et entament le jeu suivant. Elles se fixent entre-elles un entier k>0 et une personne P1 par laquelle elles commenceront le jeu. On commence compter de 1 k en partant de P1 et en tournant
Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

droite. La kime personne quitte la table et on continue compter de 1 k partir de la personne suivante encore table. La personne gagnante est la dernire qui reste table.

Analyser ce problme et faire un programme permettant de raliser ce jeu. Exercice 52: Vrifier que deux tableaux sont identiques (les lments des deux tableaux seront saisis par lutilisateur). Exercice 53: On se propose d'crire un programme qui remplit au hasard un tableau de n rels puis les affiche l'cran. Le programme doit calculer et afficher la valeur moyenne et la valeur Max. Les rels doivent tre compris entre 0 et 20. Exercice 54: On donne une valeur K et une suite de N valeurs ranges dans un tableau T. On demande de dplacer les lments du tableau de manire regrouper en tte de celui-ci toutes les valeurs infrieures K et en queue, les valeurs suprieures K. Exercice 55: Rotation des lments dun tableau Saisir un tableau int tab[10]; Saisir le nombre de rotation On effectue la rotation des lments du tableau du nombre entr en faisant une rotation. Afficher le tableau de dpart, la valeur du dplacement et le vecteur l'arrive. Exemple : Dpart 0 1 2 3 4 5 6 7 8 9 Rotations = 4 Arrive 6 7 8 9 0 1 2 3 4 5 Exercice 56 : Ecrire un programme qui lit les dimensions L et C d'un tableau T deux dimensions du type int (dimensions maximales: 10 lignes et 10 colonnes). Remplir le tableau par des valeurs entres au clavier et afficher le tableau ainsi que la somme de tous ses lments. Exercice Exercice 57 : Faire un programme qui construit le triangle de PASCAL de degr N et le mmorise dans une matrice carre P de dimension N+1. Exemple: Triangle de Pascal de degr 6 :
1 11 12 1 13 3 1 14 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

Exercice 58: Les points cols d'un tableau deux dimensions sont les lments du tableau qui sont minimum sur leur ligne et maximum sur leur colonne. Ecrire le programme principal qui recherche dans un tableau deux dimensions les points cols. Exemple : soit le tableau suivant T[2][2] 1 2 3 -7 8 9 -6 -3 -4 Les points cols du tableau sont : T[0][0]=1 T[2][1]=-3 Exercice 59: Un carr magique est un carr rempli de nombres qui, lorsque lon en fait la somme sur chaque ligne, colonne ou diagonale, donne le mme rsultat. Pour simplifier le travail nous ne considrerions ici que des carrs dordre impair. Ecrire un programme qui teste si un carr est magique. Exemple de carr dordre 3 : 8 1 6 3 5 7 4 9 2

Exercice 60: 1. Lire une matrice de N lignes et M colonnes ligne par ligne. Les donnes sont dans lordre : N M A[1,1] A[1,M] A[N,1] A[N,M] Ecrire ensuite cette matrice ligne par ligne. Les exercices suivants supposent que cette phase dinitialisation vient dtre faite. 2. Compter (et afficher) le nombre de zros de chaque colonne. 3. Compter (et afficher) le nombre de colonnes contenant au moins un zro. 4. Afficher le minimum de chaque colonne. 5. Afficher le numro de la colonne contenant le minimum de la matrice. (A galit, donner le plus petit numro de colonne). Exercice 61: Extrait Examen de passage pratique 2009 1. crire un programme qui transfre une matrice M deux dimensions L et C (dimensions maximales: 10 lignes et 10 colonnes) dans un tableau V une dimension L*C.

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

2. crire un programme qui effectue la transposition tA d'une matrice A de dimensions N et M en une matrice de dimensions M et N.

3. crire un programme qui ralise l'addition de deux matrices A et B de mmes dimensions N et M.

Exercice 63 : Ecrire un programme qui effectue la multiplication de deux matrices A et B. Le rsultat de la multiplication sera mmoris dans une troisime matrice C qui sera ensuite affiche. Exercice 64 : Ecrire un programme qui lit une phrase, la mmorise dans une variable chaine et affiche ensuite: a) la longueur L de la chane. b) le nombre de a contenus dans le texte. c) toute la phrase rebours, sans changer le contenu de la variable chaine. d) toute la phrase rebours, aprs avoir invers l'ordre des caractres dans chaine. Exercice 65: crire un programme qui supprime les espaces et tabulations d'une chane de caractres. (sans utiliser de tableau intermdiaire). Rmq : \t dsigne une tabulation. dsigne un espace.
Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

Exercice 66 : Ecrire un programme qui permet de dire si deux chaines de caractres sont identiques ou pas (sans utiliser strcmp). Exercice 67: Ecrire un programme qui permet de concatner deux chaines de caractres (sans utiliser la fonction strcat) Exercice 68 : Ecrire un programme qui demande l'introduction du nom et du prnom de l'utilisateur et qui affiche alors la longueur totale du nom sans compter les espaces. Employer la fonction strlen. Exemple: Introduisez votre nom et votre prnom: Kurosaki Ichigo Bonjour kurosaki Ichigo! Votre nom est compos de 14 lettres. Exercice 69 : Ecrire un programme qui lit deux chanes de caractres CH1 et CH2 et qui copie la premire moiti de CH1 et la premire moiti de CH2 dans une troisime chane CH3. Afficher le rsultat. a) Utiliser les fonctions spciales de <string>. b) Utiliser uniquement les fonctions gets et puts. Exercice 70 : Un des plus anciens systmes de cryptographie (aisment dchiffrable) consiste dcaler les lettres dun message pour le rendre illisible. Ainsi, les A deviennent des B, les B des C, etc. Ecrivez un algorithme qui demande une phrase lutilisateur et qui la code selon ce principe. Exercice 71: Vous devez dterminer si une chane de caractres est un palindrome. Un palindrome est une chane de caractres que l'on peut lire identiquement de droite gauche, et de gauche droite. Par exemple : AA. 38783. LAVAL. LAVAL A ETE A LAVAL. Exercice 72 : Ecrire un programme qui lit 5 mots, spars par des espaces et qui les affiche ensuite dans une ligne, mais dans l'ordre inverse. Les mots sont mmoriss dans un tableau de chanes de caractres. Exemple voici une petite phrase !
Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A ! phrase petite une voici

2011/2012

Exercice 73: Ecrire un programme qui lit un verbe rgulier en "er" au clavier et qui en affiche la conjugaison au prsent de l'indicatif de ce verbe. Contrlez s'il s'agit bien d'un verbe en "er" avant de conjuguer.. Exemple: Verbe : fter je fte tu ftes il fte nous ftons vous ftez ils ftent Exercice 74: vous devez compter le nombre doccurrence de 2 lettres conscutives dans la chane. Un couple trouv dans la phrase est limin et ne sera comptabilis quune seule fois, comme dans lexemple suivant : Phrase = fonctions creees par le programmeur. Couple cherch = ee Rsultat = 1

Exercice 75: Ecrire : Une fonction, nomme f1, se contentant dafficher bonjour (elle ne possdera aucun argument, ni valeur de retour) ; Une fonction, nomme f2, qui affiche bonjour un nombre de fois gal la valeur reue en argument (int) et qui ne renvoie aucune valeur ; Une fonction, nomme, f3, qui fait la mme chose que f2, mais qui, de plus, renvoie la valeur (int) 0. Exercice 76: Ecrire une fonction abs qui reoit un entier x et retourne sa valeur absolue, ecrire un programme qui exploite cette fonction. Exercice 77: Ecrire un programme se servant d'une fonction MOYENNE du type float pour afficher la moyenne arithmtique de deux nombres rels entrs au clavier. Exercice 78: Ecrire une fonction MIN et une fonction MAX qui dterminent le minimum et le maximum de deux nombres rels. Ecrire un programme se servant des fonctions MIN et MAX pour dterminer le minimum et le maximum de quatre nombres rels entrs au clavier. Exercice 79: Ecrire la fonction NCHIFFRES du type int qui obtient une valeur entire N (positive ou ngative) du type long comme paramtre et qui fournit le nombre de chiffres de N comme rsultat.
Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A Ecrire un petit programme qui teste la fonction NCHIFFRES: Exemple: Introduire un nombre entier : 6457392 Le nombre 6457392 a 7 chiffres.

2011/2012

Exercice 80: En mathmatiques, on dfinit la fonction factorielle de la manire suivante: 0! = 1 n! = n*(n-1)*(n-2)* ... * 1 (pour n>0) Ecrire une fonction FACT du type double qui reoit la valeur N (type int) comme paramtre et qui fournit la factorielle de N comme rsultat. Ecrire un petit programme qui teste la fonction FACT. Exercice 81 : 1. Ecrire une fonction afficheCar(n, ch) qui affiche n fois le caractre ch. 2. Ecrire un programme qui demande la hauteur d'une pyramide et qui affiche celle-ci en utilisant la fonction afficheCar(). Exemple : une pyramide de hauteur 4

Exercice 82 : Crer un programme qui lit 4 notes entres au clavier, puis fait appel une fonction MOY qui calcule la moyenne de ces 4 notes, une autre fonction INF, qui affiche le nombre de notes strictement infrieurs la moyenne et une troisime fonction ASC, qui affiche les notes en ordre croissant. Il est fortement conseill d'utiliser un tableau. Ecrire le programme principal qui fait appel ces trois fonctions.

Exercice 83: Ecrire une fonction qui reoit en arguments 2 nombres flottants et un caractres et qui fournit un rsultat correspondant) lune des 4 oprations appliques ses deux premiers arguments, en fonction de la valeur de ce dernier, savoir : addition pour le caractre +, soustraction pour le caractre - , multiplication pour * et division pour / (tout autre caractre sera interprt comme une addition ). On ne tiendra pas compte des risques de la division par 0. Ecrire un petit programme utilisant cette fonction pour effectuer les 4 oprations sur deux nombres fournis en donne. Exercice 84: Une socit commercialise 8 produits dans 3 magasins diffrents. On dsire faire les statistiques de ventes annuelles. Pour cela, on utilise trois tableaux : V1, V2 et V3 reprsentant respectivement la quantit vendue dans lanne du ime produit dans les magasins 1, 2 et 3. Ltude consiste tablir les programmes suivants : 1) Procdure de saisie au clavier de toutes les donnes (remplissage des tableaux de quantits vendues V1, V2 et V3. 2) Procdure de calcul de la quantit totale vendue par produit, tout magasin runis.
Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

Stocker ces rsultats dans un tableau M. 3) Procdure de calcul de la quantit totale vendue par magasin, tout produit runis. Stocker ces rsultats dans un tableau P. 4) Procdure de calcul pour chaque produit la moyenne vendue. Stocker ces rsultats dans un tableau Y. Exercice 85 : Ecrire un programme qui calcule et affiche la distance DIST (type double) entre deux points A et B du plan dont les coordonnes (XA, YA) et (XB, YB) sont entres au clavier comme entiers. Exercice 86: Soit la structure suivante : struct date { int jour, mois, an; }; 1- Initialisez cette structure par la date daujourdhui 2- Demandez lutilisateur de saisir une date, puis calculez le nombre de jours entre la date saisie par lutilisateur et la date daujourdhui. Exercice 87 : Dans une classe un lve est connu par : Son nom Son prnom Son numro dinscription Sa date de naissance Sa note dexamen

On dsire un algorithme permettant de faire les oprations suivantes : Saisie au clavier des informations de NE lves Calcul de : La somme totale des notes de toute la classe STN. La moyenne de la classe MOY. Le pourcentage de la note de chaque lve dans la somme totale des notes PN. Tri du tableau des lves par ordre croissant des notes. Affichage lcran Des donnes de chaque lve De tous les rsultats calculs par lalgorithme.

Exercice 88: Demain est un autre jour.


Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

Nous supposerons que l'utilisateur ne rentre que des entiers strictement positifs. 1) Dfinir le type date bas sur une structure permettant de reprsenter une date comportant le numro du jour, le numro du mois et l'anne. Ex : 14 7 1792 pour le 14 juillet 1792 25 12 2007 pour le 25 dcembre 2007 29 2 2008 pour le 29 fvrier 2008 2) Ecrire la fonction estBissextile qui renvoie 1 si l'anne est bissextile; 0 sinon. Nous rappelons qu'une anne est bissextile si elle est divisible par 4 mais pas par 100, elle est aussi bissextile si elle est divisible par 400. 3) Ecrire la fonction dateJuste qui renvoie 1 si une date saisie est juste, 0 sinon 4) Ecrire la procdure jourdulendemain qui partir d'une donne de type date dtermine la date du lendemain. 5) Ecrire une fonction comparedate qui renvoie 1 si une date d1 est plus grande qu'une date d2, 0 si elles sont gales, et -1 si la date d2 est plus grande que la date d1 6) Ecrire une fonction ecartjour qui retourne le nombre de jours qui sparent deux dates. Exercice 89: Le directeur dune socit offre des primes ses employs. Chaque employ possde les informations suivantes : CIN, Nom, Prenom, Date de naissance, Date dembauche, Salaire, Nombre danne dexprience NAE, prime. Les primes sont offertes selon le critre suivant : Si nombre danne dexprience 2 < NAE <=4 alors prime=salaire Si nombre danne dexprience 4 < NAE <=6 alors prime=salaire* 1,5 Si nombre danne dexprience 6 < NAE <=8 alors prime=salaire *2 Si nombre danne dexprience NAE > 8 alors prime=salaire *4 Questions 1- Crer les structures ncessaires avec les attributs cits dans lnonc, en choisissant un type de donnes convenable pour chaque attribut. 2- Remplir toutes les informations des 6 employs sauf le NAE et la prime. 3- Calculer le nombre danne dexprience de chaque employ. 4- Ecrire une fonction ayant comme paramtre le salaire, retourne la prime. Utiliser cette fonction pour remplir la valeur de prime de chaque employ. 5- Afficher tous les employs qui ont t embauch avant la date 01/04/2005 et gs dau moins de 30 ans. 6- Trier la liste des employs selon leur salaire.

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

Exercice 90 : Lobjectif de lexercice est de crer dans le plan un triangle quelconque dfini par 3 points. 1. Dclarer la structure Point, caractris par ces 2 coordonnes x et y 2. Dfinir 3 points quelconques dans Le plan. (P1, P2 et P3) 3. On rappelle que la distance D entre deux points P1 et P2 dans le plan est dfinie comme suit : D2= (x2 x1) 2 + (Y2 Y1) 2 on dfinit les variables suivante : D1 est la distance entre P1 et P2 D2 est la distance entre P2 et P3 D3 est la distance entre P3 et P1 Calculer D1, D2 et D3

4. Faire la translation de triangle T1 selon laxe des x et des y dun pas gal 2. 5. Ecrire une procdure qui affiche la nature de du triangle T1 selon les distances de ces
cts.(Isocle ou Equilatral ou isocle rectangle). 6. Soit T2 un triangle symtrique T1 par rapport laxe des x. donner les coordonnes de ce triangle T2. 7. Soit T3 un triangle symtrique T1 par rapport laxe ( x=y). donner les coordonnes de ce triangle T3.

8. P1
D3 D2

D1

P2

P3

Exercice 91 : Ecrire une fonction qui permet dchanger les deux valeurs de deux entiers a et b Prototype : void echange(int *a,int *b) ; Exercice 92 : Ecrire un programme qui lit deux tableaux A et B et leurs dimensions N et M au clavier et qui ajoute les lments de B la fin de A. Utiliser le formalisme pointeur chaque fois que cela est possible. Exercice 93: Soit P un pointeur qui 'pointe' sur un tableau A: int A[] = {12, 23, 34, 45, 56, 67, 78, 89, 90};
Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A int *P; P = A; Quelles valeurs ou adresses fournissent ces expressions: a) b) c) d) e) f) g) h) *P+2 *(P+2) &P+1 &A[4]-3 A+3 &A[7]-P P+(*P-10) *(P+*(P+8)-A[7])

2011/2012

Exercice 94: 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 lments restants. Le programme utilisera les pointeurs P1 et P2 pour parcourir le tableau Exercice 95: Ecrire de deux faons diffrentes, un programme qui vrifie sans utiliser une fonction de <string>, si une chane CH introduite au clavier est un palindrome: a) en utilisant uniquement le formalisme tableau b) en utilisant des pointeurs au lieu des indices numriques Rappel: Un palindrome est un mot qui reste le mme qu'on le lise de gauche droite ou de droite gauche: Exemples: PIERRE ==> n'est pas un palindrome OTTO ==> est un palindrome 23432 ==> est un palindrome

Exercice 96: crivez une fonction qui calcule la moyenne de n nombres stocks dans un tableau de double. Prototype : float calculerMoyenne (float * t, int n) Exercice 97: Ecrivez la fonction int strcmp(char *s1, char *s2);

Lordre sur les chanes tant lordre lexicographique habituel.

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

Exercice 98: Ecrire la fonction AJOUTE_CH deux paramtres CH1 et CH2 qui copie la chane de caractres CH2 la fin de la chane CH1 sans utiliser de variable d'aide void AJOUTE_CH(char *CH1, char *CH2) ; Exercice 99 : Ecrire une fonction f ayant en paramtres un tableau t1 de taille quelconque et un entier n indiquant la taille du tableau, ainsi qu'un tableau t2 de la mme taille que t1. f doit renvoyer par un return un entier nb indiquant le nombre de valeurs comprises entre 0 et 10 dans le tableau t1. f doit mettre dans le tableau t2 les diffrentes valeurs comprise entre 0 et 10 qu'il a rencontres dans le tableau t1. Exercice 100 : 1- Ecrire une fonction abs permettant de calculer la valeur absolue dun nombre 2- Ecrire une fonction valeur_proche prenant comme paramtre deux arguments : un tableau t(10) et une valeur n, et retournant la valeur la plus proche de n dans le tableau. Exemple : t(10) : 2 54 7 8 12 22 n : 13, La fonction doit retourner la valeur 12. 3- Ecrire un programme principal appelant les deux fonctions.

Exercice 101 : Crer puis afficher l'cran le fichier INFORM.TXT dont les informations sont structures de la manire suivante: Numro de matricule (entier) Nom (chane de caractres) Prnom (chane de caractres) Le nombre d'enregistrements crer est entrer au clavier par l'utilisateur. Exercice 102 : Ecrire un programme qui cre un fichier INFBIS.TXT qui est la copie exacte (enregistrement par enregistrement) du fichier INFORM.TXT. Exercice 103 : Ajouter un nouvel enregistrement (entr au clavier) la fin de INFORM.TXT et sauver le nouveau fichier sous le nom INFBIS.TXT. Exercice 104 : Supprimer dans INFORM.TXT tous les enregistrements: a) dont le numro de matricule se termine par 8 b) dont le prnom est "Leila" (utiliser strcmp) c) dont le nom est un palindrome. Dfinir une fonction d'aide PALI qui fournit le rsultat 1 si la chane transmise comme paramtre est un palindrome, sinon la valeur zro. Sauver le nouveau fichier chaque fois sous le nom INFBIS.TXT.

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI1A

2011/2012

Exercice 105 : A l'aide d'un diteur de textes, crer un fichier NOMBRES.TXT qui contient une liste de nombres entiers. Dans le fichier, chaque nombre doit tre suivi par un retour la ligne. Ecrire un programme qui affiche les nombres du fichier, leur somme et leur moyenne. Exercice 106 : Ecrire un programme qui dtermine dans un fichier un texte dont le nom est entr au clavier: - le nombre de caractres qu'il contient, - le nombre de chacune des lettres de l'alphabet (sans distinguer les majuscules et les minuscules), - le nombre de mots, - le nombre de paragraphes (c.--d.: des retours la ligne), Les retours la ligne ne devront pas tre comptabiliss dans les caractres. On admettra que deux mots sont toujours spars par un ou plusieurs des caractres suivants: - fin de ligne - espace - ponctuation: . : , ; ? ! - parenthses: ( ) - guillemets: " - apostrophe: ' Utiliser une fonction d'aide SEPA qui dcide si un caractre transmis comme paramtre est l'un des sparateurs mentionns ci-dessus. SEPA restituera la valeur (logique) 1 si le caractre est un sparateur et 0 dans le cas contraire. SEPA utilise un tableau qui contient les sparateurs dtecter. Exemple:
Nom du fichier texte : A:LITTERA.TXT Votre fichier contient: 12 paragraphes 571 mots 4186 caractres dont 279 fois la lettre a 56 fois la lettre b . . . 3 fois la lettre z et 470 autres caractres

Formatrice : BOUROUS Imane