#include <iostream>
#include <math.h>
using namespace std;
struct Var {
int xi;
int mi;
float vi;
};
int main() {
int n = 50;
int stat[n] = {
16, 14, 17, 15, 20, 16, 17, 18, 15, 13,
18, 16, 14, 17, 12, 19, 16, 15, 17, 18,
14, 19, 16, 18, 15, 17, 13, 16, 20, 15,
21, 17, 15, 16, 13, 16, 19, 18, 14, 15,
15, 16, 17, 14, 16, 19, 21, 15, 17, 18
};
cout << "Entered static row:" << endl << "[";
for (int k = 0; k < n; ++k) {
cout << stat[k];
if(k != n - 1) {
cout << ", ";
}
}
cout << "]" << endl;
int variation[n];
for (int j = 0; j < n; ++j) {
variation[j] = 0;
}
for (int i = 0; i < n; ++i) {
variation[stat[i]] += 1;
}
int count = 0;
for (int i = 0; i < n; ++i) {
if(variation[i] != 0) {
count++;
}
}
Var variative[count];
int j = 0;
int min = 9999999, max = 0;
for (int i = 0; i < n; ++i) {
if(variation[i] != 0) {
variative[j].xi = i;
variative[j].mi = variation[i];
variative[j].vi = (float) variation[i] / n;
if(min > variative[j].xi) {
min = variative[j].xi;
}
if(max < variative[j].xi) {
max = variative[j].xi;
}
j++;
}
}
cout << "Extended variation row:" << endl;
for(int i = 0; i < count; ++i) {
cout << i << " => Xi = " << variative[i].xi << ", Vi = " << variative[i].vi << ", mi = " << variative[i].mi << endl;
}
cout << "Interval variation row:" << endl;
double deltax = (double) (max - min) / (1.0 + 3.32 * log10(50));
deltax = ceil(deltax);
int dimension = ceil((max - min) / deltax);
Var x[dimension];
for (int i = 0; i < dimension; ++i) {
if(i == 0) {
x[i].xi = min - deltax / 2;
} else {
x[i].xi = x[i - 1].xi + 2;
}
x[i].mi = variative[i * 2].mi + variative[i * 2 + 1].mi;
x[i].vi = variative[i * 2].vi + variative[i * 2 + 1].vi;
}
for (int i = 0; i < dimension; ++i) {
cout << i << " => Xi = " << x[i].xi << ", Vi = " << x[i].vi << ", mi = " << x[i].mi << endl;
}
cout << "cumulate: " << endl;
Var cumulate[dimension];
float vi = 1;
for (int i = dimension; i > 0; i--) {
vi -= x[i].vi;
cumulate[i - 1].vi = vi;
}
for (int i = 0; i < dimension; ++i) {
cout << "Vi = " << cumulate[i].vi << ", Xi = " << x[i].xi + 1 << endl;
}
cout << "ogiva: " << endl;
for (int i = 0; i < dimension; ++i) {
cout << "Xi = " << x[i].xi + 1 << ", Vi = " << cumulate[i].vi << endl;
}
return 0;
}