[Buổi 30][Template & ngoại lệ][Lab] Bài 2: Safe Division


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Safe Division

Bối cảnh

Chia cho 0 là tình huống lỗi cần tách khỏi flow bình thường.

Viết hàm ném exception và bắt ở main.

Yêu cầu

  1. safeDivide(a,b) ném runtime_error nếu b==0.
  2. Main try/catch.
  3. Nếu hợp lệ in kết quả 2 decimals; nếu lỗi in ERROR.

Yêu cầu tổ chức code

Phải có throwtry/catch.

Online Judge chấm output. Với bài nhạy về cấu trúc OOP, giảng viên review thêm source code để xác nhận học viên luyện đúng kỹ năng.

Input

Hai số double a b.

Output

Một dòng.

Ràng buộc

|a|,|b|≤1e12.

Ví dụ 1

Input

10 2

Output

5.00

Giải thích

10 chia2 là hợp lệ nên hàm thực hiện phép chia và trả5.0; format hai chữ số thành 5.00. Không exception nào được ném, control flow đi theo nhánh bình thường.

Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.

Ví dụ 2

Input

1 0

Output

ERROR

Giải thích

Mẫu số0 làm precondition thất bại. Hàm ném exception, try/catch ở tầng gọi bắt lỗi và chuyển thành output ERROR thay vì chương trình crash hoặc thực hiện phép chia không hợp lệ.

Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.

Thông tin học tập

  • Module: M08
  • Buổi: B30
  • Loại bài: LAB
  • Độ khó: Medium
  • Concepts: exceptions, throw, try catch, runtime_error
  • Giới hạn kiến thức: B01-B30
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo