code: Ввод вынесен в отдельную функцию

master
MamakinYR 1 год назад
Родитель 51588e2ca7
Сommit a4cd96b77e

@ -2,31 +2,38 @@
#include <conio.h> #include <conio.h>
#include <vector> #include <vector>
using namespace std; using namespace std;
struct Input {
vector<double> numbers;
size_t bin_count{};
};
Input input_data() {
Input in;
size_t number_count;
cin >> number_count;
in.numbers.resize(number_count);
for (size_t i = 0; i < number_count; i++) {
cin >> in.numbers[i];
}
cin >> in.bin_count;
return in;
}
int main() int main()
{ {
const size_t SCREEN_WIDTH = 80; const size_t SCREEN_WIDTH = 80;
const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
int i, j; int i, j;
double num; double num;
size_t number_count, bin_count; Input in = input_data();
cerr << "Enter number count: " << "\n"; vector<size_t> bins(in.bin_count);
cin >> number_count; for (i = 0; i < in.bin_count; i++)
vector<double> numbers(number_count);
for (i = 0; i < number_count; i++)
{
cin >> num;
numbers[i] = num;
}
cerr << "Enter bin count: " << "\n";
cin >> bin_count;
vector<size_t> bins(bin_count);
for (i = 0; i < bin_count; i++)
{ {
bins[i] = 0; bins[i] = 0;
} }
double min_number = numbers[0]; double min_number = in.numbers[0];
double max_number = numbers[0]; double max_number = in.numbers[0];
for (double x : numbers) for (double x : in.numbers)
{ {
if (x < min_number) if (x < min_number)
{ {
@ -37,15 +44,15 @@ int main()
max_number = x; max_number = x;
} }
} }
double bin_size = (max_number - min_number) / bin_count; double bin_size = (max_number - min_number) / in.bin_count;
for (size_t i = 0; i < number_count; i++) for (size_t i = 0; i < in.numbers.size(); i++)
{ {
bool found = false; bool found = false;
for (size_t j = 0; (j < bin_count - 1) && !found; j++) for (size_t j = 0; (j < in.bin_count - 1) && !found; j++)
{ {
auto lo = min_number + j * bin_size; auto lo = min_number + j * bin_size;
auto hi = min_number + (j + 1) * bin_size; auto hi = min_number + (j + 1) * bin_size;
if ((lo <= numbers[i]) && (numbers[i] < hi)) if ((lo <= in.numbers[i]) && (in.numbers[i] < hi))
{ {
bins[j]++; bins[j]++;
found = true; found = true;
@ -53,7 +60,7 @@ int main()
} }
if (!found) if (!found)
{ {
bins[bin_count - 1]++; bins[in.bin_count - 1]++;
} }
} }
size_t max_bin_capacity = bins[0]; size_t max_bin_capacity = bins[0];
@ -65,7 +72,7 @@ int main()
} }
} }
size_t height = 0; size_t height = 0;
for (i = 0; i < bin_count; i++) for (i = 0; i < in.bin_count; i++)
{ {
if (bins[i] < 10) if (bins[i] < 10)
{ {

Загрузка…
Отмена
Сохранить