Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
1.93 Кб
Скачать
#include <iostream>
#include <cstring>
#include <locale>
using namespace std;

// Основная шаблонная функция для массивов
template<typename T>
T max(T arr[], int size) {
    T max_val = arr[0];
    for (int i = 1; i < size; i++) {
        if (arr[i] > max_val) {
            max_val = arr[i];
        }
    }
    return max_val;
}

// Специализация для массивов строк (const char*)
template<>
const char* max<const char*>(const char* arr[], int size) {
    const char* max_str = arr[0];
    for (int i = 1; i < size; i++) {
        if (strlen(arr[i]) > strlen(max_str)) {
            max_str = arr[i];
        }
    }
    return max_str;
}

// Отдельная функция для сравнения двух строк
const char* max_string(const char* a, const char* b) {
    return strlen(a) > strlen(b) ? a : b;
}

int main() {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    // Тестирование с целыми числами
    int int_arr[] = {1, 5, 3, 9, 2};
    cout << "Максимальное int: " << max(int_arr, 5) << endl;
    
    // Тестирование с double
    double double_arr[] = {1.1, 5.5, 3.3, 9.9, 2.2};
    cout << "Максимальное double: " << max(double_arr, 5) << endl;
    
    // Тестирование с long
    long long_arr[] = {100L, 500L, 300L, 900L, 200L};
    cout << "Максимальное long: " << max(long_arr, 5) << endl;
    
    // Тестирование со строками
    const char* str_arr[] = {"apple", "banana", "cherry", "date"};
    cout << "Самая длинная строка: " << max(str_arr, 4) << endl;
    
    // Тестирование сравнения двух строк
    cout << "Из 'hello' и 'world' длиннее: " << max_string("hello", "world") << endl;
    
    return 0;
}
Соседние файлы в папке Лаба8