//super duper calculator program //max levental #include #include #include #include using namespace std; //individual function declaration void add(), subtract(), multiply(), divide(); int main(int argc, char *argv[]) { //variable declaration for main const int size(100); char choice, decision; //loop that actually controls the main menu do { //prompts user for input to select which function they would like to use cout << "\t\tMath Calculator"; cout << "\n\nSelect one of the following functions:" << endl; cout << "A. Add" << endl; cout << "B. Subtract" << endl; cout << "C. Multiply" << endl; cout << "D. Divide" << endl; cout << "\nYour Choice : "; cin >> choice; system("CLS"); //calls a function depending on user input switch ( choice ) { case 'A': add(); break; case 'a': add(); break; case 'B': subtract(); break; case 'b': subtract(); break; case 'C': multiply(); break; case 'c': multiply(); break; case 'D': divide(); break; case 'd': divide(); break; } //outside of switch, kills or doesn't the loop cout << "Would you like to use another function (Y/N)?"; cin >> decision; system("CLS"); } while ( decision == 'Y' || decision == 'y' ); system("PAUSE"); return EXIT_SUCCESS; } void add() { //variable declaration for add() //variables are initialized appropo to function int position(0), position2(0), length(0), i(0); double number(0), sum(0); string str1, str2; //stream declaration so you can do math with string stringstream stream; //prompts user for numbers, kills input when = is entered cout << "Please enter some numbers, enter = to sum them.\n\n"; getline(cin, str1, '='); //primes string so parsing algorithm works str1.insert(0, 1, '0'); str1.insert(1, 1, '\n'); //length need to control while loop below int b(str1.length()); //summing loop while ( i <= b-3 ) { //finds first '\n' which is at position 1 because of insert method position = str1.find('\n', i); //finds the next '\n' after the one position found position2 = str1.find('\n', position+1); //determines length of entered number between '\n', -1 need because array starts at 0 length = (position2 - position -1); //creates another string with just the number in it str2 = str1.substr(position+1, length); stream.clear(); //streams str2 into number stream << str2; stream >> number; //accumulates numbers sum += number; //bumps counter up i=position2; number = 0; } //displays sum cout << "The sum is : "<< sum << endl; system("PAUSE"); } void multiply() { //variable declaration for add() //variables are initialized appropo to function int position(0), position2(0), length(0), i(0); double number(0), product(1); string str1, str2; //stream declaration so you can do math with string stringstream stream; //prompts user for numbers, kills input when = is entered cout << "Please enter some numbers, enter = to multiply them.\n\n"; cin.ignore(2, '\n'); getline(cin, str1, '='); //primes string so parsing algorithm works str1.insert(0, 1, '0'); str1.insert(1, 1, '\n'); //length need to control while loop below int b(str1.length()); //mulitplying loop while ( i <= b-3 ) { //finds first '\n' which is at position 1 because of insert method position = str1.find('\n', i); //finds the next '\n' after the one position found position2 = str1.find('\n', position+1); //determines length of entered number between '\n', -1 need because array starts at 0 length = (position2 - position -1); //creates another string with just the number in it str2 = str1.substr(position+1, length); stream.clear(); //streams str2 into number stream << str2; stream >> number; //system("PAUSE"); //accumulates numbers product = (product*number); //bumps coutner up i=position2; number = 0; } //displays product cout << "The product is :" << product << endl; system("PAUSE"); } void subtract() { //variable declaration for add() //variables are initialized appropo to function int position(0), position2(0), length(0), i(0); double number(0), difference(0); string str1, str2; //stream declaration so you can do math with string stringstream stream; //prompts user for numbers, kills input when = is entered cout << "Please enter some numbers, enter = to subtract them from the first number you entered.\n\n"; //first numbers primes the dummy variable cin >> difference; cout << "-"; //rest of the numbers go into the string cin.ignore(1, '\n'); getline(cin, str1, '='); //primes string so parsing algorithm works str1.insert(0, 1, '0'); str1.insert(1, 1, '\n'); //length need to control while loop below int b(str1.length()); //subtracting loop while ( i <= b-3 ) { //finds first '\n' which is at position 1 because of insert method position = str1.find('\n', i); //finds the next '\n' after the one position found position2 = str1.find('\n', position+1); //determines length of entered number between '\n', -1 need because array starts at 0 length = (position2 - position -1); //creates another string with just the number in it str2 = str1.substr(position+1, length); stream.clear(); //streams str2 into number stream << str2; stream >> number; //accumulates numbers difference = ( difference - number ); //bumps counter up i=position2; number = 0; } //displays difference cout << "The difference is :" << difference << endl; system("PAUSE"); } void divide() { //variable declaration for add() //variables are initialized appropo to function int position(0), position2(0), length(0), i(0); double number(0), quotient(1); string str1, str2; //stream declaration so you can do math with string stringstream stream; //prompts user for numbers, kills input when = is entered cout << "Please enter some numbers, enter = to divide them.\n\n"; //first numbers primes the dummy variable cin >> quotient; cout << "divided by "; //rest of numbers go into string cin.ignore(1, '\n'); getline(cin, str1, '='); //primes string so parsing works str1.insert(0, 1, '0'); str1.insert(1, 1, '\n'); //length needed to control loop below int b(str1.length()); //dividing loop while ( i <= b-3 ) { //finds first '\n' position = str1.find('\n', i); //finds second '\n' position2 = str1.find('\n', position+1); //determines length of number length = (position2 - position -1); //creates string with just the number in it str2 = str1.substr(position+1, length); stream.clear(); //streams string into number stream << str2; stream >> number; //checks to make sure none of the numbers are zero while (number==0) { cout << "Unpossible, Can't divide by Zero!!!"; cout << "\nTry again :"; cin >> number; } //accumulator quotient = (quotient*(1/number)); i=position2; number = 0; } // displays quotient cout << "The quotient is :" << quotient << endl; system("PAUSE"); }