Exercices C

Notions de base

Exercice 1: Ecrire un programme C qui permet d’afficher le message suivant: Bonjour.

Exercice 2: Ecrire un programme C qui permet de lire en entrée un entier constitué de trois chiffres et d’afficher celui-ci inversé. Exemple: si l’entrée est 123 on affiche 321.

Exercice 3: Ecrire un programme C qui permet de lire deux nombres réels, et d’afficher ensuite leur produit, avec une précision de trois chiffres après la virgule.

Exercice 4: Ecrire un programme C qui permet de permuter le contenu de deux variables entières en passant par une troisième variable auxiliaire. Ceci et en affichant les deux variables avant et après permutation.

Exercice 5: Ecrire un programme C qui lit en entrée trois entiers et affiche leur moyenne avec une précision de deux chiffres après la virgule.

Exercice 6(Corrigé sur l’ebook 1): Ecrire un programme C qui lit en entrée un caractère alphabétique entre a et y, qui peut être soit une majuscule ou une minuscule. Et affiche la lettre qui vient juste après lui dans l’ordre alphabétique.

Exercice 7(Corrigé sur l’ebook 1): Ecrire un programme C qui lit deux réels R1 et R2 qui représentent les rayons de deux cercles concentriques, et renvoie ensuite l’aire de la surface comprise entre les deux cercles (surface grise).
Remarque: R1 peut être supérieur à R2, comme il peut lui être inférieur.

Exercice 8(Corrigé sur l’ebook 1): Ecrire un programme C qui lit deux entiers est affiche le plus grand d’entre eux.

Exercice 9(Corrigé sur l’ebook 1): Ecrire un programme C qui trouve pour un réel les deux carrés parfaits les plus proches qui l’encadrent.

On rappelle qu’un carré parfait est un entier dont la racine carrée est aussi un entier. Exemple: 9 = 3×3 et 4 = 2×2 sont des carrés parfaits ; or, 5 ne l’est pas.

Exercice 10(Corrigé sur l’ebook 1): Ecrire un programme C qui lit une fraction au format a/ba et b sont deux entiers, et donne son équivalent décimal avec une précision de quatre chiffres après la virgule.

Ex: si l’utilisateur entre 3/2, le programme doit afficher: 3/2 = 1.5000

Exercice 11 (Corrigé sur l’ebook 2): Ecrire un programme C qui lit un entier V représentant un volume en litres. Puis calcule le nombre de canettes de 33cl que peut remplir en entier une citerne contenant un volume V de soda.

Exercice 12(Corrigé sur l’ebook 2): Ecrire un programme C qui permet de tracer la forme suivante :

Exercice 13(Corrigé sur l’ebook 2): Ecrire un programme C qui lit un nombre réel et affiche sa partie fractionnaire.

Exemple : la partie fractionnaire de 3.09 est 0.09.

Exercice 14(Corrigé sur l’ebook 2): Ecrire un programme C qui lit les dimensions (nombres entiers) a, b et c d’un parallélépipède rectangle puis calcule et affiche sa superficie.

Exercice 15(Corrigé sur l’ebook 2): Ecrire un programme C qui lit un entier n. Puis affiche les trois entiers impairs qui le suivent.

Exemple : pour 5 on affiche 7 9 11, et pour 2 on affiche 3 5 7.

Conditions

Exercice 1: Ecrire un programme C qui permet de dire si un entier est pair ou impair.

Exercice 2: Ecrire un programme C qui permet de comparer deux entiers a et b, et d’afficher selon le cas l’un des messages suivants: a=b, a>b ou a<b.

Exercice 3: Ecrire un programme C qui lit trois entiers pour les afficher ensuite dans un ordre croissant.

Exercice 4: Ecrire un programme C qui lit un nombre réel et détermine s’il est entier ou non.

Exercice 5: Ecrire un programme C qui lit un caractère et détermine s’il fait partie des alphabets ou non. Et s’il l’est, dire en plus s’il est une minuscule ou une majuscule.

