Compilateur et débogueur C++ en ligne

Compilez et déboguez C++ avec points d'arrêt, variables et exécution pas à pas GDB en mode Serveur.

Bibliothèques préinstallées
🚀 2,392,395 exécutions totales (21 ce mois-ci)
Sortie

Pratiquez C++ avec des défis de code

Résolvez des problèmes concrets dans cet éditeur : lancez les tests, soumettez et recevez une relecture IA.

Tous les défis C++
Facile

Average of Three

Average three whole numbers.

Vous apprendrez ArithmétiqueDivision
BeginnerLearning-pathVariables
Facile

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

Vous apprendrez ArithmétiqueValeurs de retour
BeginnerLearning-pathVariables
Moyen

Une génération d'algorithme génétique

Produisez la génération suivante de chaînes de bits par sélection par tournoi, croisement en un point et mutation.

Vous apprendrez Algorithmes génétiquesRecherche évolutionnaire
OptimizationSimulationai
Aucune solution pour l’instant
Facile

Bandit manchot multi-bras epsilon-greedy

Équilibrez exploration et exploitation sur un bandit multi-bras avec une sélection d'action epsilon-greedy.

Vous apprendrez Exploration ou exploitationBandits
Apprentissage par renforcementaiapprentissage automatique
Aucune solution pour l’instant
Facile

Distribution d'états d'une chaîne de Markov

Propagez une distribution de probabilités à travers la matrice de transition d'une chaîne de Markov pendant un certain nombre de pas.

Vous apprendrez Chaînes de MarkovProbabilités
Simulationaimath
Aucune solution pour l’instant
Moyen

Itération sur les valeurs

Calculez la valeur de chaque état d'un processus de décision markovien en appliquant à répétition la mise à jour d'optimalité de Bellman.

Vous apprendrez Équation de BellmanMDP
Apprentissage par renforcementaiapprentissage automatique
Aucune solution pour l’instant
Moyen

Mises à jour du Q-learning

Appliquez la mise à jour du Q-learning à un flux d'expériences et regardez les récompenses remonter vers les états précédents.

Vous apprendrez Q-learningRécompenses actualisées
Apprentissage par renforcementaiapprentissage automatique
Aucune solution pour l’instant
Moyen

Élagage alpha-bêta

Évaluez un arbre de jeu avec minimax et l'élagage alpha-bêta, et comptez combien de feuilles la recherche examine vraiment.

Vous apprendrez Élagage alpha-bêtaRecherche dans les jeux
RecursionTreesai
Aucune solution pour l’instant
Moyen

Morpion avec minimax

Choisissez le coup parfait au morpion en explorant tout l'arbre de jeu avec minimax.

Vous apprendrez MinimaxArbres de jeu
Recursionai
Aucune solution pour l’instant
Moyen

Recherche A* sur une grille pondérée

Trouvez le chemin le moins coûteux à travers une grille de coûts de terrain avec A*, l'algorithme de recherche derrière le pathfinding des jeux et des robots.

Vous apprendrez Recherche A*Heuristiques
GraphsGridsShortest-pathai
Aucune solution pour l’instant
Moyen

Échantillonnage avec température et top-k

Choisissez le token suivant comme un modèle de langage : gardez les k logits les plus élevés, appliquez la température et échantillonnez.

Vous apprendrez Génération de texteÉchantillonnage
aiapprentissage automatique
Aucune solution pour l’instant
Difficile

Auto-attention multi-têtes

Projetez l'entrée en requêtes, clés et valeurs, exécutez l'attention dans plusieurs têtes en parallèle et combinez-les.

Vous apprendrez Attention multi-têtesProjections matricielles
aiapprentissage automatique
Aucune solution pour l’instant

Explorer par thème

Apprenez C et C++ ensemble avec du code pratique, les résultats, la mémoire, les structures de données, les algorithmes et le C++ moderne.

Exemples C/C++ →

💻 À propos de cet exécuteur C++ en ligne

Le CodeUtility C++ Executor vous permet d’écrire et d’exécuter du code C++ directement dans votre navigateur - aucune installation ni configuration de compilateur requise. Il s’appuie sur un bac à sable sécurisé qui prend en charge les standards C++ de C++11, C++14, C++17, jusqu’à la dernière version.

Cet outil utilise un véritable compilateur C++ fonctionnant dans le cloud pour compiler et exécuter votre code, garantissant un comportement précis et cohérent entre les versions. Vous pouvez expérimenter librement les concepts C++ de base comme les variables, fonctions, boucles, conditions et la programmation orientée objet.

Que vous prépariez des entretiens, appreniez les fonctionnalités modernes de C++, ou vérifiiez la logique d’un algorithme, le CodeUtility C++ Executor offre un environnement simple mais puissant pour exécuter du code instantanément depuis n’importe quel appareil.

Bien plus qu’un exécuteur de code

Utilisez depuis le même exécuteur un éditeur multifichier, un terminal d’exécution isolé, des bibliothèques propres à chaque environnement, des espaces de travail persistants, le partage et la collaboration en temps réel.

Comment utiliser cet exécuteur ?

Choisissez un environnement d’exécution, ouvrez ou créez un fichier, écrivez votre code, puis sélectionnez Exécuter. La sortie s’affiche dans le terminal ; les utilisateurs connectés peuvent conserver leurs fichiers dans un espace de travail, installer des bibliothèques et collaborer grâce aux partages.

  1. Sélectionnez une version et modifiez le fichier actuel, ou ouvrez un autre fichier de l’espace de travail.
  2. Exécutez le code, saisissez les données demandées dans le terminal et consultez l’historique des exécutions enregistrées.
  3. Utilisez les bibliothèques, les outils de l’espace de travail, le partage et le chat lorsque votre tâche nécessite plusieurs extraits de code.

💡 Notions de base C++ et exemples à essayer ci‑dessus

1. Déclarer des variables et des constantes

C++ vous demande de déclarer le type de chaque variable. Utilisez const pour définir des valeurs en lecture seule qui ne peuvent pas être modifiées après l’initialisation.

int age = 30;
double pi = 3.14159;
char grade = 'A';
std::string name = "Alice";
bool isActive = true;

// Constantes
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";

// Tenter de modifier un const provoquera une erreur à la compilation
// MAX_USERS = 200; // ❌ erreur

2. Conditions (if / switch)

Utilisez if, else if, else pour faire des branches. Utilisez switch pour tester plusieurs valeurs.

int x = 2;
if (x == 1) {
    std::cout << "Un\n";
} else if (x == 2) {
    std::cout << "Deux\n";
} else {
    std::cout << "Autre\n";
}

// Switch-case
switch (x) {
    case 1:
        std::cout << "Un\n";
        break;
    case 2:
        std::cout << "Deux\n";
        break;
    default:
        std::cout << "Autre\n";
}

3. Boucles

Utilisez for, while et do-while pour répéter des blocs de code.

for (int i = 0; i < 3; i++) {
    std::cout << i << "\n";
}

int n = 3;
while (n > 0) {
    std::cout << n << "\n";
    n--;
}

4. Tableaux

Les tableaux stockent plusieurs éléments du même type.

int numbers[3] = {10, 20, 30};
std::cout << numbers[1] << "\n";

5. Manipulation de tableaux/vecteurs

Utilisez std::vector pour des tableaux dynamiques.

#include <vector>

std::vector nums = {1, 2, 3};
nums.push_back(4);
nums.pop_back();

for (int n : nums) {
    std::cout << n << " ";
}

6. Entrée/Sortie console

Utilisez std::cin pour l’entrée et std::cout pour la sortie.

std::string name;
std::cout << "Entrez votre nom : ";
std::cin >> name;
std::cout << "Bonjour, " << name << "\n";

7. Fonctions

Les fonctions regroupent une logique réutilisable. Utilisez des paramètres et des types de retour.

int add(int a, int b) {
    return a + b;
}

std::cout << add(3, 4);

8. Maps

std::map stocke des paires clé‑valeur comme un dictionnaire.

#include <map>

std::map ages;
ages["Alice"] = 30;
std::cout << ages["Alice"];

9. Gestion des exceptions

Utilisez try et catch pour gérer les erreurs d’exécution.

try {
    throw std::runtime_error("Une erreur s'est produite");
} catch (const std::exception& e) {
    std::cout << e.what();
}

10. Entrée/Sortie de fichiers

Utilisez fstream pour lire et écrire des fichiers.

#include <fstream>

std::ofstream out("file.txt");
out << "Bonjour fichier";
out.close();

std::ifstream in("file.txt");
std::string line;
getline(in, line);
std::cout << line;
in.close();

11. Manipulation de chaînes

Les chaînes C++ prennent en charge des méthodes comme length(), substr() et find().

std::string text = "Bonjour le monde";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("monde");

12. Classes et objets

C++ prend en charge la programmation orientée objet avec des classes.

class Person {
  public:
    std::string name;
    Person(std::string n) : name(n) {}
    void greet() { std::cout << "Salut, je suis " << name; }
};

Person p("Alice");
p.greet();

13. Pointeurs

Un pointeur stocke l’adresse mémoire d’une autre variable. Utilisez & pour obtenir une adresse, et * pour déréférencer (accéder à la valeur à cette adresse).

int x = 10;
int* ptr = &x;

std::cout << "Valeur de x : " << x << "\n";
std::cout << "Adresse de x : " << ptr << "\n";
std::cout << "Valeur via le pointeur : " << *ptr << "\n";

// Modifier x via le pointeur
*ptr = 20;
std::cout << "x mis à jour : " << x << "\n";

🐞 Comment déboguer du code %{language} en ligne

Le débogueur %{language} en ligne recherche les erreurs d'exécution et de logique sans compilateur local ni IDE. Le mode Serveur compile avec les symboles de débogage et exécute le programme sous GDB.

  1. Ajoutez des points d'arrêt à côté des numéros de ligne.
  2. Sélectionnez Déboguer pour compiler et vous arrêter au premier point correspondant.
  3. Examinez la ligne, la pile d'appels et les variables.
  4. Utilisez Continuer, Pas à pas principal, Pas à pas détaillé ou Pas à pas sortant.
  5. Sélectionnez Arrêter pour terminer la session.

Commencez par un exemple minimal reproductible et placez un point d'arrêt juste avant le comportement inattendu.