مراجعة - آلة حاسبة آمنة
جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 56 من 64.
التحدي
صعبأكمل evaluate(expr). التعبير هو <number> <operator> <number> مع وجود مسافات حول العامل، مثل 8 / 2. ارفع الأخطاء باستخدام stop() لكل مشكلة، مع التحقق منها بهذا الترتيب:
expected: number operator numberعندما لا تكون هناك ثلاثة أجزاء بالضبط'<part>' is not a numberلأول جزء من أجزاء العدد يتعذر تحويله، مثل'x' is not a numberunknown 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")
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهم8الفرز والتجميع
فرز المتجهاتالفرز حسب مفتاحالتجميع باستخدام split()ملخصات المجموعاتمراجعة - لوحة المتصدرين11معالجة الأخطاء
رفع الأخطاء باستخدام stop()التقاط الأخطاء باستخدام tryCatch()التحذيرات وfinallyالتحقق من صحة الإدخالمراجعة - آلة حاسبة آمنةتدرّب بنفسك: مترجم R عبر الإنترنت