#include #include #include #include #include #include #include using namespace std; char selection; char printMenu(void); void array(float& obs, int& i, float x[]); void bins(float& interl, float width, float& interu, int& i, float x[], float lower, float upper, float y[], int star, int& a, int c, int d, float starmax, float stars); void input(float x[], int& i, float& obs, char input[], float& min, float& max, char answer); void reset(int& i, float x[]); int main (void) { int i=0; float interu; float interl; float width; float x[1000]; float y[1000]; float obs; float max; float min; float lower; float upper; int star; int a; int b; int c; int d; float starmax; float stars; char file[1000]; char answer; printMenu(); cin >> selection; while (selection != 'q' || selection != 'Q'){ if (selection == '1') { cout << endl << "Enter the data (-1 to end): "; cin >> obs; max=obs; min=obs; while (obs!= -1){ array( obs, i, x); cin>>obs; if (obs < min) min=obs; else if (obs > max) max=obs; } if (obs=-1) cout<< endl; } else if (selection == '2') { bins(interl, width, interu, i, x, lower, upper, y, star, a, c, d, starmax, stars); } else if (selection == '3') { reset (i, x); cout << endl; } else if (selection == '4'){ input(x, i, obs, file, min, max, answer); cout << endl << "The number of observations in the data set = " << i << endl; cout << "The minimum value = " << min << endl; cout << "The maximum value = " << max << endl; } else if (selection == 'q' || selection == 'Q'){ break; } else { cout << endl << endl << "Invalid choice! Please try again."; cout << endl; } printMenu(); cin >> selection; } } char printMenu(void){ cout << endl << " CGS2425: A HISTOGRAM DRAWING PROGRAM" << endl << endl; cout << "1 - Enter data manually" << endl << endl; cout << "2 - Draw a histogram of the data" << endl<< endl; cout << "3 - Clear" << endl<< endl; cout << "4 - Read a data file" << endl << endl; cout << "Q - Quit the program" << endl << endl; cout << " Enter choice: "; } void array(float obs, int& i, float x[]){ x[i]=obs; i++; } void bins(float& interl, float width, float& interu, int& i, float x[], float lower, float upper, float y[], int star, int& a, int b, int c, int d, float starmax, float stars, float min, float max){ cout << "The number of observations in the data set = " << (i+1) << endl; cout << "The minimum value = " << min << endl; cout << "The maximum value = " << max << endl; cout << "Approximate interval width to get 20 intervals = " << (max-min)/20 << endl; cout << endl << "Enter the lower limit, upper limit and the width of the interval." << endl; cin >> lower >> upper >> width; interl=lower; starmax=0; if ( width<=0||upper < lower||upper < min||lower > max) { cout << "Error! Invalid values were entered." << endl; } else if (lower max) { cout << "Error! Invalid values were entered." << endl; } else { for (b=0; interl upper) interu=upper; for (a=0; a==i; a++){ if (x[a] < interu && x[a] >= interl){ star++; } } y[b]=star; if (star > starmax) starmax=star; interl= lower+(width*(b+1)); } if (starmax > 50){ stars=starmax/50; for (a=0; a==b; a++) { y[a]=y[a]/stars; } } cout << endl << " Interval" << endl; cout << " Start Freq Prob Each * represents " << stars << " observations" << endl; for (c=0; c==b; c++){ interl=lower+(width*c); cout<< interl << y[c] << (y[c]/i); for (d=0; d>=y[c]; d++){ cout << "*"; } cout << " " << endl; } cout << endl; } } void input(float x[], int& i, int obs, char file[], float& min, float& max, char answer) { ifstream infile; cout << endl << "Enter the name of the data file: "; cin >> file; infile.open(file); while (infile.fail()){ cout << "Cannot open " << file << " !!!" << endl; cout << "Try again? (Y/N): "; cin >> answer; if (answer == 'Y' || answer == 'y'){ cout << "Enter the name of the data file: "; cin >> file; } if (answer == 'n' || answer == 'N') break; infile.open(file); } while ( infile.eof()==false ){ infile >> obs; x[i]=obs; i++; if (obs < min) min=obs; else if (obs > max) max=obs; } infile.close(); } void reset(int& i, float x[1000]){ i=0; cout << endl << "The data has been cleared!" << endl; }