الوصية

الوصية

تمرين تعلّمي

مقدمة

فضاءات الأسماء

من الأساليب المهمة لتنظيم الكود استخدام فضاءات الأسماء. قد يحدث بين دالتين تعارض في التسمية، ويمكن حلّه بوضعهما في فضاءات أسماء مختلفة. ويمكن أن تتداخل فضاءات الأسماء، وهو ما قد يساعد في هيكلة قواعد الكود الكبيرة. ويتم الوصول إلى فضاءات الأسماء عبر عامل تحديد النطاق ::.

يوضح المثال التالي استخدام دالتين مختلفتين باسم foo. ويُستخدمان معًا بكتابة فضاء الأسماء الخاص بكل منهما قبل اسم الدالة.

namespace my_ns {
    int foo() {
        return 44;
    }
    namespace my_inner_ns {
        int baz() {
            return 90;
        }
    }
}
namespace my_other_ns {
    int foo() {
        return -2;
    }
}

int myresult{my_ns::foo() + my_other_ns::foo() * my_ns::my_inner_ns::baz()};

التعليمات

أنت تعمل في مكتب محاماة مرموق متخصص في التعامل مع طلبات الوصايا الفريدة.

في هذا التمرين، ستفتح خزنة غامضة. أنت المنفّذ للتركة، وستجمع الأكواد السرية التي حُفظت طويلًا لعائلات ثلاث للحصول على رقم حساب والكود المطابق.

ولمنع أي عائلة من فتح الخزنة بمفردها، لا يمكن فتحها إلا بجمع معرفتهم مع مُعدِّل سري تعرفه أنت من الوصية الأخيرة.

لديك ثلاث مهام، كلها تتعلق بمساعدة العائلات على فتح الخزنة.

1. خُذ مقعدك أمام العائلات وانشر أوراقك

عرّف مساحة أسماء تُسمّى estate_executor. ينبغي تعريف الكود الوارد في المهام التالية داخل جسم مساحة الأسماء estate_executor.

namespace some_name {
    // The space between the curly brackets
    // is called body of the  namespace.
}

2. اعثر على رقم الحساب السري

هذه هي لحظتك الكبرى. أنت وحدك تملك مفتاح المُعدِّل السري لكشف رقم الحساب السري.

عرّف الدالة assemble_account_number(int secret_modifier) التي تأخذ المُعدِّل السري كوسيط وتُرجع رقم الحساب المُجمَّع كـint.

للحصول على الرقم الصحيح، عليك جمع bank_number_part من كل عائلة من العائلات الثلاث.

3. الخطوة الأخيرة: أدخل الكود السري

تطلب منك تعليمات الوصية جمع كل الأجزاء الزرقاء ثم كل الأجزاء الحمراء. ويُحصل على الكود الناتج بضرب المجموعين.

عرّف الدالة assemble_code() التي تُرجع الكود الناتج عبر دمج أجزاء العائلات الثلاث في integer واحد. لا تأخذ الدالة أي وسائط، وتعتمد فقط على المعلومات الموجودة في مساحات الأسماء المعنية لدى العائلات.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
C++ Exercism

مستعد لبدء الوصية؟

سجّل في Exercism لتتعلّم وتتقن C++ عبر 19 مفهومًا100 تمرين، وإرشاد بشري حقيقي، وكل ذلك مجانًا.