Cod sursa(job #1076732)

Utilizator teodor98Teodor Sz teodor98 Data 10 ianuarie 2014 15:19:45
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include <iostream>
#define N 100
using namespace std;

char s[N];
int p;
int expresie();
int termen();
int factor();
int expresie()
{
    int sum = termen();
   // cout << p << endl;
    while(s[p] == '+' || s[p] == '-')
    {
     //       cout << s[p];

            if((s[p]) == '+')
            {
                p++;
                sum += termen();

            }
        else
            {
                p++;
                sum-=termen();
            }
    }
    //cout << sum << endl;
    return sum;
}
int termen()
{
    int prod = factor();
    while(s[p] == '*' || s[p] == '/')
        {
            if(s[p] == '*')
                {
                    p++;
                    prod *= factor();
                }
                else
                {
                    p++;
                    prod /= factor();
                }

        }
    return prod;
}
int factor()
{
    int semn =1,val=0;
    while(s[p] == '-')
    {
        semn = -semn;
        p++;
    }
    if(s[p] == '(')
       {
           p++;
           val = expresie();
           p++;
           return semn*val;
       }
    while(s[p] >='0' && s[p] <= '9')
        val = val*10 + (s[p++] - '0');
    return semn*val;
}
int main()
{
    cin >> s;
    cout << expresie();
   // cout << "Hello world!" << endl;
    return 0;
}