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

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

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

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

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

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

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

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

Вы освоите АрифметикаДеление
BeginnerLearning-pathVariables
Легко

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

Вы освоите АрифметикаВозвращаемые значения
BeginnerLearning-pathVariables
Средне

Одно поколение генетического алгоритма

Выведите следующее поколение битовых строк с помощью турнирного отбора, одноточечного скрещивания и мутации.

Вы освоите Генетические алгоритмыЭволюционный поиск
OptimizationSimulationискусственный интеллект
Пока нет решений
Легко

Многорукий бандит с эпсилон-жадной стратегией

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

Вы освоите Исследование и использованиеБандиты
Обучение с подкреплениемискусственный интеллектмашинное обучение
Пока нет решений
Легко

Распределение состояний цепи Маркова

Распространите распределение вероятностей через матрицу переходов цепи Маркова на заданное число шагов.

Вы освоите Цепи МарковаВероятность
Simulationискусственный интеллектmath
Пока нет решений
Средне

Итерация по ценностям

Вычислите ценность каждого состояния марковского процесса принятия решений, многократно применяя оптимальное обновление Беллмана.

Вы освоите Уравнение БеллманаMDP
Обучение с подкреплениемискусственный интеллектмашинное обучение
Пока нет решений
Средне

Обновления Q-learning

Примените обновление Q-learning к потоку опыта и посмотрите, как награды распространяются назад к предыдущим состояниям.

Вы освоите Q-learningДисконтированные награды
Обучение с подкреплениемискусственный интеллектмашинное обучение
Пока нет решений
Средне

Альфа-бета отсечение

Оцените дерево игры минимаксом с альфа-бета отсечением и посчитайте, сколько листьев поиск действительно просмотрел.

Вы освоите Альфа-бета отсечениеПоиск в играх
RecursionTreesискусственный интеллект
Пока нет решений
Средне

Крестики-нолики с минимаксом

Выберите идеальный ход в крестиках-ноликах, перебрав всё дерево игры минимаксом.

Вы освоите МинимаксДеревья игры
Recursionискусственный интеллект
Пока нет решений
Средне

Поиск A* на взвешенной сетке

Найдите самый дешёвый путь через сетку стоимостей местности с помощью A* — алгоритма поиска, на котором строится навигация в играх и робототехнике.

Вы освоите Поиск A*Эвристики
GraphsGridsShortest-pathискусственный интеллект
Пока нет решений
Средне

Сэмплирование с температурой и top-k

Выберите следующий токен как языковая модель: оставьте k наибольших логитов, примените температуру и сделайте выборку.

Вы освоите Генерация текстаСэмплирование
искусственный интеллектмашинное обучение
Пока нет решений
Сложно

Многоголовое самовнимание

Спроецируйте вход в запросы, ключи и значения, выполните внимание в нескольких головах параллельно и объедините их.

Вы освоите Многоголовое вниманиеМатричные проекции
искусственный интеллектмашинное обучение
Пока нет решений

Выбрать тему

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

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