Cod sursa(job #1898645)

Utilizator XDDDDariusPetean Darius XDDDDarius Data 2 martie 2017 10:20:57
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;
typedef long l;

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

char s[100005];
l p,inmultire_imparitre(),paranteze();
///in loc sa fac cu indice care marcheaza unde sunt si sa pun un for in main
l rez()///evaluare solutiei , care merge prin recursivitate ,imparte ecuatia in mai multe ecuatii mai mici
{
    l r = inmultire_imparitre();
    while ( s[p]=='+' || s[p]=='-' )
    {
        if(s[p]=='+')
        {
            p++;
            r+=inmultire_imparitre();
        }
        else if(s[p]=='-')
        {
            p++;
            r-=inmultire_imparitre();
        }
    }
    return r;
}

l inmultire_imparitre()
{
    l r = paranteze();
    while ( s[p]=='*' || s[p]=='/' )
    {
        if(s[p]=='*')
        {
            p++;
            r*=paranteze();
        }
        else if(s[p]=='/')
        {
            p++;
            r/=paranteze();
        }
    }
    return r;
}

l paranteze()
{
    l r=0;
    if(s[p]=='(')
    {
        p++;
        r=rez();
        p++;
    }
    else {
        while ( s[p]>='0' && s[p]<='9' )
        {
            r = r*10 + s[p] - '0';
            p++;
        }
    }
    return r;
}

int main() {
    f>>s;
    o<<rez();
    return 0;
}