| | |
The Calculator
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
•
•
Join Date: May 2004
Posts: 11
Reputation:
Solved Threads: 0
Hello fellow members,
it's me again with the silly questions.
I was give a scenario to write a program for and I finished it (I think).
Although is pretty simple (first program) I had a hard time trying to assemble it.
It’s exactly as the scenario I was given ( validations, clear screen, return, etc.) apart from the page titles, headers and little visual display (for what I know), which is just something I had fun doing it.
If you run the program you are presented with two choices. Either one you choose after that you are asked to enter a number. If by mistake you enter anything else than a number the program crashes. Apart from that it works.
I was wondering maybe you know there is a way I can validate the cin choice.
I hope is not to confusing to read (man, I lost myself a few times in it).
Thanks anyway
it's me again with the silly questions.
I was give a scenario to write a program for and I finished it (I think).
Although is pretty simple (first program) I had a hard time trying to assemble it.
It’s exactly as the scenario I was given ( validations, clear screen, return, etc.) apart from the page titles, headers and little visual display (for what I know), which is just something I had fun doing it.
If you run the program you are presented with two choices. Either one you choose after that you are asked to enter a number. If by mistake you enter anything else than a number the program crashes. Apart from that it works.
I was wondering maybe you know there is a way I can validate the cin choice.
I hope is not to confusing to read (man, I lost myself a few times in it).
Thanks anyway
C++ Syntax (Toggle Plain Text)
//--------------------------------------------------------------------- // T H E C A L C U L A T O R //--------------------------------------------------------------------- #include <iostream.h> #include <iomanip.h> // contains the declarations for the data manipulators. #include <stdlib.h> // system("cls"); used for clearing the screen. void HD1(); // program front main page heading int ProcessLoop(); // processing loop. //---------------- MULTIPLICATION FUNCTION PROTOTYPE --------------------- void HD_M(); // multiplication table heading int Process_M(); // ask user for input float Calculation_M(); // compute and display result //---------------- CALCULATION FUNCTION PROTOTYPE ------------------------- void Process_C(); // Calculation Loop void Menu(); // Displays menu options. float input(); // Ask user to enter data. float Add(), Sub(); // Calculation functions. float Mul(), Div(); int Mod(); // Modulos function. void LoopBack(); // return control to function. //---------------- FRONT MAIN PAGE TITLE -------------------------------------- char PT1[] ="\n\t\t ----------------------------------------------" "\n\t\t T H E G U I L D S P R I M A R Y S C H O O L" "\n\t\t ----------------------------------------------"; char PT2[] ="\n\n\n\t\t T H E C A L C U L A T O R \n\n"; //---------------- CALCULATION PAGE TITLE ---------------------------------- char HD_C1[] = "\n\t\t\tC A L C U L A T I O N\n\n"; char HD_C2[] = "\t\t --> Only Numbers between 0 and 1000 <--\n\n\n"; //----------------- GLOBAL VARIABLES --------------------------------------- char choice1; // Multiplication Table float row, column, product; // variables. float firstNum, secondNum, result ; // Calculator char choice; // variables. //----------------- MAIN CONTROL ------------------------------------------- int main(){ ProcessLoop(); return 0; } //----------------- PROCESSING LOOP ----------------------------------------- int ProcessLoop(){ cout << PT1 << PT2 ; HD1(); while (choice1 !='C' && choice1 !='M'){ cout << "\a\n\t\tERROR...Enter (M) or (C) only: "; cin >> choice1; } if (choice1 == 'M'){ Process_M(); } else if (choice1 == 'C'){ Process_C(); } return 0; } // ---------------- PRINT PROGRAM FRONT PAGE HEADING ---------------------------------- void HD1(){ cout << "\n\n\t\tTo Create a Multiplication Table --> Enter (M)" << "\n\n\n\t\t\tTo Perform a Calculation --> Enter (C)\n" << "\n\n\n\t\tEnter M or C only: "; cin >> choice1; } //------------------------------------------------------------------------------ // MULTIPLICATION PROCESS //------------------------------------------------------------------------------ // ---------------- PRINT MULTIPLICATION TABLE FRONT PAGE ---------------------- void HD_M(){ int row, column; cout << "\n M U L T I P L I C A T I O N T A B L E\n\n"; cout << " | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20\n"; cout << " | \n"; cout << " ===============================================================\n"; for (row = 1; row <=15; row++){ cout << setw(7)<< row <<" |" ; for (column = 1; column <= 20; column++){ cout<<"__|"; } cout << "\n"; } } //----------------- INPUT DATA -------------------------------------------------- int Process_M(){ system("cls"); HD_M(); cout << "\n\tEnter Table Number reqired: "; cin >> row ; while (row < 0 || row > 20){ cout << "\a\tERROR...Enter Table Number 1 ---> 20: "; cin >> row; } system("cls"); HD_M(); cout << "\n\tEnter Lines required 1 --> 15: "; cin >> column; while (column < 0 || column > 15){ cout << "\a\tERROR...Enter Lines Number 1 ---> 15: "; cin >> column; } Calculation_M(); return 0; } //----------------- CALCULATE TABLE ------------------------------------------- float Calculation_M(){ system("cls"); char exit; // Local int i; // variables. cout << "\n\t\t\t MULTIPLICATION TABLE OF " << row <<"\n"; cout << "\t\t\t===========================\n\n"; for (i = 1; i <= column; i++){ cout <<"\t\t\t "<< setw(2) << i <<" __|" << "_____________ "; product = row * i; cout << "" << setw(3) << setprecision(6) << product <<"\n\t\t\t |\n"; } cout <<"\n\n\t\tType \'E\' to Exit or Any other Key to continue..."; cin >> exit; if (exit != 'E' && exit != 'e'){ system("cls"); Process_M(); } else{ system("cls"); ProcessLoop(); } return 0; } //------------------------------------------------------------------------------- // CALCULATION PROCESS //------------------------------------------------------------------------------- //---------------- CALCULATION LOOP ------------------------------------------- void Process_C(){ system("cls"); Menu(); while (choice != 'E' && choice != 'e'){ switch(choice) { case '+': Add(); break; case '-': Sub(); break; case '*': Mul(); break; case '/': Div(); break; default: Mod(); break; } system("cls"); Menu(); } } //--------------- DISPLAY CALCULATION MENU -------------------------------------- void Menu(){ cout << HD_C1 << endl; cout << "\t\t\t (+) <-- Addition\n\n"; cout << "\t\t\t (-) <-- Subtraction\n\n"; cout << "\t\t\t (*) <-- Multiplication\n\n"; cout << "\t\t\t (/) <-- Division\n\n"; cout << "\t\t\t (%) <-- Modulos(%)\n\n\n"; cout << "\t\t\t (E) <-- Exit\n\n"; cout << "\n\t\t\tEnter an Operator for\n"; cout << "\t\t\tthe Calculation of Your Choice: "; cin >> choice; while (choice == 'E' || choice == 'e'){ system("cls"); ProcessLoop(); } while (choice!='+' && choice!='-' && choice!='*' && choice!='/' && choice!='%'){ cout <<"\a\t\t\tERROR...enter correct sign: "; cin >> choice; } } //--------------- CALCULATION FUNCTIONS ------------------------------------------- float Add(){ system("cls"); cout << "\n\n\t\t\t\t(+)ADDITION\n\n\n"; cout << HD_C2; input(); result = firstNum + secondNum; cout << "\n\n\t\t\t"<<firstNum<<" + "<<secondNum<<" = "<<result <<endl; LoopBack(); return result; } float Sub(){ system("cls"); cout << "\n\n\t\t\t\t(-)SUBTRACTION\n\n\n"; cout << HD_C2; input(); result = firstNum - secondNum; cout << "\n\n\t\t\t"<<firstNum<<" - "<<secondNum<<" = "<<result <<endl; LoopBack(); return result; } float Mul(){ system("cls"); cout << "\n\n\t\t\t\t(*)MULTIPLICATION\n\n\n"; cout << HD_C2; input(); result = firstNum * secondNum; cout << "\n\n\t\t\t"<<firstNum<<" * "<<secondNum<<" = "<<result <<endl; LoopBack(); return result; } float Div(){ system("cls"); cout << "\n\n\t\t\t\t(/)DIVISION\n\n\n"; cout << HD_C2; input(); result = firstNum / secondNum; cout << "\n\n\t\t\t"<<firstNum<<" / "<<secondNum<<" = "<<result <<endl; LoopBack(); return result; } int Mod(){ system("cls"); cout << "\n\n\t\t\t\t(%)MODULOS\n\n\n"; cout << HD_C2; cout << "\t\t\tNote: The modulos operator (%) is used\n"; cout << "\t\t\tto calculate the remainder from\n"; cout << "\t\t\tdividing two \"integer numbers\".\n\n"; int firstNum, secondNum, result; // local variables cout << "\n\t\t\tEnter First Number: "; cin >> firstNum; cout << "\n\t\t\tEnter Second Number: "; cin >> secondNum; result = firstNum % secondNum; cout << "\n\n\t\t\t"<<firstNum<<" % "<<secondNum<<" = "<<result <<endl; LoopBack(); return result; } //-------------- INPUT DATA ---------------------------------------------------- float input(){ cout << "\n\t\t\tEnter First Number: "; cin >> firstNum; cout << "\n\t\t\tEnter Second Number: "; cin >> secondNum; while ((firstNum < 0 || firstNum > 1000)||(secondNum < 0 || secondNum > 999)){ cout << "\t\t\t\aERROR...numbers of digits exceed --> (1 - 1000)\n"; input(); } return 0; } //-------------- RETURN CONTROL TO FUNCTION -------------------------------------- void LoopBack(){ char exit; // Local variable cout <<"\n\n\n\t\tType \'E\' to Exit or Any other Key to continue..."; cin >> exit; if (exit != 'E' && exit != 'e'){ system("cls"); Process_C(); } else{ system("cls"); ProcessLoop(); } }
MSVC++
•
•
Join Date: Jun 2004
Posts: 173
Reputation:
Solved Threads: 9
the problem is caused because you are trying to store a character in a float...
you should make the input a string, so you can test the data to make sure its valid.
char crows[255];
cin >> crows;
row = atof(crows);
....
while (row < 0 || row > 20){
btw....
why are you using a float. rows are always going to be an integer... it is bad programming practice to use so many glocal variables.
atof = float, atoi = integer (stlidb.h or math.h)...
you should make the input a string, so you can test the data to make sure its valid.
char crows[255];
cin >> crows;
row = atof(crows);
....
while (row < 0 || row > 20){
btw....
why are you using a float. rows are always going to be an integer... it is bad programming practice to use so many glocal variables.
atof = float, atoi = integer (stlidb.h or math.h)...
![]() |
Similar Threads
- How to re-install software, I have lost my Calculator!! (OS X)
- Need help with commission calculator (Java)
Other Threads in the C++ Forum
- Previous Thread: regarding round robin algorithm
- Next Thread: Is C Right For Me?
| Thread Tools | Search this Thread |
api array based binary c++ c/c++ calculator char char* class classes code coding compile console conversion count database delete deploy desktop developer directshow dll download dynamic dynamiccharacterarray email encryption error file forms fstream function functions game givemetehcodez google graph gui homeworkhelp homeworkhelper iamthwee ifstream input int integer java linkedlist linker linux list loop looping loops map math matrix memory multiple news number numbertoword output parameter pointer problem program programming project python random read recursion recursive reference return rpg sorting string strings struct temperature template templates test text text-file tree unix url variable vector video visualstudio win32 windows winsock wordfrequency wxwidgets