Exercice 6(Corrigé sur l’ebook 1): Ecrire un programme C qui lit une date au format 15/09/2012 et l’affiche sous le format suivant: 15-Septembre-2012.

Exercice 7(Corrigé sur l’ebook 1): Ecrire un programme C qui lit un entier et dit s’il est un carré parfait ou non.

On rappelle qu’un entier est carré parfait, si sa racine carrée est entière. Ex: les nombre 1 (1×1), 4 (2×2) et 9 (3×3) sont tous des carrés parfaits.

Exercice 8(Corrigé sur l’ebook 1): Ecrire un programme C qui lit les coordonnées des deux extrémités d’un segment, et lit ensuite les coordonnées d’un point dans le plan et dit si ce dernier se trouve ou non sur le segment.

Exercice 9(Corrigé sur l’ebook 1): Ecrire un programme C qui lit deux instants dans le format HH:MM:SS, et affiche un des messages suivants:

  • Le premier instant vient avant le deuxième;
  • Le deuxième instant vient avant le premier;
  • Il s’agit du même instant.

Exercice 10(Corrigé sur l’ebook 1): Ecrire un programme C qui affiche d’une manière aléatoire un des jours de la semaine.

Exercice 11(Corrigé sur l’ebook 2): Ecrire un programme C qui lit un nombre impair n et confirme que 32 divise (n2+3)(n2+7).

Exercice 12(Corrigé sur l’ebook 2): Ecrire un programme C qui lit deux entiers représentant le grand rayon a et le petit rayon b d’une ellipse. Puis détermine si oui ou non l’aire de cette ellipse est supérieure ou égale à 100.

Exercice 13(Corrigé sur l’ebook 2): Ecrire un programme C qui lit trois entiers qui représentent les longueurs des côtés d’un triangle, et permet de dire s’il s’agit d’un triangle équilatéral, isocèle ou scalène.

Exercice 14(Corrigé sur l’ebook 2): Ecrire un programme C qui lit un caractère et détermine ensuite s’il est un chiffre, une lettre de l’alphabet ou un autre type de caractères.

Exercice 15(Corrigé sur l’ebook 2): Ecrire un programme C qui permet de lire deux nombres réels a et b, puis un entier n et afficher le résultat de la division de a par b avec une précision de n (0≤n≤3) chiffres après la virgule.

Boucles

Exercice 1: Ecrire un programme C qui définit un nombre magique (un nombre secret), et lit des entiers à l’entrée jusqu’à ce que l’utilisateur trouve ce nombre. En lui indiquant à chaque fois s’il est en dessus ou au-dessous du nombre magique.

Exercice 2: Ecrire un programme C qui lit un entier puis détermine s’il est premier ou non.
On rappelle qu’un entier est dit premier s’il a exactement deux diviseurs différents; 1 et lui-même.
Ex: 2, 3, 7, 17, 101 sont tous premiers, et 4, 10, 27 ne le sont pas.

Exercice 3: Ecrire un programme C qui lit une série d’entiers positifs inférieurs à 100 terminée par 0. Et qui doit négliger toute entrée strictement supérieure à 100. Puis calcule et affiche la somme et le max des éléments de cette série.

Exercice 4: Ecrire un programme C qui lit un entier et l’affiche inversé. On choisira de ne pas afficher chiffre par chiffre mais de construire l’entier inversé puis l’afficher.

Ex: si l’entrée est 12345 on doit afficher l’entier 54321.

Exercice 5: Ecrire un programme C qui lit un entier puis affiche tous les nombres premiers qui lui sont inférieurs.

Exercice 6(Corrigé sur l’ebook 1): Ecrire un programme C qui calcule le nième terme de la suite de Fibonacci, définie comme suit: Un=Un-1+Un-2U1=U0=1.

Exercice 7(Corrigé sur l’ebook 1): Ecrire un programme C qui utilise le principe de dichotomie pour trouver la solution de l’équation x3+12x2+1=0 dans l’intervalle [-15,-10] avec une précision de 0,00001.

