diff --git a/cs-lab34.cbp b/cs-lab34.cbp
new file mode 100644
index 0000000..ffbcc0c
--- /dev/null
+++ b/cs-lab34.cbp
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cs-lab34.layout b/cs-lab34.layout
new file mode 100644
index 0000000..027b97c
--- /dev/null
+++ b/cs-lab34.layout
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/histogram.cpp b/histogram.cpp
new file mode 100644
index 0000000..7108c06
--- /dev/null
+++ b/histogram.cpp
@@ -0,0 +1,34 @@
+#include "histogram.h"
+#include
+
+using namespace std;
+
+void find_minmax(const vector& numbers, double& min, double& max) {
+ min = numbers[0];
+ max = numbers[0];
+ for (float x : numbers) {
+ if (x < min) min = x;
+ else if (x > max) max = x;
+ }
+}
+
+vector make_histogram(const vector& numbers, size_t bin_count) {
+ double min, max;
+ find_minmax(numbers, min, max);
+
+ float k = (max - min) / bin_count;
+ vector bins(bin_count, 0);
+
+ for (double number : numbers) {
+ bool flag = false;
+ for (size_t j = 0; (j < bin_count && !flag); j++) {
+ if (number >= (min + k * j) && number < (min + k * (j + 1))) {
+ bins[j]++;
+ flag = true;
+ }
+ }
+ if (!flag) bins[bin_count - 1]++;
+ }
+
+ return bins;
+}
diff --git a/histogram.h b/histogram.h
new file mode 100644
index 0000000..07979b8
--- /dev/null
+++ b/histogram.h
@@ -0,0 +1,4 @@
+#pragma once
+#include
+
+std::vector make_histogram(const std::vector& numbers, size_t bin_count);
diff --git a/main.cpp b/main.cpp
index 8c0d1ef..6f4e61b 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,6 +1,6 @@
#include
-#include
-
+#include "histogram.h"
+#include "text.h"
using namespace std;
@@ -33,65 +33,6 @@ Input input_data() {
return in;
}
-void find_minmax(const vector& numbers, double& min, double& max) {
- min = numbers[0];
- max = numbers[0];
- for (float x : numbers) {
- if (x < min) min = x;
- else if (x > max) max = x;
- }
-}
-
-vector make_histogram(const vector& numbers, size_t bin_count) {
- double min, max;
- find_minmax(numbers, min, max);
-
- float k = (max - min) / bin_count;
- vector bins(bin_count, 0);
-
- for (double number : numbers) {
- bool flag = false;
- for (size_t j = 0; (j < bin_count && !flag); j++) {
- if (number >= (min + k * j) && number < (min + k * (j + 1))) {
- bins[j]++;
- flag = true;
- }
- }
- if (!flag) bins[bin_count - 1]++;
- }
-
- return bins;
-}
-
-void show_histogram_text(const vector& bins) {
- const size_t SCREEN_WIDTH = 80;
- const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
-
- size_t max_count = 0;
- for (size_t count : bins) {
- if (count > max_count) {
- max_count = count;
- }
- }
-
- for (size_t bin : bins) {
- if (bin < 100) cout << " ";
- if (bin < 10) cout << " ";
- cout << bin << "|";
-
- size_t height = bin;
- if (max_count > MAX_ASTERISK) {
- if (max_count != bin)
- height = MAX_ASTERISK * (static_cast(bin) / max_count);
- else
- height = MAX_ASTERISK;
- }
-
- for (size_t i = 0; i < height; i++) cout << "*";
- cout << "\n";
- }
-}
-
int main() {
auto in = input_data();
auto bins = make_histogram(in.numbers, in.bin_count);
diff --git a/text.cpp b/text.cpp
new file mode 100644
index 0000000..f90cead
--- /dev/null
+++ b/text.cpp
@@ -0,0 +1,33 @@
+#include "text.h"
+#include
+
+using namespace std;
+
+void show_histogram_text(const vector& bins) {
+ const size_t SCREEN_WIDTH = 80;
+ const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
+
+ size_t max_count = 0;
+ for (size_t count : bins) {
+ if (count > max_count) {
+ max_count = count;
+ }
+ }
+
+ for (size_t bin : bins) {
+ if (bin < 100) cout << " ";
+ if (bin < 10) cout << " ";
+ cout << bin << "|";
+
+ size_t height = bin;
+ if (max_count > MAX_ASTERISK) {
+ if (max_count != bin)
+ height = MAX_ASTERISK * (static_cast(bin) / max_count);
+ else
+ height = MAX_ASTERISK;
+ }
+
+ for (size_t i = 0; i < height; i++) cout << "*";
+ cout << "\n";
+ }
+}
diff --git a/text.h b/text.h
new file mode 100644
index 0000000..0407a22
--- /dev/null
+++ b/text.h
@@ -0,0 +1,4 @@
+#pragma once
+#include
+
+void show_histogram_text(const std::vector& bins);
diff --git a/Текстовый документ — копия (2).txt b/Текстовый документ — копия (2).txt
new file mode 100644
index 0000000..e69de29
diff --git a/Текстовый документ — копия (3).txt b/Текстовый документ — копия (3).txt
new file mode 100644
index 0000000..e69de29
diff --git a/Текстовый документ — копия (4).txt b/Текстовый документ — копия (4).txt
new file mode 100644
index 0000000..e69de29
diff --git a/Текстовый документ — копия (5).txt b/Текстовый документ — копия (5).txt
new file mode 100644
index 0000000..e69de29