fantasticode.fr
Image default

10 exercices de C++ pour progresser (avec corrections)

En bref

Voici 10 exercices de C++ progressifs avec leur piste de correction, calibrés pour le C++ moderne : string, vector, références, bibliothèque standard — puis le passage aux objets, la signature du langage. Au programme : le bonjour complet (cin, getline et les pièges de la saisie), le convertisseur d’unités à menu, la liste de courses en vector (ajout, parcours, suppression), les statistiques d’un vector (à la main, puis avec les algorithmes standard — les deux versions s’éclairent mutuellement), l’inversion de string, le jeu du juste prix (aléatoire moderne et boucle de dialogue), le carnet de contacts en struct + vector, le tri sur mesure, la classe Rectangle (constructeur, méthodes), et le mini inventaire orienté objet — la synthèse qui ressemble déjà à un vrai logiciel. Compile chaque essai avec -Wall, et souviens-toi de la règle d’or des erreurs C++ : ne lire que la première ligne.

Le C++ s’apprend en construisant petit mais propre — chaque exercice de cette série te fait pratiquer le langage moderne, celui des gants de velours, jusqu’au seuil des objets. Ces 10 exercices de C++ suivent la progression de nos bases du C++, dans le cadre du parcours apprendre le C++. Règle inchangée : 15 à 20 minutes de recherche sérieuse avant chaque piste, tout tapé à la main.

Exercices 1 à 5 : string, vector et bibliothèque standard

  1. Le bonjour complet. Demande prénom et ville, réponds en une phrase. Piste : string et cin pour un mot… puis découvre le piège : cin s’arrête à l’espace. La solution s’appelle getline(cin, prenom) — et le mélange cin/getline t’offrira ton premier vrai débogage de flux, formateur à souhait.
  2. Le convertisseur à menu. Un petit menu (1 : euros→dollars, 2 : km→miles, 3 : quitter) qui boucle jusqu’au choix 3. Piste : un while autour d’un switch, une fonction par conversion — l’architecture de tous tes futurs programmes console.
  3. La liste de courses. vector<string> : l’utilisateur ajoute des articles, la liste s’affiche numérotée, et on peut retirer le dernier. Piste : push_back pour ajouter, pop_back pour retirer, le for sur intervalle pour afficher — ton premier tour complet du tableau dynamique.
  4. Les statistiques. Sur un vector<double> de notes : minimum, maximum, moyenne. Piste : écris d’abord les trois à la main (parcours et comparaisons), puis refais-les avec la bibliothèque : min_element, max_element, accumulate depuis les en-têtes algorithm et numeric. Les deux versions côte à côte sont la vraie leçon — comprendre ce que les outils standard font, puis les utiliser sans scrupule.
  5. L’inversion de string. « Bonjour » devient « ruojnoB ». Piste : la version artisanale (deux indices qui convergent en échangeant) puis la version outillée — reverse(mot.begin(), mot.end()) — même philosophie qu’à l’exercice 4 : la main d’abord, l’outil ensuite.

Exercices 6 à 10 : dialogue, structures et premiers objets

  1. Le juste prix. Le programme tire un prix entre 1 et 1000, tu proposes, il guide (« c’est plus », « c’est moins ») et compte les essais. Piste : une boucle while de dialogue, et l’aléatoire moderne de l’en-tête random (mt19937 et une distribution uniforme) — plus verbeux que le vieux rand, mais tu apprends l’outil que le C++ contemporain recommande.
  2. Le carnet de contacts. Une struct Contact (nom, ville, email), un vector<Contact>, un menu ajouter/lister/chercher. Piste : la struct regroupe, le vector collectionne, une fonction par action du menu — la trinité des programmes de gestion, en modèle réduit.
  3. Le tri sur mesure. Trie ton carnet par nom, puis par ville. Piste : sort avec un critère de comparaison passé en dernier argument — l’occasion de rencontrer les lambdas, ces mini fonctions anonymes écrites sur place : [](const Contact& a, const Contact& b) { return a.nom < b.nom; }. Deux lignes qui ouvrent un continent.
  4. La classe Rectangle. Attributs largeur et hauteur privés, constructeur, méthodes aire() et perimetre(), et un affichage propre. Piste : le passage de struct à class introduit l’encapsulation — les données privées, l’accès par méthodes — le duo fondateur expliqué dans comprendre classes et objets. Crée deux rectangles et compare leurs aires : deux objets, deux vies.
  5. Le mini inventaire. La synthèse : une classe Produit (nom, prix, quantité, méthode valeurStock()), un vector<Produit>, un menu ajouter/lister/valeur totale. Piste : tout ce qui précède, assemblé — et ta première architecture orientée objet qui tient debout. Réussi sans tutoriel ? Le grand chapitre de la POO t’attend, et tu y entres par la grande porte.