Exercice 8(Corrigé sur l’ebook 2): Ecrire un programme C qui permet de reproduire le schéma suivant :

Exercice 9(Corrigé sur l’ebook 2): Ecrire un programme C qui approxime le nombre π à une précision de 0.00001 en utilisant la formule suivante :

Exercice 10(Corrigé sur l’ebook 2): Ecrire un programme C qui permet de calculer les nièmes termes des deux suites réelles suivantes :

Tableaux

Exercice 1: Ecrire un programme C qui lit un entier n, puis n autres entiers positifs dans un tableau, l’affiche puis calcul la somme, le max, et le min de ses éléments.

Exercice 2: Ecrire un programme C qui lit un entier n, puis n autres éléments dans un tableau. Et, affiche ce dernier avant et après la suppression de toutes les occurrences d’un nombre entré par l’utilisateur.

Exercice 3: Ecrire un programme C qui lit un entier n. Puis n autres entiers inférieurs à 100, dans un tableau. Et affiche le nombre d’occurrences de chaque élément du tableau de la façon suivante:

Si le tableau est: 1 2 5 2 1 2, on affiche:

1 est répété 2 fois.
2 est répété 3 fois.
5 est répété 1 fois.

Pas nécessairement dans un ordre précis, mais chaque élément ne doit être cité qu’une seule fois.

Exercice 4: Ecrire un programme C qui construit la table de multiplication des entiers entre 1 et 9 puis l’affiche.

Exercice 5: Ecrire un programme C qui lit un entier n inférieur à 10, et une matrice (tableau à deux dimensions) carrée nxn. Puis l’affiche et vérifie si tous les entiers entre 1 et n2 y sont présents ou non.

Ex: la matrice 3×3 suivante vérifie cette contrainte.

2 5 3
1 9 6
7 4 8

Exercice 6(Corrigé sur l’ebook 1): Ecrire un programme C qui lit un tableau de taille nxm, et cherche tous les points-col qui s’y trouvent.

Un point-col est un élément qui est max sa ligne et min sur sa colonne.

Exercice 7(Corrigé sur l’ebook 1): Ecrire un programme C qui lit une position (i,j) d’un tableau 8×8, rempli par des zéros. Et marque toutes les cases des deux diagonales qui passent par cette position en y mettant des uns.

Exercice 8(Corrigé sur l’ebook 1): Ecrire un programme C qui lit un tableau nxn, et vérifie s’il est magique ou non. Un tableau est dit magique, si la somme des éléments de chaque ligne, de chaque colonne et de chaque une des deux diagonales est la même. En plus il doit contenir tous les entiers entre 1 et n2.
L’exemple suivant montre un carré magique de dimension 3×3 :

Exercice 9(Corrigé sur l’ebook 1): Ecrire un programme C qui lit les dimensions n et m d’un tableau à deux dimensions, le remplit d’une manière spirale en utilisant les entiers de l’intervalle 1 à n*m comme indiqué sur le tableau ci-dessous:

Exercice 10(Corrigé sur l’ebook 1): Ecrire un programme C qui lit un tableau de taille nxm, et cherche tous les points-col qui s’y trouvent.

Un point-col est un élément qui est max sa ligne et min sur sa colonne.

Exercice 11(Corrigé sur l’ebook 2): Ecrire un programme C qui lit un tableau d’entiers puis affiche une des plus longues séquences croissantes qu’il contient.

Exercice 12(Corrigé sur l’ebook 2): Ecrire un programme C qui lit un tableau d’entiers, puis un entier m et déplace les m premiers éléments du tableau vers la fin de celui-ci.

Exemple : déplacement des trois premiers éléments d’un tableau.

Exercice 13(Corrigé sur l’ebook 2): Ecrire un programme C qui effectue la demi-vectorisation d’une matrice carrée.

La demi-vectorisation (vech : half vectorization) d’une matrice carrée est une opération qui donne un vecteur constitué des éléments du triangle inférieur, comme montré sur l’exemple suivant :

