Cod sursa(job #1838766)

Utilizator Bodo171Bogdan Pop Bodo171 Data 1 ianuarie 2017 18:46:32
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
using namespace std;
string s;
int ch=0;
int eval();
int termen()
{
    int num=0;
    if(s[ch]=='(') {ch++;return eval();}
    while(s[ch]>='0'&&s[ch]<='9')
        {num=num*10+s[ch]-'0';ch++;}
    return num;
}
int factor()
{
    int x=termen();
    while(true)
    {
        if(s[ch]=='*') {ch++;x*=termen();}
        else
        {
            if(s[ch]=='/') {ch++;x/=termen();}
            else return x;
        }
    }
}
int eval()
{
    int rez=0;
    while(true)
    {
     if(s[ch]==')') {ch++;return rez;}
     if(s[ch]=='-') {ch++;rez-=factor();}
     else {if(s[ch]=='+')ch++;rez+=factor();}
    }
}
int main()
{
    ifstream f("evaluare.in");
    ofstream g("evaluare.out");
    f>>s;
    s+=')';
    g<<eval();
    return 0;
}