From d3a3946351ee1f1282757a4853996e590cc77107 Mon Sep 17 00:00:00 2001 From: ZelenkinaKM Date: Sat, 18 May 2024 16:20:49 +0300 Subject: [PATCH] =?UTF-8?q?code:=20=D0=BA=D0=BE=D0=BD=D0=B5=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 81 +++++--------------------------------------------------- test.cbp | 7 +++++ 2 files changed, 14 insertions(+), 74 deletions(-) diff --git a/main.cpp b/main.cpp index 24c8eab..5917340 100644 --- a/main.cpp +++ b/main.cpp @@ -1,6 +1,8 @@ #include #include - +#include "histogram.h" +#include "text.h" +#include "svg.h" using namespace std; @@ -17,7 +19,6 @@ input_data() { cerr << "Enter number count: "; cin >> in.number_count; - vector numbers(in.number_count); in.numbers.resize(in.number_count); for (size_t i = 0; i < in.number_count; i++) { @@ -33,82 +34,14 @@ input_data() { 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; - } - else if (x > max){ - max = x; - } - } -} - -vector make_histogram(const vector& numbers, size_t & bin_count, size_t & number_count, size_t & max_count) { - double min, max; - find_minmax(numbers, min, max); - double bin_size = (max - min) / bin_count; - vector bins(bin_count); - max_count = bins[0]; - 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 (bins[j] > max_count){ - max_count = bins[j]; - } - } - if (!found){ - bins[bin_count - 1]++; - } - if (bins[bin_count - 1] > max_count){ - max_count = bins[bin_count - 1]; - } - } - return bins; -} - -void show_histogram_text(vector& bins, size_t & max_count,size_t & bin_count){ -const size_t SCREEN_WIDTH = 80; -const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; -if (max_count > MAX_ASTERISK){ - vector hights(bin_count); - for (size_t i = 0; i < bin_count; i++){ - size_t height = MAX_ASTERISK * (static_cast(bins[i]) / max_count); - hights[i] = height; - } - for (size_t i = 0; i < bin_count; i++){ - printf("%3d|", bins[i]); - for (size_t j = 0; j < hights[i]; j++){ - cout<<"*"; - } - cout << endl; - } - } - else{ - for (size_t i = 0; i < bin_count; i++) - { - printf("%3d|", bins[i]); - for (size_t j = 0; j < bins[i]; j++){ - cout<<"*"; - } - cout << endl; - } - } -} int main() { auto in = input_data(); auto bins = make_histogram(in.numbers, in.bin_count, in.number_count, in.max_count); - show_histogram_text(bins, in.max_count, in.bin_count); + vector test; + show_histogram_svg(bins, in.max_count, in.bin_count, test); + + return 0; } diff --git a/test.cbp b/test.cbp index 9bcbc84..acba6a9 100644 --- a/test.cbp +++ b/test.cbp @@ -32,7 +32,14 @@ + + + + + + +