Exercice 14(Corrigé sur l’ebook 2): Ecrire un programme C qui lit deux matrices de mêmes dimensions, et réalise leur produit de Hadamard. Ce produit est obtenu en multipliant les coefficients qui occupent les mêmes positions, comme montré sur l’exemple suivant :

Tris

Exercice 1: Ecrire un programme C qui lit un tableau d’entiers et le tri dans un ordre croissant en utilisant le tri à bulles.

Exercice 2: Ecrire un programme C qui trie dans un ordre croissant les éléments d’un tableau d’entiers en utilisant le tri par insertion.

Exercice 3: Ecrire un programme C qui lit un tableau d’entiers et le trie en utilisant la méthode du tri par sélection.

Exercice 4: Ecrire un programme C qui lit un tableau d’entiers, le trie puis affiche, dans un ordre croissant, tous les éléments qui y sont présents sans les répéter.

Exemple : pour le tableau suivant 2 4 3 5 5 9 2 9 on doit afficher 2 3 4 5 9.

Exercice 5: Ecrire un programme C qui lit un tableau d’entiers à deux dimensions puis trie les éléments de chaque ligne indépendamment et l’affiche.

Chaînes de caractères

Exercice 1: Ecrire un programme C qui lit une chaîne de caractères et vérifie si elle est palindrome ou non. On rappelle qu’une chaîne de caractères est dite palindrome, si elle se lit de la même manière dans les deux sens. Exemple: non, touot et 1234321 sont toutes des chaînes de caractères palindromes.

Exercice 2: Ecrire un programme C qui lit deux chaînes de caractères et les affiche dans l’ordre alphabétique, en utilisant les deux méthodes suivantes:

• En utilisant la fonction strcmp.
• Sans utiliser la fonction strcmp.

Par exemple, si on donne en entrée les deux chaînes suivantes: acb et abcd, le programme doit afficher la chaîne abcd puis acb.

Exercice 3: Ecrire un programme C qui lit deux chaînes de caractères et permute leurs contenus en utilisant les deux méthodes suivantes:

• Avec la fonction strcpy;

• Sans la fonction strcpy.

Exercice 4: Ecrire un programme C qui lit une chaîne de caractères, et transforme chaque caractère majuscule en minuscule et vice versa.

Exercice 5: Ecrire un programme C qui lit deux chaînes de caractères et vérifie si la deuxième est une sous chaîne de la première ou non.
Exemple: tout est une sous chaîne de surtout.

Exercice 6(Corrigé sur l’ebook 1): Ecrire un programme C, qui lit une chaîne de caractères représentant une phrase, et affiche dans l’ordre alphabétique toutes les lettres qui ne figurent pas dans cette chaîne de caractères.

Exercice 7(Corrigé sur l’ebook 1): Ecrire un programme C qui lit une chaîne de caractères et supprime toutes les occurrences d’un caractère entré par l’utilisateur.

Exercice 8(Corrigé sur l’ebook 1): Ecrire un programme C qui lit une chaîne de caractères puis un ensemble de caractères et affiche le nombre de fois que chacun d’eux a apparu dans cette chaîne.

Exercice 9(Corrigé sur l’ebook 1): Ecrire un programme C qui lit une chaîne de caractères et calcule le nombre d’occurrences de chacun de ses caractères.

Exercice 10(Corrigé sur l’ebook 1): Ecrire un programme C qui lit une liste de prénoms puis demande à l’utilisateur d’entrer une lettre et affiche tous les prénoms commençant par cette lettre.

Exercice 11(Corrigé sur l’ebook 2): Ecrire un programme C qui lit deux chaînes de caractères et dit si la deuxième est une rotation de la première.

Exemple : les chaines de caractères abcde, bcdea, cdeab, deabc et eabcd sont toutes les rotations possibles de la chaîne abcde.

Exercice 12(Corrigé sur l’ebook 2): Ecrire un programme C qui permet de trouver la plus grande frontière d’une chaîne de caractères, si elle existe.

Une frontière d’une chaîne de caractère, est une sous chaîne qui apparait au début et à la fin de la chaîne.

Exemples : aab est une frontière de aabbaab, bab est une frontière de babab et ab n’a pas de frontière.

Exercice 13(Corrigé sur l’ebook 2): Ecrire un programme C qui lit deux caractères et un entier n. Puis calcule et affiche la nième chaîne de Fibonacci basée sur ces deux caractères.

La nième chaîne de Fibonacci Sn est obtenue en concaténant Sn-1 avec Sn-2, en mettant Sn-1 devant Sn-2.

Exemple :

S0=b
S1=a
S2=ab
S3=aba
S4=abaab
S5=abaababa
S6=abaababaabaab

Exercice 14(Corrigé sur l’ebook 2): Ecrire un programme C qui lit deux chaînes de caractères et vérifie si la deuxième est une période de la première.

Exemple : abc est une période de abcabcabc mais pas de aabcabc.

Exercice 15(Corrigé sur l’ebook 2): Ecrire un programme C qui lit deux chaînes de caractères, et affiche toutes les sous chaînes de la première, qui ne sont constituées que de caractères existants dans la deuxième chaîne.

Structures

Exercice 1: Ecrire un programme C qui définit une structure point qui contiendra les deux coordonnées d’un point du plan. Puis lit deux points et affiche la distance entre ces deux derniers.

Exercice 2: Ecrire un programme C qui définit une structure etudiant où un étudiant est représenté par son nom, son prénom et une note. Lit ensuite une liste d’étudiants entrée par l’utilisateur et affiche les noms de tous les étudiants ayant une note supérieure ou égale à 10 sur 20.

Exercice 3: Ecrire un programme C, qui lit les noms complets des étudiants et leurs moyennes dans un tableau de structures. Puis actualise ces moyennes en ajoutant un bonus de:

  • 1 point pour les étudiants ayant une note strictement inférieure à 10.
  • 0.5 point pour les étudiants ayant une note entre 10 et 15 incluses.

N.B.: la structure doit avoir deux éléments: une chaîne de caractères et un réel.

Exercice 4: Ecrire un programme C, qui lit le nom, le prénom et l’âge de plusieurs personne dans un tableau de structures, puis insère une nouvelle personne dans une position entrée par l’utilisateur.

Exercice 5: Ecrire un programme C, qui lit un ensemble de villes avec leur nombre d’habitants dans un tableau de structures, les trie et les affiche dans l’ordre croissant des nombres d’habitants.

Exercice 6(Corrigé sur l’ebook 1): Ecrire un programme C qui lit un ensemble de personnes avec leurs âges, dans un tableau de structures, et supprime ensuite toutes celles qui sont âgées de vingt ans et plus.

Exercice 7(Corrigé sur l’ebook 2): Ecrire un programme C qui lit un instant donné, sous forme d’heures et de minutes vers une variable de structures, puis affiche cet instant sous la forme hh:mm (ex : 02:37). La structure à utiliser est composée de deux éléments entiers h pour les heures et m pour les minutes.

Exercice 8(Corrigé sur l’ebook 2): Ecrire un programme C qui lit un ensemble de cercles définis par les coordonnées de leurs centres et leurs rayons. Puis lit les coordonnées d’un point et affiche ensuite tous les cercles contenant ce point.

Exercice 9(Corrigé sur l’ebook 2): Ecrire un programme C qui crée un structure couple contenant deux entiers représentant l’âge de la femme et celui de l’homme. Puis l’utilise pour créer un tableau de structures où il stocke une liste des âges des couples. Ensuite affiche le pourcentage de couples où la femme est plus âgée que l’homme.

Exercice 10(Corrigé sur l’ebook 2): Ecrire un programme C qui définit une structure personne contenant le nom et le prénom d’une personne. Puis définit une autre structure appelée couple contenant deux éléments h et f de type struct personne, représentant un homme et une femme constituant un couple. Lire ensuite une liste de couples puis mettre la première lettre de tous les noms et prénoms en majuscule. Et afficher pour chaque couple la phrase suivante :

Mr prénom nom est le mari de Mme prénom nom

Pointeurs

Exercice 1: Ecrire un programme C qui utilise la notion de pointeur pour lire deux entiers et calculer leur somme.

Exercice 2: Ecrire un programme C qui utilise la notion de pointeur pour la permuter le contenu de deux variables de type char.

Exercice 3: Ecrire un programme C qui remplit un tableau d’entiers et calcule la somme de ses éléments en utilisant un pointeur pour son parcours.

Exercice 4: Ecrire un programme C qui lit une chaîne de caractères et affiche cette chaîne à partir de la première occurrence d’un caractère entré par l’utilisateur. En utilisant pour ceci la fonction strchr et un pointeur pour le parcours de la chaîne.

Exercice 5: Ecrire un programme C qui définit une structure permettant de stocker le nom, le prénom et l’âge d’une personne. Lit ensuite ces informations pour deux personnes et affiche le nom complet de la moins âgée d’entre elles en utilisant une seule fonction printf pour l’affichage du résultat.

Exercice 6(Corrigé sur l’ebook 1): Ecrire un programme C qui vérifie si une chaîne de caractères est palindrome en utilisant deux pointeurs pour son parcours.

Exercice 7(Corrigé sur l’ebook 1): Ecrire un programme C qui réserve l’espace mémoire à un tableau d’entiers de taille entrée par l’utilisateur, le lit puis l’affiche.

Exercice 8(Corrigé sur l’ebook 1): Ecrire un programme C qui réserve l’espace mémoire à un tableau d’entiers à deux dimensions dont la taille est entrée par l’utilisateur, puis le lit et l’affiche.

Exercice 9(Corrigé sur l’ebook 1): Ecrire un programme C qui réserve l’espace mémoire à un tableau de caractères sous forme d’un triangle droit, le remplit par des étoiles (*) puis l’affiche.

Exercice 10(Corrigé sur l’ebook 2): Ecrire un programme C qui lit une phrase et l’affiche à partir du deuxième mot. En s’aidant dans ceci de la fonction strchr et sans utiliser aucune boucle.

N.B. : Si un seul mot est entré, il faudra seulement le réafficher.

Exercice 11(Corrigé sur l’ebook 2): Ecrire un programme C qui lit un mot et détermine si ce dernier est composé par redoublement de syllabe, en utilisant des pointeurs pour parcourir la chaîne de caractères.

Exemples : bonbon, blabla, coucou et glouglou font partie des mots composés par redoublement de syllabe.

Exercice 12(Corrigé sur l’ebook 2): Ecrire un programme C qui calcule le produit de deux entiers en n’utilisant que les pointeurs.

Exercice 13(Corrigé sur l’ebook 2): Ecrire un programme C qui utilise une structure point, constituée de trois entiers, pour stocker un ensemble de points dans un tableau de structures. Puis cherche une des coordonnées maximales (si elle en existe plusieurs) et lui change le signe.

Exercice 14(Corrigé sur l’ebook 2): Ecrire un programme C qui crée un tableau d’entiers dynamique à deux dimensions, le lit, puis permute deux lignes spécifiées par l’utilisateur sans pour autant déplacer les entiers de leur emplacement mémoire.

Fonctions

Exercice 1: Ecrire un programme C qui définit et utilise une fonction de prototype int Somme(int,int) qui prend en paramètres deux entiers et renvoie leur somme.

Exercice 2: Ecrire un programme C qui définit et appelle une fonction bonjour qui affiche le message Bonjour.

Exercice 3: Ecrire un programme C qui détermine le max de quatre entiers à l’aide d’une fonction Max_4, et qui doit utiliser une autre fonction Max_2 qui trouve le max de deux entiers.

Exercice 4: Ecrire un programme C qui affiche les carrés des éléments d’un tableau d’entiers en utilisant les deux méthodes suivantes: la première se base sur une fonction Affiche_Carre qui prends en paramètre le tableau est affiche les carrés de tout ses éléments, et la deuxième utilise une fonction Carre qui affiche le carré d’un entier entré en paramètre.

