Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
55 строки
1.3 KiB
C++
55 строки
1.3 KiB
C++
#include <iostream>
|
|
#include <vector>
|
|
#include "histogram.h"
|
|
using namespace std;
|
|
|
|
struct Input {
|
|
vector <double> marks;
|
|
int NCharts = 0;
|
|
};
|
|
|
|
Input input_data() {
|
|
Input in;
|
|
int VecSize = 0;
|
|
cin >> VecSize;
|
|
in.marks.resize(VecSize);
|
|
for (int i = 0; i < VecSize; i++) {
|
|
cin >> in.marks[i];
|
|
}
|
|
cin >> in.NCharts;
|
|
return in;
|
|
};
|
|
|
|
void show_histogram_text(const vector<double>& marks, const vector<double>& chart) {
|
|
int VecSize = size(marks);
|
|
const int shift = 4, maxlen = 80;
|
|
double interval = 0, inp = 0, i = 0, min = 0, max = 0, scale = 1;
|
|
FindMinMax(chart, min, max);
|
|
if ((max + shift) > maxlen) {
|
|
scale = (max + shift) / maxlen;
|
|
}
|
|
for (i = 0; i < size(chart); i++) {
|
|
if (chart[i] < 10) {
|
|
cout << " ";
|
|
}
|
|
else if (9 < chart[i] && chart[i] < 100) {
|
|
cout << " ";
|
|
}
|
|
cout << chart[i] << "|";
|
|
max = (chart[i] / scale);
|
|
if (scale != 1) {
|
|
max -= 1;
|
|
}
|
|
for (int j = 0; j < max; j++) {
|
|
cout << "*";
|
|
}
|
|
cout << "\n";
|
|
}
|
|
};
|
|
|
|
int main()
|
|
{
|
|
Input in = input_data();
|
|
vector <double> chart = MakeHistogram(in.marks, in.NCharts);
|
|
show_histogram_text(in.marks, chart);
|
|
} |