Треки
/
C++
C++
/
Вправи
/
Остання воля
Остання воля

Остання воля

Навчальна вправа

Вступ

Простори імен

Важливий метод організації коду - використання просторів імен. Дві функції можуть мати конфлікт імен, який можна розвʼязати, розмістивши їх у різних просторах імен. Простори імен можна вкладати один в одного, що допомагає структурувати великі кодові бази. Доступ до просторів імен здійснюється через оператор дозволу області видимості ::.

У прикладі нижче показано використання двох різних функцій 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 вправ та справжнє наставництво від людей, і все це безкоштовно.