Trình biên dịch và gỡ lỗi C++ online

Viết, biên dịch, chạy và debug C++ online với breakpoint, xem biến và chạy từng bước bằng GDB trong Server mode.

Thư viện cài đặt sẵn
🚀 2,392,381 tổng số lượt thực thi (7 trong tháng này)
Kết quả

Luyện C++ với thử thách lập trình

Giải các bài tập thực tế ngay trên trình soạn thảo này: chạy kiểm thử mẫu, nộp bài và nhận đánh giá code từ AI.

Tất cả thử thách C++
Dễ

Trung Bình Của Ba Số

Tính trung bình cộng của ba số nguyên.

Bạn sẽ học Số họcPhép chia
BeginnerLearning-pathVariables
Dễ

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

Bạn sẽ học Số họcGiá trị trả về
BeginnerLearning-pathVariables
Trung bình

Một thế hệ của thuật toán di truyền

Lai tạo thế hệ chuỗi bit tiếp theo bằng chọn lọc kiểu giải đấu, lai ghép một điểm và đột biến.

Bạn sẽ học Thuật toán di truyềnTìm kiếm tiến hóa
OptimizationSimulationtrí tuệ nhân tạo
Chưa có lời giải
Dễ

Bài toán máy đánh bạc nhiều tay với epsilon-greedy

Cân bằng giữa khám phá và khai thác trên bài toán multi-armed bandit bằng cách chọn hành động epsilon-greedy.

Bạn sẽ học Khám phá và khai thácBandit
Học tăng cườngtrí tuệ nhân tạohọc máy
Chưa có lời giải
Dễ

Phân phối trạng thái của chuỗi Markov

Lan truyền một phân phối xác suất qua ma trận chuyển của chuỗi Markov trong một số bước.

Bạn sẽ học Chuỗi MarkovXác suất
Simulationtrí tuệ nhân tạomath
Chưa có lời giải
Trung bình

Lặp giá trị (Value Iteration)

Tính giá trị của từng trạng thái trong một quá trình quyết định Markov bằng cách lặp lại phép cập nhật tối ưu Bellman.

Bạn sẽ học Phương trình BellmanMDP
Học tăng cườngtrí tuệ nhân tạohọc máy
Chưa có lời giải
Trung bình

Cập nhật Q-learning

Áp dụng phép cập nhật Q-learning cho một chuỗi trải nghiệm và xem phần thưởng lan ngược về các trạng thái trước.

Bạn sẽ học Q-learningPhần thưởng chiết khấu
Học tăng cườngtrí tuệ nhân tạohọc máy
Chưa có lời giải
Trung bình

Cắt tỉa Alpha-Beta

Đánh giá cây trò chơi bằng minimax có cắt tỉa alpha-beta và đếm xem việc tìm kiếm thực sự xét bao nhiêu lá.

Bạn sẽ học Cắt tỉa alpha-betaTìm kiếm trò chơi
RecursionTreestrí tuệ nhân tạo
Chưa có lời giải
Trung bình

Cờ ca-rô 3×3 với Minimax

Chọn nước đi hoàn hảo trong cờ ca-rô 3×3 bằng cách duyệt toàn bộ cây trò chơi với minimax.

Bạn sẽ học MinimaxCây trò chơi
Recursiontrí tuệ nhân tạo
Chưa có lời giải
Trung bình

Tìm kiếm A* trên lưới có trọng số

Tìm đường đi rẻ nhất qua một lưới chi phí địa hình bằng A*, thuật toán tìm đường phía sau game và robot.

Bạn sẽ học Tìm kiếm A*Heuristic
GraphsGridsShortest-pathtrí tuệ nhân tạo
Chưa có lời giải
Khó

Self-attention nhiều đầu (multi-head)

Chiếu đầu vào thành query, key và value, chạy attention song song ở nhiều đầu, rồi kết hợp lại.

Bạn sẽ học Multi-head attentionPhép chiếu ma trận
trí tuệ nhân tạohọc máy
Chưa có lời giải
Trung bình

Chuẩn hóa theo lớp (layer normalization)

Chuẩn hóa mỗi hàng về trung bình 0 và phương sai 1, rồi co giãn và dịch chuyển, như mọi khối Transformer.

Bạn sẽ học Layer normTransformer
Mạng nơ-rontrí tuệ nhân tạohọc máy
Chưa có lời giải

Khám phá theo chủ đề

Học C và C++ song song qua code thực tế, output, mô hình bộ nhớ, cấu trúc dữ liệu, thuật toán và các tính năng C++ hiện đại.

Ví dụ C/C++ →

💻 Giới thiệu về Trình chạy C++ trực tuyến này

Trình chạy C++ CodeUtility cho phép bạn viết và chạy mã C++ trực tiếp trên trình duyệt - không cần cài đặt hay thiết lập trình biên dịch. Công cụ này sử dụng một sandbox an toàn hỗ trợ các tiêu chuẩn C++ từ C++11, C++14, C++17, cho đến phiên bản mới nhất.

Công cụ này dùng trình biên dịch C++ thực chạy trên đám mây để biên dịch và thực thi mã của bạn, đảm bảo hành vi chính xác và nhất quán giữa các phiên bản. Bạn có thể thoải mái thử nghiệm các khái niệm cốt lõi của C++ như biến, hàm, vòng lặp, cấu trúc điều kiện, và lập trình hướng đối tượng.

