Часть 1: Шаблоны функций
Задача 1: Напишите шаблон функции для вычисления суммы двух чисел.

#include <iostream>

// место для шаблонной функции

int main() {
    std::cout << "Sum (int): " << sum_(5, 10) << std::endl;
    std::cout << "Sum (double): " << sum_(3.14, 2.71) << std::endl;
    return 0;
}

Задача 2: Напишите шаблон функции для нахождения минимального значения.

#include <iostream>

// место для шаблонной функции

int main() {
    std::cout << "Min (int): " << min_(5, 10) << std::endl;
    std::cout << "Min (double): " << min_(3.14, 2.71) << std::endl;
    return 0;
}

Задача 3: Напишите шаблон функции для проверки равенства двух значений.

#include <iostream>

// место для шаблонной функции

int main() {
    std::cout << "Equal (int): " << isEqual_(5, 5) << std::endl;
    std::cout << "Equal (double): " << isEqual_(3.14, 2.71) << std::endl;
    return 0;
}

Задача 4: Напишите шаблон функции для вывода массива на экран.

#include <iostream>

// место для шаблонной функции

int main() {
    int intArr[] = {1, 2, 3, 4, 5};
    double doubleArr[] = {1.1, 2.2, 3.3};

    printArray_(intArr, 5);
    printArray_(doubleArr, 3);

    return 0;
}

Задача 5: Напишите шаблон функции для нахождения среднего значения элементов массива.

#include <iostream>

// место для шаблонной функции

int main() {
    int intArr[] = {1, 2, 3, 4, 5};
    double doubleArr[] = {1.1, 2.2, 3.3};

    std::cout << "Average (int): " << average_(intArr, 5) << std::endl;
    std::cout << "Average (double): " << average_(doubleArr, 3) << std::endl;

    return 0;
}

Задача 6: Напишите шаблон функции для поиска элемента в массиве.

#include <iostream>

// место для шаблонной функции

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    std::cout << "Find (int): " << findElement_(arr, 5, 3) << std::endl;
    std::cout << "Find (int): " << findElement_(arr, 5, 10) << std::endl;

    return 0;
}

Задача 7: Напишите шаблон функции для подсчета количества положительных чисел в массиве.

#include <iostream>

// место для шаблонной функции

int main() {
    int arr[] = {-1, 2, -3, 4, 5};
    std::cout << "Positive count: " << countPositive_(arr, 5) << std::endl;

    return 0;
}

/////////////////////////////////////////////////////////////////////////////////////////////////

Часть 2: Шаблоны классов
Задача 1: Напишите шаблон класса для хранения одного значения.

#include <iostream>

// место для шаблонного класса

int main() {
    Value_<int> intValue(10);
    std::cout << "Value: " << intValue.getValue_() << std::endl;

    Value_<double> doubleValue(3.14);
    std::cout << "Value: " << doubleValue.getValue_() << std::endl;

    return 0;
}

Задача 2: Напишите шаблон класса для хранения пары значений.

#include <iostream>

// место для шаблонного класса

int main() {
    Pair_<int, double> pair(10, 3.14);
    pair.print_();

    return 0;
}

Задача 3: Напишите шаблон класса для реализации двумерной точки.

#include <iostream>

// место для шаблонного класса

int main() {
    Point_<int> p1(10, 20);
    p1.print_();

    Point_<double> p2(3.14, 2.71);
    p2.print_();

    return 0;
}