Compilador e depurador C++ online

Compile e depure C++ com pontos de interrupção, variáveis e controles GDB no modo Servidor.

Bibliotecas pré-instaladas
🚀 2,392,381 execuções totais (7 este mês)
Saída

Pratique C++ com desafios de código

Resolva problemas práticos direto neste editor: rode os testes de exemplo, envie sua solução e receba uma revisão de código por IA.

Todos os desafios de C++
Fácil

Average of Three

Average three whole numbers.

Você vai aprender AritméticaDivisão
BeginnerLearning-pathVariables
Fácil

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

Você vai aprender AritméticaValores de retorno
BeginnerLearning-pathVariables
Médio

Uma geração de um algoritmo genético

Gere a próxima geração de strings de bits com seleção por torneio, cruzamento de um ponto e mutação.

Você vai aprender Algoritmos genéticosBusca evolutiva
OptimizationSimulationai
Ainda sem soluções
Fácil

Bandido multibraço epsilon-greedy

Equilibre exploração e aproveitamento em um bandido multibraço com seleção de ações epsilon-greedy.

Você vai aprender Explorar ou aproveitarBandidos
Aprendizado por reforçoaiaprendizado de máquina
Ainda sem soluções
Médio

Iteração de valor

Calcule quanto vale cada estado de um processo de decisão de Markov aplicando repetidamente a atualização de otimalidade de Bellman.

Você vai aprender Equação de BellmanMDPs
Aprendizado por reforçoaiaprendizado de máquina
Ainda sem soluções
Médio

Atualizações de Q-learning

Aplique a atualização do Q-learning a um fluxo de experiências e veja as recompensas voltarem para estados anteriores.

Você vai aprender Q-learningRecompensas descontadas
Aprendizado por reforçoaiaprendizado de máquina
Ainda sem soluções
Médio

Poda alfa-beta

Avalie uma árvore de jogo com minimax e poda alfa-beta, e conte quantas folhas a busca realmente examina.

Você vai aprender Poda alfa-betaBusca em jogos
RecursionTreesai
Ainda sem soluções
Médio

Jogo da velha com minimax

Escolha a jogada perfeita no jogo da velha explorando toda a árvore de jogo com minimax.

Você vai aprender MinimaxÁrvores de jogo
Recursionai
Ainda sem soluções
Médio

Busca A* em uma grade ponderada

Encontre o caminho mais barato por uma grade de custos de terreno com A*, o algoritmo de busca por trás da navegação em jogos e robôs.

Você vai aprender Busca A*Heurísticas
GraphsGridsShortest-pathai
Ainda sem soluções
Médio

Amostragem com temperatura e top-k

Escolha o próximo token como um modelo de linguagem: mantenha os k maiores logits, aplique a temperatura e amostre.

Você vai aprender Geração de textoAmostragem
aiaprendizado de máquina
Ainda sem soluções
Difícil

Autoatenção multi-cabeça

Projete a entrada em consultas, chaves e valores, execute a atenção em várias cabeças em paralelo e combine-as.

Você vai aprender Atenção multi-cabeçaProjeções matriciais
aiaprendizado de máquina
Ainda sem soluções
Médio

Normalização de camada

Normalize cada linha para média 0 e variância 1 e depois escale e desloque, como todo bloco Transformer faz.

Você vai aprender Normalização de camadaTransformers
Redes neuraisaiaprendizado de máquina
Ainda sem soluções

Explorar por tópico

Aprenda C e C++ juntos com código prático, saídas, memória, estruturas de dados, algoritmos e C++ moderno.

Exemplos C/C++ →

💻 Sobre este Executor C++ Online

O CodeUtility C++ Executor permite escrever e executar código C++ diretamente no seu navegador - sem instalação ou configuração de compilador. É alimentado por um sandbox seguro que suporta padrões reais de C++ desde o C++11, C++14, C++17, até a versão mais recente.

Esta ferramenta usa um compilador C++ real a correr na nuvem para compilar e executar o seu código, garantindo um comportamento preciso e consistente entre versões. Pode experimentar livremente conceitos centrais de C++, como variáveis, funções, loops, condicionais e programação orientada a objetos.

Quer esteja a preparar-se para entrevistas, a aprender recursos modernos de C++ ou a validar a lógica de algoritmos, o CodeUtility C++ Executor oferece um ambiente simples e poderoso para executar código instantaneamente em qualquer dispositivo.

