Cod sursa(job #1076737)

Utilizator teodor98Teodor Sz teodor98 Data 10 ianuarie 2014 15:23:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.36 kb
#include <fstream>
const int N = 100000;
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
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()
{
    in >> s;
    out << expresie();
   // cout << "Hello world!" << endl;
    return 0;
}