TDI 1ère Année Algorithme et Langage C 26/09/2011 Série d’exercices (n° 2) Algorithme et Langage C Exercice 1 : Que fait l'algorithme suivant ? Cet algorithme contient trois erreurs, corriger-les et renommer les variables bidon1 et bidon2 avec des noms de variables plus significatifs. Cet algorithme n’est pas valable pour toutes les valeurs, pouvez-vous l’améliorer ? Var Bidon1 : Tableau (10) Entier Bidon2 : Tableau (10) Entier i : entier Début POUR i :=1 à 10 FAIRE Afficher ("Saisir une valeur entière :") Lire (Bidon1 (i))) Bidon2 (i) := 1/Bidon1 (i) FINPOUR POUR i := 1 à 10 FAIRE Afficher ("Valeur de la ", i, "ième position de bidon2 :", Bidon2 (j)) FINPOUR FIN Exercice 2 : Terminer l'algorithme ci-dessous de manière à ce qu'il : 1. Calcule et affiche la moyenne des notes de la classe obtenues dans un tableau Note contenant 20 réels. 2. Détermine et affiche la meilleure et la plus mauvaise note. 3. Var Note : Tableau (20) Réel i : entier Début POUR i :=1 à 20 FAIRE Afficher ("Saisir la ", i, "ième note :") Lire( Note (i)) FINPOUR Fin Exercice 3 : Début N=3 Variables i, s, t(n) : entier Pour i=1 à n Lire t(i) Finpour Tantque i<>n faire Ecrire (« Saisir un entier ») Lire t(i) i=i+1 fintantque s=0 pour i=1 à n s=s+1 Ecrire s Finpour Fin Le programme devrait permettre de saisir des nombres entiers dans un tableau de dimension n, et de faire ensuite la somme de ces entiers et l’afficher à l’écran. Détecter les erreurs qui empêchent ce programme de tourner. Exercice 4 : Ecrire un programme qui demande à l’utilisateur de taper 10 entiers compris entre 0 et 20 qui seront stockés 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 5 : Considérons un tableau numérique « T » de N éléments, et un deuxième tableau numérique « V » de M éléments. Concevoir un programme qui permet de poser les éléments des deux tableaux dans un troisième tableau numérique « R » de telle façon à l’avoir trié en ordre croissant. Exercice 6: Ecrire un programme de faire le tri dans l’ordre croissant et décroissant et décroissant d’une matrice de taille N x M. Exercice 7 : Écrire un algorithme permettant d’initialiser un tableau d’entiers de taille N (N est connu et fixé) des trois façons suivantes, successivement. Abdellah HARCHI Page 1 sur 4 Algorithme et Langage C TDI 1ère Année 26/09/2011 Exercice 8 : Les points cols d'un tableau à deux dimensions sont les éléments du tableau qui sont maximum sur leur ligne et minimum sur leur colonne; ou minimum sur leur ligne et maximum sur leur colonne. Ecrire la procédure qui: 1. Reçoit une ligne et retourne la valeur du maximum et la case où elle existe. 2. Reçoit le numéro de colonne du maximum retrouvé, et retourne un booléen "vrai" dans le cas où il est minimum sur sa colonne et "faux" dans le cas contraire. 3. Reçoit une ligne et retourne la valeur du minimum et la case où elle existe. 4. Reçoit le nombre de colonne du minimum retrouvé, et retourne un booléen "vrai" dans le cas où il est maximum sur sa colonne et "faux" dans le cas contraire. 5. Ecrire le programme principal qui recherche dans un tableau à deux dimensions les points cols en utilisant les procédures précédentes. Exercice 9 : Chaque élève d'une classe s'est vu attribuer dix notes correspondant à dix matières (une note fictive égale à -1 correspond à une absence lors de l'épreuve de contrôle). A chacune de ces matières correspond un coefficient. On suppose que le nombre d'élèves ne dépasse pas 50. - Pour tous les calculs de moyenne, on ne tient pas compte des absences. - On ne calcule la moyenne effective d'un élève que s'il a été présent au moins à un contrôle. - On note par -1 la moyenne d'un élève absent à tous les contrôles. Nous allons utiliser un tableau NOTE de 50 lignes et 50 colonnes. Chaque ligne correspond à un élève, et chaque colonne à une matière. Le tableau MOY de 50 lignes permet de stocker la moyenne de chaque élève. On utilise un tableau COEF de 10 lignes, dans lequel on stocke le coefficient de chaque matière. L'ordre dans COEF correspond à l'ordre des colonnes de NOTE: par exemple si la première colonne de NOTE correspond aux notes de mathématique, on doit trouver en COEF(1) le coefficient mathématique. Ecrire un algorithme qui permettrait de calculer: 1. La moyenne de chaque élève. 2. La moyenne générale de la classe 3. Pour chaque matière, la moyenne de la classe et le pourcentage d'absentéisme. Exercice 10 : Soit un tableau T de 10 entiers. 1Ecrire l’algorithme qui permet de remplir les k premières cases du tableau (k <= 10) 2Ecrire l’algorithme qui permet d’insérer un zéro à la première case du tableau après avoir décalé les éléments du tableau T d'une case. 3Ecrire l’algorithme qui permet d’insérer p (p >= 1) zéros en tête du tableau T. Exercice 11 : Une société commercialise 50 produits dans 3 magasins différents. On désire faire les statistiques de ventes annuelles. Pour cela, on utilise trois tableaux : V1(i), V2(i) et V3(i) représentant respectivement la quantité vendue dans l’année du i ieme produit dans les magasins 1, 2 et 3. L’étude consiste à établir les algorithmes suivants : 1) Procédure de saisie au clavier de toutes les données (remplissage des tableaux de quantités vendues V1, V2 et V3. 2) Procédure de calcul de la quantité totale vendue tout produit, tout magasin réunis. 3) Procédure de calcul de la quantité totale vendue par produit, tout magasin réunis. Stocker ces résultats dans un tableau M. 4) Procédure de calcul de la quantité totale vendue par magasin, tout produit réunis. Stocker ces résultats dans un tableau P. 5) Procédure de calcul pour chaque produit la moyenne vendue. Stocker ces résultats dans un tableau Y. 6) Procédure d’édition des résultats suivants, pour chaque produit : Numéro produit, quantité totale vendue et moyenne vendue. 7) Procédure d’archivage des résultats dans un fichier « PRODUITS » et qui va contenir pour tous les produits : les numéros, les quantités totales vendues. Exercice 12 : Statistiques AVION Déclarer 4 Tableaux en mémoire avec la structure Suivante : Avion CodeAVION Vitesse Croisiere BOING747 B0 800 AIRBUSA380 AB 950 LEARJET45 LJ 700 DC10 DC 900 ANTONOV32 AN 560 CONCORDE CO 1400 Rayon d'action 10000 12000 4500 8000 2500 16000 1) Demander Le Code avion Rechercher en table et afficher "erreur" si non trouvé Afficher son nom, sa vitesse, son Rayon d'action 2) afficher la moyenne des rayons d'action 3) afficher l'avion qui vole le plus vite Exercice: Les tris Dans tous les exercices qui suivent on étudie différents algorithmes permettant de trier un tableau de 10 entiers. Afin d'expliquer les algorithmes, on prendra en exemple le tableau suivant : 52 10 1 25 62 3 8 55 3 23 Abdellah HARCHI Page 2 sur 4 Algorithme et Langage C TDI 1ère Année 26/09/2011 Exercice 13 : Le tri par sélection Le premier algorithme auquel on pense pour effectuer ce tri est celui-ci : on cherche le plus petit élément du tableau et on le place en 1er , puis on cherche le plus petit dans ce qui reste et on le met en second , etc. .. 52 10 1 25 62 3 8 55 3 23 1 52 10 25 62 3 8 55 3 23 1 3 52 1 0 25 62 8 55 3 23 1 3 3 52 10 25 62 8 55 23 1 3 3 8 52 10 25 62 55 23 1 3 3 8 10 52 25 62 55 23 1 3 3 8 10 23 52 25 62 55 1 3 3 8 10 23 25 52 62 55 1 3 3 8 10 23 25 52 62 55 1 3 3 8 10 23 25 52 55 62 Exercice 14 : Le tri bulle Le tri bulle est un tri plus astucieux. son principe est de faire remonter petit à petit un élément trop grand vers le haut du tableau en comparant les éléments deux à deux. Si l'élément de gauche est supérieur à son voisin de droite on les inverse et on continue avec le suivant. Lorsque l'on est en haut du tableau on repart au début et on s'arrête lorsque tous les éléments sont bien placés. 52 10 1 25 62 3 8 55 3 23 10 52 1 25 62 3 8 55 3 23 10 1 52 25 62 3 8 55 3 23 10 1 25 52 62 3 8 55 3 23 10 1 25 52 62 3 8 55 3 23 10 1 25 52 3 62 8 55 3 23 10 1 25 52 3 8 62 55 3 23 10 1 25 52 3 8 55 62 3 23 10 1 25 52 3 8 55 3 62 23 10 1 25 52 3 8 55 3 23 62 On a parcouru tous le tableau, on recommence, jusqu'à ce que tout soit bien placé. Ecrire l'algorithme qui réalise ce tri. Exercice 15 : Le tri par permutation Le tri par permutation est le tri du jeu de cartes. On parcourt le tableau jusqu'à ce que l'on trouve un élément plus petit que le précédent, donc mal placé. On prend cet élément et on le range à sa place dans le tableau puis on continue la lecture. On s'arrête à la fin du tableau. 52 10 1 25 62 3 8 55 3 23 10 52 1 25 62 3 8 55 3 23 1 10 52 25 62 3 8 55 3 23 1 3 10 25 52 62 8 55 3 23 1 3 8 10 25 52 62 55 3 23 1 3 8 10 25 52 55 62 3 23 1 3 3 8 10 25 52 55 62 23 1 3 3 8 10 23 25 52 55 62 Exercice 16 : Le tri par comptage Le tri par comptage consiste pour chaque élément du tableau à compter combien d'éléments sont plus petits que lui, grâce à ce chiffre on connaît sa position dans le tableau résultat. 52 1 0 1 25 62 3 8 55 3 23 Nombre 7 4 0 6 9 1 3 8 1 5 Position 8 5 1 7 10 2 4 9 3 6 1 3 3 8 10 23 25 52 55 62 Exercice 17 : Le tri alphabétique Le programme consiste à saisir des mots (au maximum 10) de 20 caractères maximum et de les insérer dans un tableau dans l'ordre alphabétique. Puis d'afficher ensuite ce tableau. Le tableau résultat est du type TABLEAU CAR [10,20]. Exercice 18 : Le jeu du pendu Ecrire le programme du jeu du pendu. Le principe est le suivant : Un premier joueur choisit un mot de moins de 10 lettres. Le programme affiche _ _ _ _ _ _ _ avec un _ par lettre. Le deuxième joueur propose des lettres jusqu'à ce qu'il ait trouvé le mot ou qu'il soit pendu (11 erreurs commises). A chaque proposition le programme réaffiche le mot avec les lettres découvertes ainsi que les lettres déjà annoncées et le nombre d'erreurs. Exercice 19 : Le crible d'Erathostène Cet algorithme permet d'afficher progressivement la liste des nombres premiers inférieurs à une valeur donnée: MAX. Pour ce faire on construit un tableau de MAX éléments, vide au départ, que l'on parcourt. Abdellah HARCHI Page 3 sur 4 TDI 1ère Année Algorithme et Langage C 26/09/2011 Chaque fois que la case est vide cela signifie que l'indice du tableau est un nombre premier, on l'affiche puis on remplit avec une valeur quelconque toutes les cases du tableau indicées par un multiple de l'indice courant. Exemple pour MAX = 1 0 tableau = 0 0 0 0 0 0 0 0 0 0 indice : 1 1 est un nombre premier (je ne marque rien !) 2 2 est un nombre premier ==> je marque 3 3 est un nombre premier ==> je marque 4 4 n'est pas un nombre premier 5 5 est un nombre premier ==>je marque etc. ... tableau = 0 1 0 1 0 1 0 1 0 1 tableau = 0 1 1 1 0 1 0 1 1 1 Exercice 20 : La recherche dichotomique Cet algorithme permet de ranger un élément à sa place ou de le trouver dans une liste de manière très rapide. On possède une liste de N entiers triés, on cherche la place d'un nombre X. On compare X à l'élément du milieu de tableau, si il est inférieur on réduit le tableau à sa partie gauche, si il est supérieur on réduit le tableau à sa partie droite. On réitère l'opération jusqu'à ce que le tableau ait moins de 2 éléments. 1 3 3 5 6 8 12 25 26 42 53 55 , 6ème élément 8 ==> on insère 3ème élément 3 ==> on insère 2ème élément 6 ==> on insère ==> 7 est entre 6 et 8 on veut y insérer le chiffre 7 7 dans 1 3 3 5 6 8 7 dans 5 6 8 7 dans 6 8 Exercice 21 : Fusion de deux tableaux triés. On considère deux tableaux triès T1 et T2 de dimensions respectives n et m que l’on dooit unir dans un seul tableau T3 trié. Exemple : T1 : 1 T2 : 1 T3 : 1 Ecrire l’algorithme 3 2 2 qui fait ce Abdellah HARCHI 5 4 3 tri. 8 7 4 10 9 5 Page 4 sur 4 10 7 13 8 15 9 10 13 15