diff --git a/Lab01.cbp b/Lab01.cbp
index 88781ad..d25c7da 100644
--- a/Lab01.cbp
+++ b/Lab01.cbp
@@ -32,6 +32,7 @@
+
diff --git a/histogram.cpp b/histogram.cpp
new file mode 100644
index 0000000..ebae521
--- /dev/null
+++ b/histogram.cpp
@@ -0,0 +1,45 @@
+#include "histogram.h"
+#include
+static void find_minmax(const std::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;
+ }
+ }
+}
+std::vector make_histogram(const std::vector &numbers, std::size_t bin_count)
+{
+ double min, max;
+ find_minmax(numbers, min, max);
+ double bin_size = (max - min) / bin_count;
+ std::vector bins (bin_count);
+
+ for (std::size_t i = 0; i < numbers.size(); i++)
+ {
+ bool found = false;
+ for (std::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 (!found)
+ {
+ bins[bin_count - 1]++;
+ }
+ }
+ return bins;
+}
diff --git a/histogram.h b/histogram.h
new file mode 100644
index 0000000..d6b10a3
--- /dev/null
+++ b/histogram.h
@@ -0,0 +1,9 @@
+#ifndef HISTOGRAM_H_INCLUDED
+#define HISTOGRAM_H_INCLUDED
+#include
+
+std::vector
+make_histogram(const std::vector& numbers, size_t bin_count);
+
+
+#endif // HISTOGRAM_H_INCLUDED
diff --git a/main.cpp b/main.cpp
index 6e40842..4e8bb0d 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,6 +1,6 @@
#include
#include
-
+#include "histogram.h"
using namespace std;
struct Input
{
@@ -26,51 +26,6 @@ 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)
-{
- double min = numbers[0];
- double max = numbers[0];
- find_minmax(numbers, min, max);
- double bin_size = (max - min) / bin_count;
- vector bins (bin_count);
-
- 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;
- auto hi = min + (j+1) * bin_size;
- if ((lo <= numbers[i]) && (numbers[i] < hi))
- {
- bins[j]++;
- found = true;
- }
- }
- if (!found)
- {
- bins[bin_count - 1]++;
- }
- }
- return bins;
-}
-void
show_histogram_text(const vector &bins)
{
const size_t SCREEN_WIDTH = 80;
@@ -130,7 +85,7 @@ show_histogram_text(const vector &bins)
int
main()
{
- auto in = input_data();
+ Input in = input_data();
auto bins = make_histogram(in.numbers, in.bin_count);
show_histogram_text(bins);
}