From 51dd8806bdacca44072ca1d5be0b8600158db185 Mon Sep 17 00:00:00 2001 From: "Alice (SemenovIA)" Date: Mon, 21 Oct 2024 03:48:36 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=BC=D0=B0=20=D1=80=D0=B0=D0=B7=D0=B1=D0=B8=D1=82=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?= =?UTF-8?q?=D1=80=D1=8B=20=D0=B8=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project/.gitignore | 5 ++ project/main.cpp | 136 +++++++++++++++++++++++++++++++++++---------- 2 files changed, 111 insertions(+), 30 deletions(-) create mode 100644 project/.gitignore diff --git a/project/.gitignore b/project/.gitignore new file mode 100644 index 0000000..d3a7f83 --- /dev/null +++ b/project/.gitignore @@ -0,0 +1,5 @@ +/bin +/obj +lab34.depend +lab34.layout +main.exe diff --git a/project/main.cpp b/project/main.cpp index 4ebdac4..94c0f67 100644 --- a/project/main.cpp +++ b/project/main.cpp @@ -2,21 +2,36 @@ #include using namespace std; -int main() -{ - const size_t SCREEN_WIDTH = 80; - const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; +struct Input { + vector numbers; + size_t bin_count{}; +}; + +Input +input_data() { + Input in; + + size_t number_count; + cerr << "Enter quantity of numbers: "; + cin >> number_count; - size_t number_count, bin_count, i, bin; - cerr << "Enter number count: " << endl; - cin>>number_count; vector numbers(number_count); - cerr<< "Enter numbers: "<>numbers[i]; + in.numbers.resize(number_count); + cerr << "Enter numbers: "; + for (size_t i = 0; i < number_count; i++) { + cin >> in.numbers[i]; } - 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) { min = x; @@ -25,13 +40,18 @@ int main() max = x; } } +} + +vector +make_histogram(const vector numbers, size_t bin_count) { + double min; + double max; + + find_minmax(numbers, min, max); - cerr<< "Enter bin count: "<>bin_count; vector bins(bin_count); double bin_size = (max - min) / bin_count; - - for (size_t i = 0; i < number_count; i++) { + 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; @@ -43,22 +63,78 @@ int main() } if (!found) { bins[bin_count - 1]++; - } + } } - size_t height = 0; - size_t max_count = 0; - for (i = 0; i < bin_count; i++){ - if (bins[i] > max_count) max_count = bins[i]; + return bins; +} + +void show_histogram_text(const vector bins, size_t bin_count) { + const size_t SCREEN_WIDTH = 80; + const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; + + int max_count = 0; + for (int i =0; imax_count){ + max_count=bins[i]; + } + } + if (max_count>MAX_ASTERISK){ + for (int i=0; i(bins[i]) / max_count); + if (bins[i]<10){ + cout<<" "<(bin) / max_count); - if(bin<100) cout<<" "; - if(bin<10) cout<<" "; - cout<