Cod sursa(job #2421592)

Utilizator bogdan2604Bogdan Dumitrescu bogdan2604 Data 15 mai 2019 12:24:48
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.45 kb
#include <fstream>

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

char semn,semntrecut;
int rez,nr,a,inm_imp_nr,lngt,i;
string s;

int formnr()
{
    int x = 0;
    while(s[i] >= '0' && s[i] <= '9')
    {
        x = x * 10 + s[i] - '0';
        ++ i;
    }
    return x;
}

void inm_imp()
{
    semn = s[i];
    ++ i;
    inm_imp_nr = formnr();
    if(semn == '*')
        nr *= inm_imp_nr;
    else
        nr /= inm_imp_nr;
    if(s[i] == '*' || s[i] == '/')
        inm_imp();
}
void solve()
{
    semntrecut = semn = '+';
    if(s[i] == '-')
    {
        semntrecut = semn = '-';
        i = 1;
    }
    while(i < lngt)
    {
        a = nr;
        nr = 0;
        nr = formnr();
        if(s[i] == '*')
        {
            if(s[i] == '*' || s[i] == '/')
                inm_imp();
            if(semntrecut == '+')
                rez += nr;
            else
                rez -= nr;

        }
        else if(s[i] == '/')
        {
            if(s[i] == '*' || s[i] == '/')
                inm_imp();
            if(semntrecut == '+')
                rez += nr;
            else
                rez -=nr;
        }
        else if(semn == '+')
            rez += nr;
        else
            rez -= nr;
        semntrecut = semn;
        semn = s[i];
        ++ i;
    }
}

int main()
{
    f >> s;
    lngt = s.length();
    solve();
    g << rez;
}