Exercice 5: Ecrire un programme C qui définit et utilise une fonction Permuter qui permute les valeurs de deux variables réelles.

Exercice 6(Corrigé sur l’ebook 1): Ecrire un programme C, qui définit et utilise une fonction Inserer, qui insère un entier dans un tableau. L’entier à insérer et la position d’insertion sont lus par cette fonction même.

Exercice 7(Corrigé sur l’ebook 1): Ecrire un programme C qui définit et utilise une fonction de prototype char * Reserver(int) qui réserve l’espace mémoire, d’une manière dynamique, à une chaîne de caractères.

Exercice 8(Corrigé sur l’ebook 1): Ecrire un programme C qui définit quatre fonctions pour effectuer les tâches suivantes:

  • Réservation de l’espace mémoire pour un tableau d’entiers dynamique à deux dimensions;
  • Lecture du tableau;
  • Affichage du tableau;
  • Libération de l’espace mémoire réservé.

Exercice 9(Corrigé sur l’ebook 1): Ecrire un programme C qui définit et utilise une fonction Trier qui trie, dans un ordre croissant, les éléments d’un tableau d’entiers.

Exercice 10(Corrigé sur l’ebook 1): Ecrire un programme C qui définit une fonction récursive qui calcule la somme des entiers entre zéro et un nombre passé en paramètre.

Exercice 11(Corrigé sur l’ebook 2): Ecrire un programme C qui définit une structure point, et une fonction Affecter de prototype void Affecter(struct point *, struct point) qui permet d’affecter une variable de cette structure à une autre. Déclarer ensuite deux variables de type struct point. Lire une, et affecter la à l’autre en utilisant la fonction Affecter.

La structure point contient deux entiers x et y.

Exercice 12(Corrigé sur l’ebook 2): Ecrire un programme C qui définit et utilise une fonction Chercher, de prototype char * Chercher(char *,char) qui renvoie un pointeur sur la dernière occurrence d’un caractère dans une chaîne. Le pointeur renvoyé, sera utilisé pour calculer l’indice de la dernière occurrence du caractère.

Exercice 13(Corrigé sur l’ebook 2): Ecrire un programme C qui définit la fonction Lire de prototype int Lire(int *) qui lit un ensemble de chiffres juxtaposés (ex : 37580752108675) et les mit dans un tableau d’entiers entré en paramètre, un chiffre par case, puis renvoie sa taille.

Exercice 14(Corrigé sur l’ebook 2): Ecrire un programme C qui trie un tableau d’entiers dans un ordre croissant par la méthode du tri par sélection. Définir pour ceci une fonction Trier qui prend en paramètre le tableau à trier et le nombre de ses éléments.

La fonction Trier doit utiliser la fonction Selectionner qui prend un tableau et deux indices a et b (a<b), et trouve la position de l’élément max entre a et b (les deux inclus) et le permute avec l’élément du tableau d’indice b.

Exercice 15(Corrigé sur l’ebook 2): Ecrire un programme C qui définit une fonction Dichotomie qui trouve et affiche le point où s’annule la fonction ci-dessous sur l’intervalle [2,3], avec une précision de 0,00001 en se basant sur le principe de la dichotomie:

Listes chaînées

Exercice 1: Ecrire un programme C qui permet de créer et de lire une liste chaînée d’entiers et affiche ensuite ses éléments.

La structure utilisée pour les cellule de la liste doit être constituée d’:

  • un entier;
  • un pointeur sur la structure de la liste.

Illustration:

Exercice 2: On définit une matrice creuse comme étant une matrice dont plus que la moitié des éléments sont nuls.

Pour minimiser l’espace occupé par ce type de matrice on choisi de les représenter sous forme d’un tableau de listes chaînées, de sorte que la iième liste chaînée contient les éléments non nuls de la ligne i de la matrice et chacun d’eux accompagné du numéro de la colonne où il se trouve.

