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