La méthode : la première ligne d’erreur, et la comparaison des mondes

Trois disciplines pour rentabiliser la série. La première ligne d’erreur seulement : le C++ produit des messages en cascade impressionnants — surtout dès que la bibliothèque standard s’en mêle — mais la cause réelle loge presque toujours dans la première ligne ; lis-la, corrige, recompile, et ignore superbement les vingt suivantes. Compile après chaque bloc, avec -Wall en permanence : le compilateur C++ est ton relecteur le plus rapide, et une erreur fraîche se répare en secondes. Écris les deux versions quand l’exercice le propose — la main puis l’outil standard : c’est la pédagogie du C++ lui-même, un langage qui te laisse toujours choisir ton niveau d’altitude, et qui récompense ceux qui connaissent l’étage du dessous.

Si tu viens de nos exercices de C, note le contraste à chaque ligne : la saisie sans formats, le texte sans sentinelle, les collections sans débordement — même famille, une génération de confort d’écart. Un exercice par jour, chaque réussite prolongée d’une variante (le juste prix en nombre d’essais limité, l’inventaire avec suppression d’un produit, le tri en ordre décroissant), et le socle devient réflexe en dix jours. La suite naturelle : la POO en profondeur — héritage, polymorphisme — puis les projets qui font rêver, du petit jeu codé pas à pas aux idées de projets revisitées en version objets. Et pour l’endurance, les sites d’exercices gratuits ont tous leurs pistes C++ — l’entraînement continue, l’altitude augmente.

Questions fréquentes

Quels exercices C++ pour un débutant complet ?

Commence par le dialogue et les collections modernes : saisie avec string et getline, un menu à boucle, une liste en vector, des statistiques calculées à la main puis avec les algorithmes standard. Enchaîne sur une struct avec vector, puis une première classe — la progression naturelle du C++ moderne.

Comment lire les longues erreurs de compilation du C++ ?

Ne lis que la première ligne : elle contient presque toujours la cause réelle (type incompatible, symbole inconnu, point-virgule manquant), les dizaines de lignes suivantes n’étant que ses conséquences dans la bibliothèque standard. Corrige, recompile, et répète — le réflexe s’installe en quelques jours.

Faut-il utiliser les algorithmes standard ou tout coder à la main ?

Les deux, dans cet ordre : coder une fois à la main (minimum, tri, inversion) pour comprendre la mécanique, puis adopter définitivement les outils standard (min_element, sort, reverse) comme le fait le C++ professionnel. Connaître l’étage du dessous rend l’usage de l’étage du dessus lucide.

Que faire après ces 10 exercices C++ ?

Plonge dans l’orienté objet complet — héritage, polymorphisme, classes qui collaborent — puis vise un projet motivant : un jeu console étoffé (morpion, démineur), un gestionnaire avec sauvegarde en fichier, ou tes premiers pas avec une bibliothèque graphique 2D si le jeu vidéo t’appelle.

Sources

Cet article a une vocation informative et pédagogique. Les plateformes, outils et formations éventuellement cités le sont à titre d’exemple ; compare plusieurs options avant de t’engager ou de payer.