Cod sursa(job #1839798)

Utilizator medicinedoctoralexandru medicinedoctor Data 3 ianuarie 2017 14:32:21
Problema Evaluarea unei expresii Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>

using namespace std;

ifstream cin("evaluare.in");
ofstream cout("evaluare.out");

string s;
int p=0;

double ev(); //evaluare
double fact(); //factor
double term(); //termen

double ev()
{
    double r=fact();
    while (p<s.size() && (s[p]=='-' || s[p]=='+'))
        p++,(s[p-1]=='+')? r+=fact(): r-=fact();
    return r;
}

double fact()
{
    double r=term();
    while (p<s.size() && (s[p]=='*' || s[p]=='/'))
        p++,(s[p-1]=='*') ? r*=term() : r/=term();
    return r;
}

double term()
{
    double r=0;
    if (s[p]=='(') p++,r=ev(),p++;
    else
        while (p<s.size() && s[p]<='9' && s[p]>='0')
            r=r*10+s[p]-'0',p++;
    return r;
}

main()
{
    cin >> s;
    cout << ev();
}