Menu
CoddyTech

Rangkuman: Kalkulator Aman

Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 56 dari 64.

challenge icon

Tantangan

Sulit

Lengkapi evaluate(expr). Ekspresi berbentuk <number> <operator> <number> dengan spasi di sekitar operator, seperti 8 / 2. Timbulkan error dengan stop() untuk setiap masalah, dengan urutan pemeriksaan berikut:

  • expected: number operator number jika jumlah bagiannya bukan tepat tiga
  • '<part>' is not a number untuk bagian angka pertama yang tidak dapat dikonversi, seperti 'x' is not a number
  • unknown operator <op> jika operatornya bukan +, -, *, atau /
  • division by zero

Jika tidak, kembalikan hasilnya, dibulatkan hingga empat angka desimal dengan round(value, 4).

Lalu lengkapi run_all(exprs): evaluasi setiap ekspresi di dalam tryCatch() dan kembalikan satu baris untuk setiap ekspresi, 8 / 2 = 4 atau 5 / 0 -> error: division by zero.

Kode yang disediakan meneruskan setiap baris input ke run_all() dan mencetak setiap baris yang dikembalikan.

Coba sendiri

evaluate <- function(expr) {
  # Tulis kodemu di sini
  0
}

run_all <- function(exprs) {
  # Tulis kodemu di sini
  character(0)
}

# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler R online