so program calculates , prints largest, smallest, average, , sum of sequence user enters. problem have found when symbol entered, outputs wrong, still ""adds" it's ascii code sum, messing results. also, if else number , letter such 1361351p, still reads it. appreciated.
/** c2.cpp * test #2 problem c2 * robert uhde * program calculates , prints largest, smallest, average, * , sum of sequence of numbers user enters. */ #include <iostream> using namespace std; // extreme constants find min/max const double max = 1.7976931348623157e+308; const double min = 2.2250738585072014e-308; // create generic variable t prototype template <class t> // prototype dataset request inputs , calculate sum, average, largest , smallest numbers. t dataset(t &sum, t &largest, t &smallest, t avg); int main(){ // intro program cout << "this program calculates , prints largest, smallest," << endl << "average, , sum of sequence of numbers user enters." << endl << endl; // defined used variables in longest double format include many types possible largest range double avg = 0, sum = 0, max, min; // call dataset returns avg , return references avg = dataset(sum, max, min, avg); // output 4 variables cout << endl << "the largest of sequence entered is: " << max << endl; cout << "the smallest of sequence entered is: " << min << endl; cout << "the sum of sequence entered is: " << sum << endl; cout << "the average of sequence entered is: " << avg << endl; system("pause"); return 0; } // create generic variable t dataset template <class t> t dataset(t &sum, t &max, t &min, t avg){ t num; min = max, max = min; // count number of valid numbers int count = 0; // repeat loop until ^z do{ cout << "enter sequence of numbers: (^z quit) "; cin >> num; // if valid, increment count 1, add sum, find out if it's new max or min if(cin.good() && (typeid(num) == typeid(int) || typeid(num) == typeid(double))){ count++; if(num > max) max = num; sum += num; if(num < min) min = num; } // if user enters ^z break out else if(cin.eof()) break; // if there sort of type error, print , clear request again else{ cout << "error. try again.\n"; cin.clear(); cin.ignore(80, '\n'); } }while(true); // calculate average , return avg = sum / count; return avg; }
your conditioning check needs more work. use more specific condition checkings such isalpha or isdigit part of since these condition checks below not enough
if(cin.good() && (typeid(num) == typeid(int) || typeid(num) == typeid(double))) best of luck!
Comments
Post a Comment