Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## **Часть 2: Пространство имён**
- ---
- ### **Задача 1: Организация функций ввода-вывода**
- **Описание:** Создайте пространство имён `IO` с функциями `readInt()` и `writeInt()`, которые обертывают `std::cin` и `std::cout`.
- **Решение:**
- #include <iostream>
- int readInt() {
- int val;
- std::cin >> val;
- return val;
- }
- void writeInt(int val) {
- std::cout << val << std::endl;
- }
- int main() {
- std::cout << "Введите число: ";
- int num = IO::readInt();
- std::cout << "Вы ввели: ";
- IO::writeInt(num);
- return 0;
- }
- ---
- ### **Задача 2: Пространство имён для констант физических величин**
- **Описание:** Создайте пространство имён `Physics` с константами, такими как `SPEED_OF_LIGHT`, `GRAVITY`.
- **Решение:**
- #include <iostream>
- const double SPEED_OF_LIGHT = 299792458.0; // м/с
- const double GRAVITY = 9.81; // м/с^2
- int main() {
- std::cout << "Скорость света: " << Physics::SPEED_OF_LIGHT << " м/с" << std::endl;
- std::cout << "Ускорение свободного падения: " << Physics::GRAVITY << " м/с^2" << std::endl;
- return 0;
- }
- ---
- ### **Задача 3: Пространство имён для математических функций**
- **Описание:** Создайте пространство имён `MathUtils` с функцией `power`, которая возводит число в степень.
- **Решение:**
- #include <iostream>
- double power(double base, int exp) {
- double result = 1.0;
- for (int i = 0; i < exp; ++i) {
- result *= base;
- }
- return result;
- }
- int main() {
- double base = 2.0;
- int exp = 3;
- std::cout << base << "^" << exp << " = " << MathUtils::power(base, exp) << std::endl;
- return 0;
- }
- ---
- ### **Задача 4: Использование `using` для сокращения кода**
- **Описание:** В `main` используйте `using` для импорта конкретной функции из пространства `MathUtils` и вызовите её.
- **Решение:**
- #include <iostream>
- double power(double base, int exp) {
- double result = 1.0;
- for (int i = 0; i < exp; ++i) {
- result *= base;
- }
- return result;
- }
- int main() {
- using MathUtils::power;
- std::cout << "2^4 = " << power(2, 4) << std::endl;
- return 0;
- }
- ---
- ### **Задача 5: Пространство имён для работы с геометрией**
- **Описание:** Создайте пространство имён `Shapes` с классом `Rectangle`, который имеет метод `area`.
- **Решение:**
- #include <iostream>
- class Rectangle {
- double width, height;
- public:
- Rectangle(double w, double h) : width(w), height(h) {}
- double area() const {
- return width * height;
- }
- };
- int main() {
- Shapes::Rectangle rect(5.0, 3.0);
- std::cout << "Площадь прямоугольника: " << rect.area() << std::endl;
- return 0;
- }
- ---
- ### **Задача 6: Вложенные пространства имён для библиотеки**
- **Описание:** Создайте вложенное пространство имён `Graphics::2D` с функцией `drawLine`.
- **Решение:**
- #include <iostream>
- void drawLine(int x1, int y1, int x2, int y2) {
- std::cout << "Рисуем линию от (" << x1 << "," << y1 << ") до (" << x2 << "," << y2 << ")" << std::endl;
- }
- int main() {
- Graphics::_2D::drawLine(0, 0, 10, 10);
- return 0;
- }
- ---
- ### **Задача 7: Повторное объявление пространства имён с классом и функцией**
- **Описание:** Объявите пространство `Game` дважды: в первом — класс `Player`, во втором — функцию `resetGame`.
- **Решение:**
- #include <iostream>
- class Player {
- public:
- std::string name;
- Player(const std::string& n) : name(n) {}
- };
- void resetGame() {
- std::cout << "Игра сброшена." << std::endl;
- }
- int main() {
- Game::Player p("Alice");
- std::cout << "Игрок: " << p.name << std::endl;
- Game::resetGame();
- return 0;
- }
- ---
- ### **Задача 8: Пространство имён для настроек приложения**
- **Описание:** Создайте пространство имён `AppConfig` с переменными `windowWidth`, `windowHeight`.
- **Решение:**
- #include <iostream>
- int windowWidth = 800;
- int windowHeight = 600;
- int main() {
- std::cout << "Размер окна: " << AppConfig::windowWidth << "x" << AppConfig::windowHeight << std::endl;
- return 0;
- }
- ---
- ### **Задача 9: Пространство имён для вспомогательных утилит**
- **Описание:** Создайте пространство `Utils` с функцией `trim`, которая удаляет пробелы в начале и в конце строки.
- **Решение:**
- #include <iostream>
- #include <string>
- std::string trim(const std::string& str) {
- size_t start = str.find_first_not_of(" \t\n\r");
- if (start == std::string::npos) return "";
- size_t end = str.find_last_not_of(" \t\n\r");
- return str.substr(start, end - start + 1);
- }
- int main() {
- std::string input = " hello world ";
- std::cout << "До: [" << input << "]" << std::endl;
- std::cout << "После: [" << Utils::trim(input) << "]" << std::endl;
- return 0;
- }
- ---
- ### **Задача 10: Анонимное пространство имён для локальной утилиты**
- **Описание:** Создайте анонимное пространство имён с функцией `isEven`, которая используется только внутри текущего файла.
- **Решение:**
- #include <iostream>
- bool isEven(int n) {
- return n % 2 == 0;
- }
- int main() {
- int num = 42;
- if (isEven(num)) {
- std::cout << num << " - чётное." << std::endl;
- } else {
- std::cout << num << " - нечётное." << std::endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment