commit df158444445f56a722cab28f62b32da2911524ab Author: VasilevIN Date: Mon Apr 22 14:46:43 2024 +0300 code:код лабы 1 diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..5727fac --- /dev/null +++ b/main.cpp @@ -0,0 +1,110 @@ +#include +#include +#include + +using namespace std; +int main() +{ + size_t SCREEN_WIDTH; + + + + size_t number_count; + cerr << "Enter number count: "; + cin >> number_count; + + + + while (true) { + cerr << "Screen width: "; + cin >> SCREEN_WIDTH; + if (SCREEN_WIDTH < 7) { + cerr << "<7"; cerr << endl; + continue; + } + if (SCREEN_WIDTH > 80) { + cerr << ">80"; cerr << endl; + continue; + } + + if (SCREEN_WIDTH < (number_count / 3)){ + cerr << " numbers(number_count); + cerr << "Enter numbers: "; + for (int i = 0; i < number_count; i++) + { + cin >> numbers[i]; + + } + double min = numbers[0]; + double max = numbers[0]; + for (double x : numbers) + { + if (x < min) + min = x; + else if (x > max) + max = x; + } + size_t bin_count; + cerr<<"Enter bin count:"; + cin >> bin_count; + vector bins(bin_count); + 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 low = min + j * bin_size; + auto high = min + (j + 1) * bin_size; + if ((low <= numbers[i]) && (numbers[i] < high)) + { + bins[j]++; + found = true; + } + } + if (!found) + { + bins[bin_count - 1]++; + } + } + + double mxbins = bins[0]; + + for (double x : bins) + { + if (x > mxbins) + mxbins = x; + } + double k; + + if (mxbins > MAX_ASTERISK) + k = MAX_ASTERISK / mxbins; + else + k = 1; + for (size_t i = 0; i < bin_count; i++) + { + if (bins[i] < 10) { + cout << " " << bins[i] << "|"; + } + else if (bins[i] < 100) { + cout << " " << bins[i] << "|"; + } + else if (bins[i] < 1000) { + cout << bins[i] << "|"; + + } + for (int j = 0; j < floor(bins[i] * k); j++) + { + cout << "*"; + } + + cout << endl; + } +}