85 lines
2.7 KiB
C++
85 lines
2.7 KiB
C++
#include <iostream> // for input/output
|
|
#include <cmath> // for pow (used in geometric mean)
|
|
#include <vector>
|
|
|
|
using namespace std;
|
|
void computeMeans(int a, int b, int c, double &arith, double &geom, double &harm) { //doesn't return anything
|
|
arith = (a + b + c) / 3.0;
|
|
geom = pow(a * b * c, 1.0 / 3.0);
|
|
harm = 3.0 / ( (1.0 / a) + (1.0 / b) + (1.0 / c) );
|
|
}
|
|
void computeMeansVector(const vector<int> &v, double &arith, double &geom, double &harm) {
|
|
int n = v.size(); // number of elements in the vector
|
|
// If the vector is empty, avoid division by zero
|
|
if (n == 0) {
|
|
arith = geom = harm = 0.0;
|
|
return;
|
|
}
|
|
double sum = 0.0;
|
|
double product = 1.0;
|
|
double reciprocalSum = 0.0;
|
|
|
|
for (int i = 0; i < n; ++i) {
|
|
sum += v[i];
|
|
product *= v[i];
|
|
reciprocalSum += 1.0 / v[i];
|
|
}
|
|
|
|
arith = sum / n;
|
|
geom = pow(product, 1.0 / n);
|
|
harm = n / reciprocalSum;
|
|
}
|
|
|
|
int main() {
|
|
int x, y, z;
|
|
double am, gm, hm; // to store the results
|
|
double amV, gmV, hmV; // to store the results vector case
|
|
vector<int> values;
|
|
|
|
// Example input 1
|
|
x = 1; y = 4; z = 16;
|
|
computeMeans(x, y, z, am, gm, hm);
|
|
cout << "Input: (1, 4, 16)" << endl;
|
|
cout << "Arithmetic mean: " << am << endl;
|
|
cout << "Geometric mean: " << gm << endl;
|
|
cout << "Harmonic mean: " << hm << endl << endl;
|
|
|
|
values = {1, 4, 16};
|
|
computeMeansVector(values, amV, gmV, hmV);
|
|
cout << "Input: (1, 4, 16)" << endl;
|
|
cout << "Arithmetic mean: " << amV << endl;
|
|
cout << "Geometric mean: " << gmV << endl;
|
|
cout << "Harmonic mean: " << hmV << endl << endl;
|
|
|
|
// Example input 2
|
|
x = 2; y = 3; z = 5;
|
|
computeMeans(x, y, z, am, gm, hm);
|
|
cout << "Input: (2, 3, 5)" << endl;
|
|
cout << "Arithmetic mean: " << am << endl;
|
|
cout << "Geometric mean: " << gm << endl;
|
|
cout << "Harmonic mean: " << hm << endl << endl;
|
|
|
|
values = {2, 3, 5};
|
|
computeMeansVector(values, amV, gmV, hmV);
|
|
cout << "Input: (2, 3, 5)" << endl;
|
|
cout << "Arithmetic mean: " << amV << endl;
|
|
cout << "Geometric mean: " << gmV << endl;
|
|
cout << "Harmonic mean: " << hmV << endl << endl;
|
|
|
|
// Example input 3
|
|
x = 1000; y = 4000; z = 16000;
|
|
computeMeans(x, y, z, am, gm, hm);
|
|
cout << "Input: (1000, 4000, 16000)" << endl;
|
|
cout << "Arithmetic mean: " << am << endl;
|
|
cout << "Geometric mean: " << gm << endl;
|
|
cout << "Harmonic mean: " << hm << endl << endl;
|
|
|
|
values = {1000, 4000, 16000};
|
|
computeMeansVector(values, amV, gmV, hmV);
|
|
cout << "Input: (1000, 4000, 16000)" << endl;
|
|
cout << "Arithmetic mean: " << amV << endl;
|
|
cout << "Geometric mean: " << gmV << endl;
|
|
cout << "Harmonic mean: " << hmV << endl << endl;
|
|
|
|
return 0;
|
|
}
|