Mais do que um executor de código

Use no mesmo executor um editor de vários arquivos, um terminal de execução isolado, bibliotecas específicas do ambiente, espaços de trabalho persistentes, compartilhamento e colaboração em tempo real.

Como usar este executor?

Escolha um ambiente de execução, abra ou crie um arquivo, escreva o código e selecione Executar. A saída aparece no terminal; usuários conectados podem manter arquivos em um espaço de trabalho, instalar bibliotecas e colaborar por meio de compartilhamentos.

  1. Selecione uma versão e edite o arquivo atual ou abra outro arquivo do espaço de trabalho.
  2. Execute o código, forneça dados no terminal quando solicitado e consulte o histórico de execuções salvo.
  3. Use bibliotecas, ferramentas do espaço de trabalho, compartilhamento e chat quando a tarefa exigir mais de um trecho de código.

💡 Noções básicas de C++ e exemplos que pode experimentar acima

1. Declaração de variáveis e constantes

O C++ exige que declare o tipo de cada variável. Use const para definir valores somente leitura que não podem ser alterados após a inicialização.

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";

// Tentar modificar um const causará um erro em tempo de compilação
// MAX_USERS = 200; // ❌ erro

2. Condicionais (if / switch)

Use if, else if, else para ramificações. Use switch para vários valores.

int x = 2;
if (x == 1) {
    std::cout << "Um\n";
} else if (x == 2) {
    std::cout << "Dois\n";
} else {
    std::cout << "Outro\n";
}

// Switch-case
switch (x) {
    case 1:
        std::cout << "Um\n";
        break;
    case 2:
        std::cout << "Dois\n";
        break;
    default:
        std::cout << "Outro\n";
}

3. Loops

Use for, while e do-while para repetir blocos de código.

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

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

4. Arrays

Arrays armazenam múltiplos elementos do mesmo tipo.

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

5. Manipulação de Arrays/Vetores

Use std::vector para arrays dinâmicos.

#include <vector>

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

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

6. Entrada/Saída na consola

Use std::cin para entrada e std::cout para saída.

std::string name;
std::cout << "Introduza o seu nome: ";
std::cin >> name;
std::cout << "Olá, " << name << "\n";

7. Funções

Funções agrupam lógica reutilizável. Use parâmetros e tipos de retorno.

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

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

8. Mapas

std::map armazena pares chave-valor como dicionários.

#include <map>

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

9. Tratamento de exceções

Use try e catch para lidar com erros em tempo de execução.

try {
    throw std::runtime_error("Ocorreu um erro");
} catch (const std::exception& e) {
    std::cout << e.what();
}

10. Entrada/Saída de ficheiros

Use fstream para ler e escrever em ficheiros.

#include <fstream>

std::ofstream out("file.txt");
out << "Olá, ficheiro";
out.close();

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

11. Manipulação de strings

Strings em C++ suportam métodos como length(), substr() e find().

std::string text = "Olá Mundo";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("Mundo");

12. Classes e objetos

C++ suporta programação orientada a objetos usando classes.

class Person {
  public:
    std::string name;
    Person(std::string n) : name(n) {}
    void greet() { std::cout << "Olá, eu sou " << name; }
};

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

13. Ponteiros

Um ponteiro armazena o endereço de memória de outra variável. Use & para obter um endereço, e * para desreferenciar (aceder ao valor nesse endereço).

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

std::cout << "Valor de x: " << x << "\n";
std::cout << "Endereço de x: " << ptr << "\n";
std::cout << "Valor a partir do ponteiro: " << *ptr << "\n";

// Modificar x através do ponteiro
*ptr = 20;
std::cout << "x atualizado: " << x << "\n";

🐞 Como depurar código %{language} online

Use o depurador %{language} online para encontrar erros de execução e lógica sem instalar compilador ou IDE. O modo Servidor compila com símbolos de depuração e executa o programa no GDB.

  1. Defina pontos de interrupção ao lado dos números de linha.
  2. Selecione Depurar para compilar e pausar no primeiro ponto correspondente.
  3. Inspecione a linha, a pilha de chamadas e as variáveis.
  4. Use Continuar, Passar por cima, Entrar ou Sair.
  5. Selecione Parar para encerrar a sessão.

Comece com um exemplo reproduzível e coloque o ponto de interrupção antes do comportamento inesperado.