1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Advance calculator

Discussion in 'C++' started by 2007160935, Mar 6, 2009.

  1. 2007160935

    2007160935 New Member

    Joined:
    Mar 6, 2009
    Messages:
    38
    Likes Received:
    0
    Trophy Points:
    0
    Occupation:
    ..
    Location:
    ..
    anyone can show me a codes for calculator which determines a space, a letters and symbols


    for example:
    Enter a equations:
    1+2=3
    1 + 3 = 3
    1 + b = invalid character
    1 + * = invalid character
     
  2. xpi0t0s

    xpi0t0s Mentor

    Joined:
    Aug 6, 2004
    Messages:
    3,012
    Likes Received:
    203
    Trophy Points:
    0
    Occupation:
    Senior Support Engineer
    Location:
    England
    No but I'll help you figure it out. What have you got so far and where are you stuck?
     
  3. 2007160935

    2007160935 New Member

    Joined:
    Mar 6, 2009
    Messages:
    38
    Likes Received:
    0
    Trophy Points:
    0
    Occupation:
    ..
    Location:
    ..
    what I mean is, if anyone tell me how's that? or show me the codes for better improvements


    Check this out!
    I just want to improve this codes :shy:
    Code:
    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main() {
        int  left, right;   // Operands
        char oper;          // Operator
        int  result;        // Resulting value
        
        while (cin >> left >> oper >> right) {
            switch (oper) {
                case '+': result = left + right; 
                          break;
                case '-': result = left - right; 
                          break;
                case '*': result = left * right; 
                          break;
                case '/': result = left / right; 
                          break;
                default : cout << "Bad operator '" << oper << "'" << endl;
                          continue;  // Start next loop iteration.
            }
            cout << result << endl << endl;
        }
    
        return 0;
    }
     
    Last edited by a moderator: Mar 8, 2009
  4. 2007160935

    2007160935 New Member

    Joined:
    Mar 6, 2009
    Messages:
    38
    Likes Received:
    0
    Trophy Points:
    0
    Occupation:
    ..
    Location:
    ..
    1 + 3 = 4, suck i didnt notice what im typing xD:
     
  5. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,283
    Likes Received:
    364
    Trophy Points:
    83
    There is nothing much but if you want to add some complex Bodmas calculation you would need to do a lot.
     
  6. xpi0t0s

    xpi0t0s Mentor

    Joined:
    Aug 6, 2004
    Messages:
    3,012
    Likes Received:
    203
    Trophy Points:
    0
    Occupation:
    Senior Support Engineer
    Location:
    England
    The code has very limited scope so unless you want to extend it to a full floating point expression parser (which is quite a complex beast) there's not a lot to say. You asked for comments, but leading to what? Do you just want to improve it within the limited scope of taking two integers and an operator? If so then the only thing you can really add is more operators. If you want to extend it to a full expression evaluator including order of precedence rules (e.g. 2+3*5=17, not 25) then this is typically done either using a pair of stacks, one for operators and one for numbers/variables, or by converting the expression to reverse polish notation (e.g. 2 3 5 * + gives the result 17). An RPN expression evaluator is a lot simpler to do and could be a good first step.
     

Share This Page