From 1f63b9aea8ccb4354010165efbbb7bee03e226e4 Mon Sep 17 00:00:00 2001 From: YashechkinGA Date: Sun, 11 May 2025 16:35:57 +0300 Subject: [PATCH] laba01 --- main.cpp | 186 +++++++++++++++++++++++++++---------------------------- 1 file changed, 90 insertions(+), 96 deletions(-) diff --git a/main.cpp b/main.cpp index 811f52d..a9a1fcf 100644 --- a/main.cpp +++ b/main.cpp @@ -1,141 +1,135 @@ #include #include -#include using namespace std; +struct Input +{ + vector numbers; + size_t bin_count{}; +}; -int main() +Input input_data() { - int g = 0; size_t number_count; - cerr<< "Enter number count: "; - cin >> number_count;//number_count кол-во оценок на входе - vector numbers(number_count);//number_count=10 + cerr << "Enter number count: "; + cin >> number_count; + + Input in; + in.numbers.resize(number_count); - for (size_t i = 0; i < number_count; i++) + vector numbers(number_count); + for (int i = 0; i < number_count; i++) { - cin >> numbers[i]; // 4 4 3 5 3 4 5 5 4 4 + cerr << "Number[" << i << "]="; + cin >> in.numbers[i]; } - int bin_count;//bin_count кол-во корзин - cerr << "Enter bin_count: "; - cin >> bin_count; - vector bins(bin_count);//Необходимо для каждой корзины подсчитать количество попавших в нее чисел - double min = numbers[0]; - double max = numbers[0]; + + cerr << "Enter bin count: "; + cin >> in.bin_count; + return in; +} +void find_minmax(const vector &numbers, double &min, double &max) +{ + min = numbers[0]; + max = numbers[0]; for (double x : numbers) { - if (x < min) { + if (x < min) + { min = x; } - else if (x > max) { + else if (x > max) + { max = x; } } +} +vector make_histogram(const vector &numbers, size_t bin_count) +{ + double min, max; + find_minmax(numbers, min, max); double bin_size = (max - min) / bin_count; - bool found; - for (size_t i = 0; i < number_count; i++) + vector bins (bin_count); + + for (size_t i = 0; i < numbers.size(); i++) { - found = false; - for (size_t j = 0; (j & bins, size_t& bin_count, double bin_size) +{ + const size_t SCREEN_WIDTH = 80; + const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; + size_t max_bin_count = bins[0]; + for(size_t i = 0; i < bin_count; i++) { - cout< max_bin_count) { - cout<<"*"; + max_bin_count = bins[i]; } - cout<=100) - cout<<""<10) - cout<<" "<=100) - cout<<""<10) - cout<<" "<(bins[i])/max_count); - } - for(int j=0;j10) - cout<<" "<=100) - cout<<" "<<"|"; - if (bins[i]<100 and bins[i]>10) - cout<<" "<<"|"; - if (bins[i]<10) - cout<<" "<<"|"; - for(int j=0;j(bins[i]) / max_bin_count); + } + for(size_t j = 0; j < height; j ++) { cout<<"*"; } - cout<