diff --git a/solution.cpp b/solution.cpp new file mode 100644 index 0000000..c980537 --- /dev/null +++ b/solution.cpp @@ -0,0 +1,56 @@ +#include +#include +#include + +int main() { + // Ввод количества чисел и самих чисел + std::cout << "Введите количество чисел: "; + int n; + std::cin >> n; + + std::vector numbers(n); + std::cout << "Введите числа: "; + for(int i = 0; i < n; i++) { + std::cin >> numbers[i]; + } + + // Определение границ диапазона + int min_val = *std::min_element(numbers.begin(), numbers.end()); + int max_val = *std::max_element(numbers.begin(), numbers.end()); + + // Ввод количества интервалов (корзин) + std::cout << "Введите количество корзин: "; + int bins; + std::cin >> bins; + + // Создание массива для хранения количества чисел в каждой корзине + std::vector histogram(bins, 0); + + // Вычисление ширины интервала + double bin_width = static_cast(max_val - min_val) / bins; + + // Заполнение гистограммы + for (int i = 0; i < n; i++) { + int bin_index = (numbers[i] - min_val) / bin_width; + if(bin_index == bins) { + bin_index--; + } + histogram[bin_index]++; + } + + // Преобразование гистограммы в нарастающий итог + for (int i = 1; i < bins; i++) { + histogram[i] += histogram[i-1]; + } + + // Отображение гистограммы + for(int i = 0; i < bins; i++) { + std::cout << histogram[i] << "|"; + for(int j = 0; j < histogram[i]; j++) { + std::cout << "*"; + } + std::cout << std::endl; + } + + return 0; +}