Dù bạn đang chuẩn bị phỏng vấn, học các tính năng C++ hiện đại, hay kiểm chứng logic thuật toán, Trình chạy C++ của CodeUtility mang đến môi trường đơn giản nhưng mạnh mẽ để chạy mã ngay lập tức trên mọi thiết bị.

Không chỉ là công cụ chạy mã

Sử dụng trình soạn thảo nhiều tệp, terminal thực thi biệt lập, thư viện riêng theo môi trường chạy, không gian làm việc lâu dài, tính năng chia sẻ và cộng tác theo thời gian thực ngay trong cùng một trình thực thi.

Cách sử dụng trình thực thi này?

Chọn môi trường chạy, mở hoặc tạo tệp, viết mã rồi nhấn Chạy. Kết quả xuất hiện trong terminal; người dùng đã đăng nhập có thể lưu tệp trong không gian làm việc, cài thư viện và cộng tác qua liên kết chia sẻ.

  1. Chọn phiên bản rồi chỉnh sửa tệp hiện tại hoặc mở một tệp khác trong không gian làm việc.
  2. Chạy mã, nhập dữ liệu trong terminal khi được yêu cầu và xem lại lịch sử chạy đã lưu.
  3. Sử dụng thư viện, công cụ không gian làm việc, chia sẻ và trò chuyện khi tác vụ cần nhiều hơn một đoạn mã.

💡 Cơ bản về C++ & các ví dụ bạn có thể thử ở trên

1. Khai báo biến và hằng số

C++ yêu cầu bạn khai báo kiểu của từng biến. Dùng const để định nghĩa giá trị chỉ đọc, không thể thay đổi sau khi khởi tạo.

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

// Hằng số
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";

// Cố gắng sửa một const sẽ gây lỗi khi biên dịch
// MAX_USERS = 200; // ❌ lỗi

2. Cấu trúc điều kiện (if / switch)

Dùng if, else if, else để rẽ nhánh. Dùng switch cho nhiều giá trị.

int x = 2;
if (x == 1) {
    std::cout << "Một\n";
} else if (x == 2) {
    std::cout << "Hai\n";
} else {
    std::cout << "Khác\n";
}

// Switch-case
switch (x) {
    case 1:
        std::cout << "Một\n";
        break;
    case 2:
        std::cout << "Hai\n";
        break;
    default:
        std::cout << "Khác\n";
}

3. Vòng lặp

Dùng for, while, và do-while để lặp các khối mã.

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

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

4. Mảng

Mảng lưu nhiều phần tử cùng kiểu.

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

5. Thao tác Mảng/Vector

Dùng std::vector cho mảng động.

#include <vector>

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

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

6. Nhập/Xuất console

Dùng std::cin để nhập và std::cout để xuất.

std::string name;
std::cout << "Nhập tên của bạn: ";
std::cin >> name;
std::cout << "Xin chào, " << name << "\n";

7. Hàm

Hàm nhóm logic có thể tái sử dụng. Dùng tham số và kiểu trả về.

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

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

8. Map

std::map lưu các cặp khóa-giá trị giống như từ điển.

#include <map>

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

9. Xử lý ngoại lệ

Dùng try và catch để xử lý lỗi lúc chạy.

try {
    throw std::runtime_error("Đã xảy ra lỗi");
} catch (const std::exception& e) {
    std::cout << e.what();
}

10. I/O Tệp

Dùng fstream để đọc và ghi tệp.

#include <fstream>

std::ofstream out("file.txt");
out << "Xin chào tệp";
out.close();

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

11. Xử lý chuỗi

Chuỗi trong C++ hỗ trợ các phương thức như length(), substr(), và find().

std::string text = "Xin chào Thế giới";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("Thế giới");

12. Lớp & Đối tượng

C++ hỗ trợ lập trình hướng đối tượng thông qua các lớp.

class Person {
  public:
    std::string name;
    Person(std::string n) : name(n) {}
    void greet() { std::cout << "Xin chào, tôi là " << name; }
};

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

13. Con trỏ

Con trỏ lưu địa chỉ bộ nhớ của một biến khác. Dùng & để lấy địa chỉ, và * để giải tham chiếu (truy cập giá trị tại địa chỉ đó).

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

std::cout << "Giá trị của x: " << x << "\n";
std::cout << "Địa chỉ của x: " << ptr << "\n";
std::cout << "Giá trị từ con trỏ: " << *ptr << "\n";

// Sửa x thông qua con trỏ
*ptr = 20;
std::cout << "x đã được cập nhật: " << x << "\n";

🐞 Cách gỡ lỗi code %{language} online

Dùng trình debug %{language} online để tìm lỗi runtime và logic mà không cần cài compiler hoặc IDE. Server mode biên dịch kèm debug symbols và chạy chương trình bằng GDB.

  1. Đặt một hoặc nhiều breakpoint cạnh số dòng.
  2. Chọn Debug để biên dịch và dừng tại breakpoint đầu tiên phù hợp.
  3. Kiểm tra dòng hiện tại, call stack và các biến.
  4. Dùng Continue, Step Over, Step Into hoặc Step Out.
  5. Chọn Stop để kết thúc phiên debug.

Bắt đầu với ví dụ nhỏ có thể tái hiện lỗi và đặt breakpoint ngay trước khi giá trị hoặc luồng điều khiển trở nên bất thường.