Upload files to "ex1A_mean_values"
This commit is contained in:
commit
6be81d2d73
3 changed files with 88 additions and 0 deletions
35
ex1A_mean_values/main.cpp
Normal file
35
ex1A_mean_values/main.cpp
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
#include "means.h"
|
||||||
|
#include <vector>
|
||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
double arithmetic_mean, geometric_mean, harmonic_mean;
|
||||||
|
|
||||||
|
// Fixed version
|
||||||
|
calculate_means(1, 4, 16, arithmetic_mean, geometric_mean, harmonic_mean);
|
||||||
|
cout << arithmetic_mean << ", " << geometric_mean << ", " << harmonic_mean << endl;
|
||||||
|
|
||||||
|
calculate_means(2, 3, 5, arithmetic_mean, geometric_mean, harmonic_mean);
|
||||||
|
cout << arithmetic_mean << ", " << geometric_mean << ", " << harmonic_mean << endl;
|
||||||
|
|
||||||
|
calculate_means(1000, 4000, 16000, arithmetic_mean, geometric_mean, harmonic_mean);
|
||||||
|
cout << arithmetic_mean << ", " << geometric_mean << ", " << harmonic_mean << endl;
|
||||||
|
cout << "--------------------------------" << endl;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Scalable version
|
||||||
|
calculate_means(vector<int> {1, 4, 16}, arithmetic_mean, geometric_mean, harmonic_mean);
|
||||||
|
cout << arithmetic_mean << ", " << geometric_mean << ", " << harmonic_mean << endl;
|
||||||
|
|
||||||
|
calculate_means(vector<int> {2, 3, 5}, arithmetic_mean, geometric_mean, harmonic_mean);
|
||||||
|
cout << arithmetic_mean << ", " << geometric_mean << ", " << harmonic_mean << endl;
|
||||||
|
|
||||||
|
calculate_means(vector<int> {1000, 4000, 16000}, arithmetic_mean, geometric_mean, harmonic_mean);
|
||||||
|
cout << arithmetic_mean << ", " << geometric_mean << ", " << harmonic_mean << endl;
|
||||||
|
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
30
ex1A_mean_values/means.cpp
Normal file
30
ex1A_mean_values/means.cpp
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
#include "../ex1A_mean_values/means.h"
|
||||||
|
#include <cmath>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
void calculate_means(int a, int b, int c, double &am, double &gm, double &hm)
|
||||||
|
{
|
||||||
|
am = (a + b + c)/3.0;
|
||||||
|
gm = exp((log(a)+log(b)+log(c))/3);
|
||||||
|
hm = 3.0/(1.0/a + 1.0/b + 1.0/c);
|
||||||
|
}
|
||||||
|
|
||||||
|
void calculate_means(std::vector<int> numbers, double &am, double &gm, double &hm)
|
||||||
|
{
|
||||||
|
int n = numbers.size();
|
||||||
|
|
||||||
|
am = 0.;
|
||||||
|
gm = 0.;
|
||||||
|
hm = 0.;
|
||||||
|
|
||||||
|
for (int i = 0; i < n; ++i)
|
||||||
|
{
|
||||||
|
am += numbers[i];
|
||||||
|
gm += log(numbers[i]);
|
||||||
|
hm += 1.0/numbers[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
am /= n;
|
||||||
|
gm = exp(gm/n);
|
||||||
|
hm = n/hm;
|
||||||
|
}
|
||||||
23
ex1A_mean_values/means.h
Normal file
23
ex1A_mean_values/means.h
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#pragma once
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function calculates arithmetic mean, geometric mean and harmonic mean of three integers.
|
||||||
|
@param[in] a first integer
|
||||||
|
@param[in] b second integer
|
||||||
|
@param[in] c third integer
|
||||||
|
@param[out] am arithmetic mean
|
||||||
|
@param[out] gm geometric mean
|
||||||
|
@param[out] hm harmonic mean
|
||||||
|
*/
|
||||||
|
void calculate_means(int a, int b, int c, double &am, double &gm, double &hm);
|
||||||
|
|
||||||
|
/**
|
||||||
|
This function calculates arithmetic mean, geometric mean and harmonic mean of an integer vector.
|
||||||
|
@param[in] numbers vector containing integers
|
||||||
|
@param[out] am arithmetic mean
|
||||||
|
@param[out] gm geometric mean
|
||||||
|
@param[out] hm harmonic mean
|
||||||
|
*/
|
||||||
|
void calculate_means(std::vector<int> numbers, double &am, double &gm, double &hm);
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue