Онлайн-компилятор и отладчик C++

Компилируйте и отлаживайте C++ с точками останова, просмотром переменных и пошаговым выполнением GDB в серверном режиме.

Предустановленные библиотеки
🚀 2,389,477 всего выполнений (98,082 в этом месяце)
Вывод

Практикуйте C++ на задачах

Решайте задачи прямо в редакторе: запускайте тесты, отправляйте решение и получайте AI-рецензию.

Все задачи на C++
Легко

Среднее из трёх

Вычислите среднее трёх целых чисел.

BeginnerLearning-pathVariables
Легко

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

BeginnerLearning-pathVariables
Сложно

Course Schedule Order

Order courses so every prerequisite comes first.

AdvancedGraphsHackathonTopological-sort
Пока нет решений
Средне

Island Perimeter

Measure the coastline of land cells in a grid.

AdvancedGridsHackathon
Пока нет решений
Средне

K-th Smallest Element

Find the k-th smallest value without fully sorting.

AdvancedCompetitive-programmingSorting
Пока нет решений
Сложно

Median of Two Sorted Arrays

Find the median of two sorted lists combined.

AdvancedBinary-searchCompetitive-programming
Пока нет решений
Сложно

Shortest Delivery Tour

Visit every city once and return home as cheaply as possible.

AdvancedBitmasksCompetitive-programmingDynamic-programming
Пока нет решений
Сложно

Strongly Connected Components

Count groups of nodes that can all reach each other.

AdvancedCompetitive-programmingGraphs
Пока нет решений
Сложно

Longest Path in a DAG

Find the heaviest path in a task dependency graph.

AdvancedGraphsHackathonTopological-sort
Пока нет решений
Сложно

Matrix Chain Multiplication

Find the cheapest order to multiply a chain of matrices.

AdvancedCompetitive-programmingDynamic-programming
Пока нет решений
Сложно

Minimum Window Substring

Find the shortest piece of text containing all required characters.

AdvancedCompetitive-programmingSliding-windowStrings
Пока нет решений
Сложно

Word Break

Decide whether text can be split into dictionary words.

AdvancedDynamic-programmingHackathonStrings
Пока нет решений

Выбрать тему

Изучайте C и C++ вместе на практическом коде: вывод, модель памяти, структуры данных, алгоритмы и современный C++.

Примеры C/C++ →

💻 Об онлайн-компиляторе C++

Онлайн-компилятор C++ от CodeUtility позволяет писать, компилировать и запускать код прямо в браузере — без установки и настройки компилятора. Он работает в безопасной песочнице и поддерживает реальные стандарты C++ - от C++11, C++14, C++17 и до последней версии.

Этот инструмент использует настоящий компилятор C++, работающий в облаке, чтобы компилировать и выполнять ваш код, обеспечивая точное и единообразное поведение в разных версиях. Вы можете свободно экспериментировать с основами C++ - переменными, функциями, циклами, условиями и объектно-ориентированным программированием.

Готовитесь к собеседованиям, осваиваете современные возможности C++ или проверяете логику алгоритмов - Онлайн-компилятор C++ от CodeUtility предоставляет простую, но мощную среду для мгновенного запуска кода с любого устройства.

Больше, чем средство запуска кода

Используйте в одном исполнителе многофайловый редактор, изолированный терминал выполнения, библиотеки для выбранной среды, постоянные рабочие пространства, общий доступ и совместную работу в реальном времени.

Как пользоваться этим исполнителем?

Выберите среду выполнения, откройте или создайте файл, напишите код и нажмите «Запустить». Результат появится в терминале. Пользователи, вошедшие в систему, могут хранить файлы в рабочем пространстве, устанавливать библиотеки и совместно работать через общие ресурсы.

  1. Выберите версию и отредактируйте текущий файл или откройте другой файл рабочего пространства.
  2. Запустите код, при необходимости введите данные в терминале и просмотрите сохранённую историю запусков.
  3. Используйте библиотеки, инструменты рабочего пространства, общий доступ и чат, когда для задачи требуется несколько фрагментов кода.

💡 Основы C++ и примеры, которые можно попробовать выше

1. Объявление переменных и констант

В C++ необходимо объявлять тип каждой переменной. Используйте const, чтобы определить значения только для чтения, которые нельзя изменить после инициализации.

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

// Константы
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";

// Попытка изменить const приведёт к ошибке компиляции
// MAX_USERS = 200; // ❌ ошибка

2. Условия (if / switch)

Используйте if, else if, else для ветвления. Для множества вариантов используйте switch.

int x = 2;
if (x == 1) {
    std::cout << "Один\n";
} else if (x == 2) {
    std::cout << "Два\n";
} else {
    std::cout << "Другое\n";
}

// switch-case
switch (x) {
    case 1:
        std::cout << "Один\n";
        break;
    case 2:
        std::cout << "Два\n";
        break;
    default:
        std::cout << "Другое\n";
}

3. Циклы

Используйте for, while и do-while для повторения блоков кода.

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

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

4. Массивы

Массивы хранят несколько элементов одного типа.

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

5. Операции с массивами/векторами

Используйте std::vector для динамических массивов.

#include <vector>

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

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

6. Ввод/вывод в консоль

Используйте std::cin для ввода и std::cout для вывода.

std::string name;
std::cout << "Введите ваше имя: ";
std::cin >> name;
std::cout << "Привет, " << name << "\n";

7. Функции

Функции объединяют переиспользуемую логику. Используйте параметры и возвращаемые типы.

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

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

8. Отображения (map)

std::map хранит пары ключ-значение, как словарь.

#include <map>

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

9. Обработка исключений

Используйте try и catch для обработки ошибок времени выполнения.

try {
    throw std::runtime_error("Произошла ошибка");
} catch (const std::exception& e) {
    std::cout << e.what();
}

10. Работа с файлами (I/O)

Используйте fstream для чтения и записи файлов.

#include <fstream>

std::ofstream out("file.txt");
out << "Привет, файл";
out.close();

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

11. Работа со строками

Строки C++ поддерживают методы length(), substr() и find().

std::string text = "Привет, мир";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("мир");

12. Классы и объекты

C++ поддерживает объектно-ориентированное программирование с помощью классов.

class Person {
  public:
    std::string name;
    Person(std::string n) : name(n) {}
    void greet() { std::cout << "Привет, я " << name; }
};

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

13. Указатели

Указатель хранит адрес памяти другой переменной. Используйте &, чтобы получить адрес, и *, чтобы разыменовать (получить значение по адресу).

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

std::cout << "Значение x: " << x << "\n";
std::cout << "Адрес x: " << ptr << "\n";
std::cout << "Значение по указателю: " << *ptr << "\n";

// Изменяем x через указатель
*ptr = 20;
std::cout << "Обновлённый x: " << x << "\n";

🐞 Как отлаживать код %{language} онлайн

Онлайн-отладчик %{language} помогает находить ошибки выполнения и логики без установки компилятора или IDE. Серверный режим компилирует с отладочными символами и запускает программу под GDB.

  1. Установите точки останова рядом с номерами строк.
  2. Выберите Debug, чтобы скомпилировать и остановиться в первой подходящей точке.
  3. Проверьте текущую строку, стек вызовов и переменные.
  4. Используйте Continue, Step Over, Step Into или Step Out.
  5. Выберите Stop, чтобы завершить сеанс.

Начните с небольшого воспроизводимого примера и поставьте точку останова перед неожиданным поведением.