/*Timothy Price CS1A Ch6 challenge 10
********************************************************************************
* Calculate Average
*
* This program receives a number of scores, determines the lowest, removes it
* from the set, and calculates the average of the remaining scores.
*
* Inputs:
* 5 test scores
*
* Outputs:
* Lowest score
* Average of remaining scores
*******************************************************************************/
#include <iostream>
#include <iomanip>
using namespace std;
// Function prototypes
void getScore( int & score) ;
void calcAverage( int s1, int s2, int s3, int s4, int s5) ;
int findLowest( int s1, int s2, int s3, int s4, int s5) ;
int main( ) {
int score1, score2, score3, score4, score5;
//Gather inputs
cout << "Please enter five test scores." << endl;;
getScore( score1) ;
getScore( score2) ;
getScore( score3) ;
getScore( score4) ;
getScore( score5) ;
//Call first fucntion
calcAverage( score1, score2, score3, score4, score5) ;
return 0 ;
}
//Receives test score, stores it, and validates it
void getScore( int & score) {
cout << "Enter a test score: " ;
cin >> score;
cout << score << "%" << endl;
if ( score < 0 || score > 100 ) {
cout << "Invalid score. Test scores must be between 0 and 100." << endl;
cout << "Enter a test score: " ;
cin >> score;
}
}
//Finds lowest test score
int findLowest( int s1, int s2, int s3, int s4, int s5) {
int lowest = s1;
if ( s2 < lowest) lowest = s2;
if ( s3 < lowest) lowest = s3;
if ( s4 < lowest) lowest = s4;
if ( s5 < lowest) lowest = s5;
return lowest;
}
// Calculates the average of the remaining scores
void calcAverage( int s1, int s2, int s3, int s4, int s5) {
int lowest = findLowest( s1, s2, s3, s4, s5) ;
double sum = ( s1 + s2 + s3 + s4 + s5) - lowest;
double average = sum / 4.0 ;
cout << fixed << setprecision( 2 ) << endl;
cout << "Lowest score dropped: " << lowest << endl;
cout << "Average of the remaining four scores: " << average << endl;
}
LypUaW1vdGh5IFByaWNlCQkJCQlDUzFBCQkJCQlDaDYgY2hhbGxlbmdlIDEwCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiogQ2FsY3VsYXRlIEF2ZXJhZ2UgCioKKiBUaGlzIHByb2dyYW0gcmVjZWl2ZXMgYSBudW1iZXIgb2Ygc2NvcmVzLCBkZXRlcm1pbmVzIHRoZSBsb3dlc3QsIHJlbW92ZXMgaXQgCiogZnJvbSB0aGUgc2V0LCBhbmQgY2FsY3VsYXRlcyB0aGUgYXZlcmFnZSBvZiB0aGUgcmVtYWluaW5nIHNjb3Jlcy4KKgoqIElucHV0czoKKiAgNSB0ZXN0IHNjb3JlcwoqCiogT3V0cHV0czoKKiAgTG93ZXN0IHNjb3JlCiogIEF2ZXJhZ2Ugb2YgcmVtYWluaW5nIHNjb3JlcwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBGdW5jdGlvbiBwcm90b3R5cGVzCnZvaWQgZ2V0U2NvcmUoaW50ICZzY29yZSk7CnZvaWQgY2FsY0F2ZXJhZ2UoaW50IHMxLCBpbnQgczIsIGludCBzMywgaW50IHM0LCBpbnQgczUpOwppbnQgZmluZExvd2VzdChpbnQgczEsIGludCBzMiwgaW50IHMzLCBpbnQgczQsIGludCBzNSk7CgppbnQgbWFpbigpIHsKICAgIGludCBzY29yZTEsIHNjb3JlMiwgc2NvcmUzLCBzY29yZTQsIHNjb3JlNTsKCgkvL0dhdGhlciBpbnB1dHMKICAgIGNvdXQgPDwgIlBsZWFzZSBlbnRlciBmaXZlIHRlc3Qgc2NvcmVzLiIgPDwgZW5kbDs7CiAgICBnZXRTY29yZShzY29yZTEpOwogICAgZ2V0U2NvcmUoc2NvcmUyKTsKICAgIGdldFNjb3JlKHNjb3JlMyk7CiAgICBnZXRTY29yZShzY29yZTQpOwogICAgZ2V0U2NvcmUoc2NvcmU1KTsKCgkvL0NhbGwgZmlyc3QgZnVjbnRpb24KICAgIGNhbGNBdmVyYWdlKHNjb3JlMSwgc2NvcmUyLCBzY29yZTMsIHNjb3JlNCwgc2NvcmU1KTsKCiAgICByZXR1cm4gMDsKfQoKLy9SZWNlaXZlcyB0ZXN0IHNjb3JlLCBzdG9yZXMgaXQsIGFuZCB2YWxpZGF0ZXMgaXQKdm9pZCBnZXRTY29yZShpbnQgJnNjb3JlKSB7CiAgICBjb3V0IDw8ICJFbnRlciBhIHRlc3Qgc2NvcmU6ICI7CiAgICBjaW4gPj4gc2NvcmU7CiAgICBjb3V0IDw8IHNjb3JlIDw8ICIlIiA8PCBlbmRsOwogICAgaWYgKHNjb3JlIDwgMCB8fCBzY29yZSA+IDEwMCkgewogICAgICAgIGNvdXQgPDwgIkludmFsaWQgc2NvcmUuIFRlc3Qgc2NvcmVzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAuIiA8PCBlbmRsOwogICAgICAgIGNvdXQgPDwgIkVudGVyIGEgdGVzdCBzY29yZTogIjsKICAgICAgICBjaW4gPj4gc2NvcmU7CiAgICB9Cn0KCi8vRmluZHMgbG93ZXN0IHRlc3Qgc2NvcmUKaW50IGZpbmRMb3dlc3QoaW50IHMxLCBpbnQgczIsIGludCBzMywgaW50IHM0LCBpbnQgczUpIHsKICAgIGludCBsb3dlc3QgPSBzMTsKCiAgICBpZiAoczIgPCBsb3dlc3QpIGxvd2VzdCA9IHMyOwogICAgaWYgKHMzIDwgbG93ZXN0KSBsb3dlc3QgPSBzMzsKICAgIGlmIChzNCA8IGxvd2VzdCkgbG93ZXN0ID0gczQ7CiAgICBpZiAoczUgPCBsb3dlc3QpIGxvd2VzdCA9IHM1OwoKICAgIHJldHVybiBsb3dlc3Q7Cn0KCi8vIENhbGN1bGF0ZXMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIHJlbWFpbmluZyBzY29yZXMKdm9pZCBjYWxjQXZlcmFnZShpbnQgczEsIGludCBzMiwgaW50IHMzLCBpbnQgczQsIGludCBzNSkgewogICAgaW50IGxvd2VzdCA9IGZpbmRMb3dlc3QoczEsIHMyLCBzMywgczQsIHM1KTsKICAgIGRvdWJsZSBzdW0gPSAoczEgKyBzMiArIHMzICsgczQgKyBzNSkgLSBsb3dlc3Q7CiAgICBkb3VibGUgYXZlcmFnZSA9IHN1bSAvIDQuMDsKCiAgICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbigyKSA8PCBlbmRsOwogICAgY291dCA8PCAiTG93ZXN0IHNjb3JlIGRyb3BwZWQ6ICIgPDwgbG93ZXN0IDw8IGVuZGw7CiAgICBjb3V0IDw8ICJBdmVyYWdlIG9mIHRoZSByZW1haW5pbmcgZm91ciBzY29yZXM6ICIgPDwgYXZlcmFnZSA8PCBlbmRsOwp9