/
AirLexa
/
origin
Обзор
Документация
Войти
/
AirLexa
/
origin
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
Lesson_12/Task_2/extended_array.h
94 строки
2 KB
AirLexa
файлы проекта
14 дек 2025, 06:52
14 дек 2025, 06:52
a973a79
Код
Авторство
О чём код?
#pragma once #include <utility> #include <initializer_list> #include <vector> #include <algorithm> #include <iostream> template <typename T> class ExtArray { private: std::vector<T> extended_array; size_t _size; public: ExtArray(std::initializer_list<T> l) : extended_array(l) { _size = l.size(); } ExtArray(int size) : _size(size) { extended_array.resize(_size); } T& operator[](size_t index) { return extended_array[index]; } size_t size() { return _size; } double mean() { double sum = 0; for (size_t i = 0; i < _size; i++) { sum += extended_array[i]; } return sum / _size; } double mean(int start, int end) { if (start < 0 || end >= _size || end <= start) throw std::invalid_argument("������������ ���� �������� ���������"); double sum = 0; for (int i = start; i < end; i++) { sum += extended_array[i]; } return sum / (end - start); } double median() { std::vector<T> temp_array; std::copy(extended_array.begin(), extended_array.end(), back_inserter(temp_array)); std::sort(temp_array.begin(), temp_array.end()); if (_size % 2 == 1) { return temp_array[_size / 2]; } else { return static_cast<double>(temp_array[(_size / 2) - 1] + temp_array[_size / 2]) / 2; } } std::pair<T, int> mode() { T max = extended_array[0], cmax = 0, rmax = 0; for (int i = 0; i < _size; i++) { if (cmax > rmax) { rmax = cmax; max = extended_array[i - 1]; } cmax = 0; for (int j = i; j < _size; j++) { if (extended_array[j] == extended_array[i]) { cmax++; } } } return std::pair<T, int>(max, rmax); } };