Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <ctime> // both this and the next header are needed for
- #include <cstdlib> // rand() to randomly generate numbers
- #include <cmath> // sqrt
- using namespace std;
- // calculate + print mean
- void calcMean(const vector<double> &data)
- {
- double sum = 0.0;
- for (size_t i = 0; i < data.size(); ++i)
- {
- sum += data[i];
- }
- cout << "Mean: " << sum / data.size() << endl;
- }
- // calc + print lowest
- void findLo(const vector<double> &negative)
- {
- double lowest = 0;
- for (size_t i = 0; i < negative.size(); ++i)
- {
- if (lowest > negative[i])
- { lowest = negative[i]; }
- }
- cout << "Lowest value: " << lowest << endl;
- }
- // calc + print lowest
- void findHi(const vector<double> &positive)
- {
- double highest = 0;
- for (size_t i = 0; i < positive.size(); ++i)
- {
- if (highest < positive[i])
- { highest = positive[i]; }
- }
- cout << "Highest value: " << highest << endl;
- }
- // print the list of both negative and positive numbers
- void showVal(const vector<double> &positive,
- const vector<double> &negative)
- {
- cout << "List of positive numbers: ";
- for (size_t i = 0; i < positive.size(); ++i)
- {
- cout << positive[i];
- if (i < (positive.size() - 1) ) // no ending comma
- { cout << ", "; }
- }
- cout << "\nList of negative numbers: ";
- for (size_t i = 0; i < negative.size(); ++i)
- {
- cout << negative[i];
- if (i < (negative.size() - 1) )
- { cout << ", "; }
- }
- }
- double split(const vector<double> &data)
- {
- vector <double> positive;
- vector <double> negative;
- int j = 0; // iterate inner
- // add to pos/neg vector depending on value of data[i]
- for (size_t i = 0; i < data.size(); ++i)
- {
- if (data[i] >= 0)
- {
- positive.push_back(data[i]);
- j++;
- } else if (data[i] < 0)
- {
- negative.push_back(data[i]);
- j++;
- }
- }
- // debugging; output pos/neg vectors
- /* for (size_t vC = 0; vC < positive.size(); ++vC)
- {
- cout << positive[vC] << endl;
- }
- for (size_t vC = 0; vC < negative.size(); ++vC)
- {
- cout << negative[vC] << endl;
- }*/
- // "return" the 2 vectors to the needed functions
- findLo(negative);
- findHi(positive);
- showVal(positive, negative);
- return 0;
- }
- // calculate std deviation
- double calculateSD(const vector<double> &data)
- {
- // calculate sum of data
- double sum = 0.0;
- for (size_t i = 0; i < data.size(); ++i)
- sum += data[i];
- // calculate average
- double mean = sum / data.size();
- // calculate and return the standard deviation
- double standardDeviation = 0.0;
- for (size_t i = 0; i < data.size(); ++i)
- standardDeviation += (data[i] - mean) * (data[i] - mean);
- return sqrt(standardDeviation / data.size());
- }
- int main()
- {
- // vector with minimum 30 values
- vector <double> data (30);
- // seed rand() with time
- srand(static_cast<unsigned int>(time(nullptr)));
- // fill vector with neg/pos num
- for (size_t i = 0; i < data.size(); ++i)
- {
- data[i] = rand() - (RAND_MAX / 2);
- //debnugginbg // cout << data[i] << endl;
- }
- // cout << "rand end"; yes this also dbunug
- cout << "Standard Deviation: " << calculateSD(data) << endl;
- calcMean(data);
- split(data);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement