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,009
    Likes Received:
    203
    Trophy Points:
    63
    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,375
    Likes Received:
    388
    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,009
    Likes Received:
    203
    Trophy Points:
    63
    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

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice