Menu
CoddyTech

Ôn tập: Máy tính an toàn

Thuộc phần Logic và luồng điều khiển trong hành trình R của Coddy. Bài học 56 trên 64.

challenge icon

Thử thách

Khó

Hoàn thành evaluate(expr). Một biểu thức có dạng <number> <operator> <number>, với khoảng trắng quanh toán tử, chẳng hạn 8 / 2. Dùng stop() để báo lỗi cho từng vấn đề, theo thứ tự sau:

  • expected: number operator number khi không có đúng ba phần
  • '<part>' is not a number cho phần số đầu tiên không thể chuyển đổi, chẳng hạn 'x' is not a number
  • unknown operator <op> khi toán tử không phải là +, -, * hoặc /
  • division by zero

Nếu không có vấn đề nào, hãy trả về kết quả đã làm tròn đến bốn chữ số thập phân bằng round(value, 4).

Sau đó hoàn thành run_all(exprs): đánh giá từng biểu thức bên trong tryCatch() và trả về một dòng cho mỗi biểu thức, 8 / 2 = 4 hoặc 5 / 0 -> error: division by zero.

Code được cung cấp chuyển từng dòng đầu vào cho run_all() và in ra từng dòng được trả về.

Tự làm thử

evaluate <- function(expr) {
  # Viết code của bạn ở đây
  0
}

run_all <- function(exprs) {
  # Viết code của bạn ở đây
  character(0)
}

# Đoạn code đầu vào/đầu ra đã có sẵn: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")

Tất cả bài học trong Logic và luồng điều khiển

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