diff --git a/main.cpp b/main.cpp index 70cd416..45c503a 100644 --- a/main.cpp +++ b/main.cpp @@ -1,15 +1,21 @@ #include #include + +#include "histogram.h" +#include "text.h" +#include "svg.h" using namespace std; + struct Input { - vector numbers; + std:: vector numbers; size_t bin_count; }; Input input_data() { + size_t number_count; cerr << "Enter number count: "; cin >> number_count; @@ -26,78 +32,7 @@ cerr << "Enter bin count: "; cin >> in.bin_count; return in; } -void find_minmax(vector numbers, double& min, double& max) { - min = numbers[0]; - max = numbers[0]; - for (int i = 0; i < numbers.size(); i++){ - if (numbers[i] < min) - min = numbers[i]; - if (numbers[i] > max) - max = numbers[i]; - - -} -} - -auto make_histogram( vector numbers, size_t bin_count){ -vector bins(bin_count); - -double min,max; - -find_minmax( numbers, min, max); - -double bin_size = (max - min) / bin_count; - -for (size_t i = 0; i < numbers.size(); 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]++; - } -} - -/*for (size_t i = 0; i < numbers.size(); i++){ - cout << " "<< bins[ i]; -} -*/ -return bins; -} - -void show_histogram_text (auto bins , size_t bin_count, vector numbers ){ -int i; - -double min,max; -find_minmax( numbers, min, max); - -int r[20]; -r[0]=0; -for (i = 0; i < bin_count; i++){ - r[i+1]=r[i]+ bins[i]; -} -int maxbin=0; -for (size_t i = 0; i < bin_count; i++){ - if ( r[i+1] > maxbin) maxbin = r[i+1] ; -} -float k=1; -//k= 76.00 / maxbin; -for (size_t i = 0; i < bin_count; i++){ - if (r[i+1]<10) cout << " "; - if (r[i+1]<100) cout << " "; - cout << r[i+1] << "|"; - for (size_t j = 0; j bins(in.bin_count); -double bin_size = (max - min) / in.bin_count; - -for (size_t i = 0; i < in.numbers.size(); i++){ - bool found = false; - for (size_t j = 0; (j < in.bin_count - 1) && !found; j++){ - auto lo = min + j * bin_size; - auto hi = min + (j + 1) * bin_size; - if ((lo <= in.numbers[i]) && (in.numbers[i] < hi)){ - bins[j]++; - found = true; - } - } - if (!found){ - bins[ in.bin_count - 1]++; - } -} -int r[20]; -r[0]=0; -for (size_t i = 0; i < in.bin_count; i++){ - r[i+1]=r[i]+bins[i]; -} -int maxbin=0; -for (size_t i = 0; i < in.bin_count; i++){ - if ( r[i+1] > maxbin) maxbin = r[i+1]; -} -float k=1; -//k= 76.00 / maxbin; -for (size_t i = 0; i < in.bin_count; i++){ - if (r[i+1]<10) cout << " "; - if (r[i+1]<100) cout << " "; - cout << r[i+1] << "|"; - for (size_t j = 0; j