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

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

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

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

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

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

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

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

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

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

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

Соединение клиентов и заказов

Соедините клиентов с их заказами, как в LINQ Join, и выведите общую сумму покупок каждого.

Вы освоите LINQ JoinГруппировка
ArraysSorting
Пока нет решений
Легко

Список дел

Ведите список задач: добавляйте, отмечайте выполненными, удаляйте и сообщайте, что осталось.

Вы освоите Типизированные коллекцииЗаписи (record)
BeginnerSimulationStrings
Пока нет решений
Легко

Операции со связным списком

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

Вы освоите Связные спискиМоделирование
Data-structuresSimulation
Пока нет решений
Легко

Сумма плоского объекта JSON

Разберите плоский JSON-объект, чьи значения — целые числа, и сложите эти значения.

Вы освоите Разбор JSONРазбиение строк
ParsingStrings
Пока нет решений
Легко

Общее время с WhenAll

Определите, сколько времени занимает программа, когда каждая группа задач выполняется вместе с Task.WhenAll, а группы идут одна за другой.

Вы освоите Async/awaitTask.WhenAll
ArraysBeginner
Пока нет решений
Средне

Порядок завершения параллельных задач

Запустите задачи одновременно, не более чем по k за раз, и сообщите порядок, в котором они завершаются.

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

Уникальные записи

Удалите дубликаты записей, равные по значению, сохранив первую из каждой в порядке появления.

Вы освоите Записи (record)Равенство по значению
BeginnerStrings
Пока нет решений
Легко

Сортировка по выбранному ключу

Отсортируйте людей по имени или возрасту компаратором, выбранным во время выполнения, одинаково разрешая равенства.

Вы освоите КомпараторыСортировка
ArraysSorting
Пока нет решений
Средне

Недельная зарплата

Посчитайте зарплату за неделю для сотрудников на окладе, почасовой оплате и комиссии — у каждого своё правило.

Вы освоите ПолиморфизмРасчёт сверхурочных
ParsingSimulationmath
Пока нет решений
Легко

Стоимость уведомлений

Отправьте сообщения через email, SMS и push, где каждый канал сам считает стоимость.

Вы освоите ПолиморфизмЦелочисленное деление
SimulationStrings
Пока нет решений

💻 Об онлайн-компиляторе 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, чтобы завершить сеанс.

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