Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - آلة حاسبة آمنة

جزء من قسم المنطق وتدفق التنفيذ في رحلة 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 عبر الإنترنت