Tâches à faire:

  • Définir la structure qui sera utilisée pour les cellules des listes chaînées;
  • Transformer une matrice M de taille nxm en tableau de listes chaînées T comme défini précédemment;
  • Afficher un élément M[i][j] à partir de T.

Exercice 3: Ecrire un programme C qui crée et lit une liste chaînée d’entiers, et lit ensuite un entier et une position et insère l’entier dans la position précisée.

Exercice 4: Ecrire un programme C qui crée et lit une liste chaînée d’entiers, puis supprime de cette liste toutes les occurrences d’un entier entré par l’utilisateur

Exercice 5: Ecrire un programme C qui inverse une liste chaînée en manipulant seulement ses pointeurs de liaison.

Exercice 6(Corrigé sur l’ebook 1): Ecrire un programme C qui trie une liste chaînée d’entiers en utilisant le tri à bulles.

Exercice 7(Corrigé sur l’ebook 1): Ecrire un programme C qui supprime tous les éléments redondants d’une liste chaînée d’entiers.

Exercice 8(Corrigé sur l’ebook 1): Ecrire un programme C qui, à partir des éléments d’une liste chaînée, crée deux autres listes telles que la première contient les nombres pairs et la deuxième ceux impairs.

Exercice 9(Corrigé sur l’ebook 2): Ecrire un programme C, qui définit et utilise trois fonctions pour réaliser chacune l’une des trois tâches suivantes :

  • Boucler une liste chaînée en liant son dernier élément au premier ;
  • Chercher et renvoyer un pointeur sur un max d’une liste chaînée bouclée ;
  • Dissocier une liste bouclée vers une liste ouverte qui commence par un élément maximal.

Exercice 10(Corrigé sur l’ebook 2): Ecrire un programme C qui permet de créer une liste d’entiers doublement chaînée, la lit et affiche ensuite ses éléments du premier au dernier puis inversement.

Exercice 11(Corrigé sur l’ebook 2): Ecrire un programme C qui lit, vers une liste chaînée, une série d’entiers triée d’une manière croissante et la retrie dans l’ordre décroissant en jouant seulement sur les pointeurs de liaison.

Exercice 12(Corrigé sur l’ebook 2): Ecrire un programme C qui se base sur la notion des piles pour vérifier si une suite de crochets est équilibrée ou non.

Exemples : [ ][ ][ [ [ ] ] ] (Crochets équilibrés) et ] [ (Crochets non équilibrés).

Le programme doit s’inspirer des éléments suivants :

  • Création d’une liste chaînée appelée pile ;
  • Les cellules de la liste pile contiennent un caractère et un pointeur de liaison ;
  • Une fonction Add qui ajoute une cellule à la tête de la liste pile en la remplissant par un caractère pris en paramètre ;
  • Une fonction Drop qui supprime la cellule à la tête de pile ;
  • Une fonction Top qui renvoie le caractère dans la tête de la liste pile ;
  • Une fonction Vide qui renvoie 1 si pile est vide, et 0 dans le cas contraire.

Algorithme : Pour vérifier si une suite de crochets est équilibrée, il suffit de les ajouter à la pile, dans l’ordre, crochet par crochet. Sauf dans le cas suivant ; si le crochet à la tête de la pile est un crochet ouvrant [ et le crochet qu’on souhaite ajouter est un crochet fermant ]. Dans ce cas, le crochet fermant ne doit pas être ajouté à la pile, et en plus on supprime le crochet ouvrant de la tête de la pile. Puis, on passe au crochet suivant dans la suite.

Après le traitement de tous les crochets, on vérifie si la pile est vide ou non. Si elle l’est, la suite de crochets est équilibrée, sinon elle n’est pas équilibrée.

Exercice 13(Corrigé sur l’ebook 2): Ecrire un programme C qui lit des entiers vers une liste doublement chaînée puis inverse l’ordre de ses éléments sans toucher aux pointeurs de liaison.