axyd icon

Lab 7, part 1

axyd | PRO | 05/05/16 03:59:36 AM UTC | 0 ⭐ | 616 👁️ | Never ⏰ | []
C++ |

2.32 KB

|

None

|

0 👍

/

0 👎

#include <iostream>
#include <iomanip>
using namespace std;
 
void err(double);
void yrRain(double [], const int, double&);
void avgRain(double[], const int, double&);
void hlMonths(double [], const int, double&, double&, int&, int&);
 
int main(){
    const int months = 12;
    char again = 'y';
 
    while (again == 'y' || again == 'Y'){
        double arrain[months];
        cout << "\t\tEnter the rainfall amount for 12 months.\n\n";
 
        for (int i = 0; i < months; i++){
            cout << "Month " << i + 1 <<": ";
            cin >> arrain[i];
 
            while (cin.fail() || arrain[i] < 1){ //fix letter and negatives
                err(arrain[i]);
                cout << "Month " << i + 1 << ": ";
                cin >> arrain[i];
            }
        }
 
        double ttl = 0;
        yrRain(arrain, months, ttl); //yearly rainfall
        cout << "\n\nThe yearly amount of rainfall was: " << setprecision(2) << fixed << ttl << endl;
 
        double avgIn = 0;
        avgRain(arrain, months, avgIn); //monthly rainfall
        cout << "The Average rainfall per month was: " << setprecision(2) << fixed << avgIn << endl;
 
        double maxR = 0, minR = 0;
        int maxM = 0, minM = 0;
        hlMonths(arrain, months, maxR, minR, minM, maxM); //months with highest and lowest rainfall
        cout << "Month " << (minM+1) << " had the lowest rainfall, and it was: " << setprecision(2) << fixed << minR << endl
            << "Month " << (maxM+1) << " had the highest rainfall, and it was: " << setprecision(2) << fixed << maxR << endl << endl;
        
        cout << "\nEnter y/Y to go again: ";
        cin >> again;
    }
}
 
void err(double x){ //fix letter or negative number
    if (cin.fail())
        cout << "\t\t/!\\ Not a number /!\\\n";
    else if (x < 1)
        cout << "\t\t/!\\ Negative number /!\\\n";
    cin.clear();
    fflush(stdin);
}
 
void yrRain(double rainray[], const int m, double &sum){
    for (int i = 0; i < m; i++)
        sum += rainray[i];  
}
 
void avgRain(double rainray[], const int m, double & avgOut){
    for (int j = 0; j < m; j++)
        avgOut += rainray[j];
    avgOut /= m;
}
 
void hlMonths(double rainray[], const int m, double& maxRain, double& minRain, int& minMonth, int& maxMonth){
    maxRain = rainray[0];
    minRain = rainray[0];
    double tempRain = 0;
 
    for (int k = 0; k < m; k++){
        tempRain = rainray[k];
 
        if (tempRain < minRain){
            minRain = tempRain;
            minMonth = k;
        }
 
        if (tempRain > maxRain){
            maxRain = tempRain;
            maxMonth = k;
        }
    }
}

Comments