Menu
CoddyTech

Ôn tập: phép chia an toàn

Thuộc phần Logic và luồng chương trình trong hành trình C++ của Coddy. Bài học 53 trên 56.

challenge icon

Thử thách

Dễ

Tạo một chương trình thực hiện phép chia an toàn bằng cách xử lý ngoại lệ toàn diện. Thử thách này sẽ kiểm tra khả năng kết hợp thiết kế hàm (function) với xử lý ngoại lệ (exception handling) để xử lý khéo léo lỗi chia cho 0.

Chương trình sẽ nhận các đầu vào sau:

  • Một giá trị double numerator biểu thị số cần chia
  • Một giá trị double denominator biểu thị số dùng để chia

Chương trình của bạn cần:

  1. Tạo một hàm có tên safeDivide nhận hai tham số kiểu double (numerator và denominator)
  2. Bên trong hàm, kiểm tra xem denominator có bằng 0 hay không
  3. Nếu denominator bằng 0, throw chuỗi "Division by zero error"
  4. Nếu denominator khác 0, tính kết quả phép chia và trả về kết quả dưới dạng double
  5. Trong hàm main, gọi safeDivide bên trong khối try với các giá trị đầu vào
  6. Dùng khối catch để xử lý ngoại lệ chuỗi được ném ra
  7. In thông báo phù hợp tùy theo phép chia thành công hay thất bại

Dùng chính xác định dạng đầu ra sau:

Khi phép chia thành công:

Result: [division_result]

Khi xảy ra lỗi chia cho 0:

Error: Division by zero error

Hãy nhớ rằng khi denominator bằng 0, hàm của bạn cần ngay lập tức throw một ngoại lệ trước khi thực hiện phép chia. Khối catch cần chỉ định kiểu const char* để xử lý chuỗi ký tự được ném ra. Khi một ngoại lệ được ném ra, chương trình sẽ chuyển thẳng từ câu lệnh throw đến khối catch tương ứng, ngăn việc chia cho 0 và cho phép chương trình xử lý lỗi một cách an toàn thay vì gặp sự cố.

Tự làm thử

#include <iostream>
using namespace std;

int main() {
    // Đọc đầu vào
    double numerator, denominator;
    cin >> numerator >> denominator;
    
    // TODO: Viết code tại đây
    // Tạo hàm (function) safeDivide phía trên main()
    // Dùng khối lệnh try-catch để xử lý ngoại lệ
    
    return 0;
}

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch C++ online