Menu
Coddy logo textTech

סיכום – מחשבון בטוח

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-R של Coddy. שיעור 56 מתוך 64.

challenge icon

אתגר

קשה

השלם את evaluate(expr). ביטוי הוא <number> <operator> <number> עם רווחים סביב האופרטור, כגון 8 / 2. העלה שגיאות באמצעות stop() עבור כל בעיה, לפי הסדר הבא:

  • expected: number operator number כאשר אין בדיוק שלושה חלקים
  • '<part>' is not a number עבור חלק המספר הראשון שלא ניתן להמיר, כגון 'x' is not a number
  • unknown operator <op> כאשר האופרטור אינו +, -, * או /
  • division by zero

אחרת החזר את התוצאה, מעוגלת לארבע ספרות אחרי הנקודה העשרונית באמצעות round(value, 4).

לאחר מכן השלם את run_all(exprs): הערך כל ביטוי בתוך tryCatch() והחזר שורה אחת לכל ביטוי, 8 / 2 = 4 או 5 / 0 -> error: division by zero.

הקוד שסופק מעביר כל שורת קלט אל run_all() ומדפיס כל שורה שהוחזרה.

נסו בעצמכם

evaluate <- function(expr) {
  # כתבו את הקוד שלכם כאן
  0
}

run_all <- function(exprs) {
  # כתבו את הקוד שלכם כאן
  character(0)
}

# קוד קלט/פלט שסופק: השאירו אותו כפי שהוא
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר R אונליין