This code allows the user to pick a math function (trig funtions, log, ln), set an x range, and it displays the x,y values of the funtion in that range.

I have three problems:

typing "4" doesn't make it exit < - fixed

typing anything other than a number makes the program go wacky

even with the if statement in the switch-case function, making the minimum range less than 0 STILL does not warn the user, if they have a log function selected. <-fixed

I'd also like some tips, pointers, anything, to make it smaller and more efficient.

This is like.. the 2nd program I've written since starting reading a book (and I'm 300 pages in the book). I thought it'd be time to apply some stuff :I know (although I would have liked to use classes, pointers, and references in there somewheres)Code:// The purpose is to take an x range and then display all the values of certain mathematical functions within that range. // Demonstrates use of switch-case statemsnts, while statemsnts, and basic classes. #include <iostream.h> #include <stdlib.h> #include <math.h> void DrawTable(int,int,int); int main() { bool exit = false; bool exit2 = false; int opt; int opt2; int function = 1; int max = 10; int min = -10; cout << "************************************************************\n"; cout << "**********************MATH FUNCTIONS************************\n"; cout << "************************************************************\n"; while(exit == false) { cout << "Please make a selection\n"; cout << "1. Select the function\n"; cout << "2. Set the x range\n"; cout << "3. Display the value table\n"; cout << "4. Exit\n"; cin >> opt; switch(opt) { case(1): while(exit2 == false) { cout << "\nSelect one of these functions: " << endl; cout << "1. sine\n"; cout << "2. cosine\n"; cout << "3. tangent\n"; cout << "4. log (base 10)\n"; cout << "5. natural log (base e)\n"; cin >> opt2; switch(opt2) { case(1): function = 1; exit2 = true; break; case(2): function = 2; exit2 = true; break; case(3): function = 3; exit2 = true; break; case(4): function = 4; exit2 = true; break; case(5): function = 5; exit2 = true; break; default: cout << "Please select again\n\n"; break; } } break; case(2): for(;;) { cout << "What should the minimum x value be?\n"; cin >> min; cout << "\nWhat should the maximum x value be?\n"; cin >> max; if ( ( min > max ) || ( ( min <= 0 ) && ( function = ( 4 || 5 ) ) ) ) { cout << "The minimum cannot be greater than the max, or you have chosen values less than 0 for a logarithmic function!\n"; continue; } else break; } break; case(3): DrawTable(min, max, function); break; case(4): exit = true; break; default: cout << "Please make another selection\n"; break; } } system("PAUSE"); return 0; } void DrawTable(int mi, int ma, int func) { switch(func) { case(1): cout << "\nX\t|\tY\n"; cout << "\t|\n"; for(mi;mi<=ma; mi++) { cout << mi << "\t|\t" << sin(mi) << endl; } break; case(2): cout << "\nX\t|\tY\n"; cout << "\t|\n"; for(mi;mi<=ma; mi++) { cout << mi << "\t|\t" << cos(mi) << endl; } break; case(3): cout << "\nX\t|\tY\n"; cout << "\t|\n"; for(mi;mi<=ma; mi++) { cout << mi << "\t|\t" << tan(mi) << endl; } break; case(4): cout << "\nX\t|\tY\n"; cout << "\t|\n"; for(mi;mi<=ma; mi++) { cout << mi << "\t|\t" << log10(mi) << endl; } break; case(5): cout << "\nX\t|\tY\n"; cout << "\t|\n"; for(mi;mi<=ma; mi++) { cout << mi << "\t|\t" << log(mi) << endl; } break; default: cout << "ERROR!\n"; } return; }

Thanks for any help.