Cod sursa(job #1862291)

Utilizator dragos231456Neghina Dragos dragos231456 Data 29 ianuarie 2017 19:03:47
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("evaluare.in"); ofstream g("evaluare.out");
string s; int ch;
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, return rez-=factor();
        else
        {
            if(s[ch]=='+') ++ch;
            return rez+=factor();
        }
    }
}
int main()
{
    f>>s;
    s+=')';
    g<<eval();
    return 0;
}