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

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

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

Практикуйте 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
Пока нет решений
Средне

Шаг игры «Жизнь»

Выполните один шаг игры «Жизнь» Конвея.

AdvancedGridsHackathonSimulation
Пока нет решений
Сложно

Shortest Delivery Tour

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

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

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, чтобы завершить сеанс.

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