diff --git a/main.cpp b/main.cpp index 09e6406..2389678 100644 --- a/main.cpp +++ b/main.cpp @@ -1,92 +1,32 @@ +#include "histogram.h" +#include "text.h" #include <iostream> #include <vector> using namespace std; -int main() -{ +struct Input { + vector<double> numbers; + size_t bin_count{}; +}; +Input +input_data(){ size_t number_count; - cerr <<"enter number count: "; + cerr << "Number_count: "; cin >> number_count; - - vector<double> numbers(number_count); - for( int i=0; i<number_count; i++){ - cerr<<"enter number "<< i+1<<": "; - cin>>numbers[i]; - } - size_t bin_count; - cerr <<"enter bin count : "; - cin >> bin_count; - vector<size_t> bins(bin_count); - double min=numbers[0]; - double max=numbers[0]; - for(double x : numbers){ - if(x<min){ - min=x; - } - if(x>max){ - max=x; - } - } - double bin_size=(max-min)/bin_count; - for(size_t i=0; i<number_count; i++){ - bool found = false; - for(size_t j=0;(j<bin_count-1)&& !found; j++){ - auto lo=min+j*bin_size; - auto hi=min+(j+1)*bin_size; - if((lo<=numbers[i])&&(numbers[i]<hi)){ - bins[j]++; - found=true; - } - }if(!found){ - bins[bin_count-1]++; - } - } - size_t Maxbins = 0; - for (size_t i = 0; i < bin_count; i++) - { - if (bins[i] > Maxbins) - { - Maxbins = bins[i]; - } - } - const size_t MAX_HEIGHT = 76; - if (Maxbins <= MAX_HEIGHT) - { - for (size_t i = 0; i < bin_count; i++) - { - if (bins[i] < 10) - { - cout << " "; - } - cout << " " << bins[i]<< "|"; - for (size_t j = 0; j < bins[i]; j++) - { - cout << "*"; - } - cout << endl; - } - } - else - { - for (size_t i = 0; i < bin_count; i++) - { - size_t height = static_cast<size_t>(MAX_HEIGHT * (static_cast<double>(bins[i]) / Maxbins)); - - if (bins[i] < 100) - { - cout << " "; - } - if (bins[i] < 10) - { - cout << " "; - } - cout << bins[i] << "|"; - for (size_t j = 0; j < height; j++) - { - cout << "*"; - } - cout << endl; - } + Input in; + in.numbers.resize(number_count); + for (size_t i = 0; i < number_count; i++) { + cin >> in.numbers[i]; } + cerr << "Enter bin_count: "; + cin >> in.bin_count; + return in; +} +int +main() { + auto in = input_data(); + auto bins = make_histogram(in.numbers, in.bin_count); + show_histogram(bins,in.bin_count); return 0; } +