diff --git a/maincpp.cpp b/maincpp.cpp index ed0f65f..4a6793c 100644 --- a/maincpp.cpp +++ b/maincpp.cpp @@ -1,140 +1,5 @@ -#include -#include -using namespace std; -struct Input { - vector vec; - size_t korz{}; -}; -Input input_data() -{ - Input in; - size_t n, korz; - - cerr << "Number of elem "; - cin >> n; - in.vec.resize(n); - for (size_t i = 0; i < n; i++) - cin >> in.vec[i]; - cerr << "Enter bin count: "; - cin >> in.korz; - return in; -} -void find_minmax(vector vec, double& min, double& max) { - min = vec[0]; - max = vec[0]; - for (double x : vec) { - if (x < min) { - min = x; - } - else if(x > max) - { - max = x; - } - } -} -vector make_histogram(size_t number, vector vec) { - vector bins(number); - double mn, mx; - find_minmax(vec, mn, mx); - float bin_size = (mx - mn) / number; - for (size_t i = 0; i < vec.size(); i++) { - bool fl = false; - for (size_t j = 0; (j < number - 1) && !fl; j++) { - auto lo = mn + j * bin_size; - auto hi = mn + (j + 1) * bin_size; - if ((lo <= vec[i]) && (vec[i] < hi)) { - bins[j]++; - fl = true; - } - } - if (!fl) { - bins[number - 1]++; - - } - } - return bins; -} -void show_histogram(vector bins) { - bool gigant = false; - auto spaces = 0; - size_t mx_count = 0; - for (auto x : bins) { - if (x > 76) { - gigant = true; - } - if (x > mx_count) { - mx_count = x; - } - auto len = 0; - while (x > 0) { - x /= 10; - len++; - } - if (len > spaces) { - spaces = len; - } - - } - if (spaces == 1) { - for (size_t i = 0; i < bins.size(); i++) { - cout << " " << bins[i] << "|"; - if (gigant) { - if (bins[i] == mx_count) { - for (size_t j = 0; j < 76; j++) { - cout << "*"; - } - } - else - { - for (size_t j = 0; j < 76 * static_cast(bins[i]) / mx_count; j++) { - cout << "*"; - } - } - } - else - { - for (size_t j = 0; j < bins[i]; j++) { - cout << "*"; - } - cout << endl; - } - } - } - else - { - for (size_t i = 0; i < bins.size(); i++) { - int len = 1; - int k = bins[i]; - for (; k /= 10; ++len); - while (len < spaces) { - cout << " "; - len++; - } - cout << bins[i]; - cout << "|"; - if (gigant) { - if (bins[i] == mx_count) { - for (size_t j = 0; j < 76; j++) { - cout << "*"; - } - } - else - { - for (size_t j = 0; j < (76 * static_cast(bins[i]) / mx_count - 1); j++) { - cout << "*"; - } - } - } - else - { - for (size_t j = 0; j < bins[i]; j++) { - cout << "*"; - } - } - cout << endl; - } - } -} +#include "Header.h" +#include "text.h" int main() { auto in = input_data(); auto bins = make_histogram(in.korz, in.vec);