Cod sursa(job #1966884)

Utilizator mateibanuBanu Matei Costin mateibanu Data 15 aprilie 2017 17:15:23
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <string.h>

using namespace std;

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

char v[100020];
int n,i;

int produs();
int numar();

int suma(){
    int p=1,s=produs();
    while (v[i]=='-'||v[i]=='+'){
        if (v[i]=='-') {p=-1;}
        else if (v[i]=='+') {p=1;}
        i++;
        s+=produs()*p;
    }
    return s;
}

int produs(){
    int p=numar();

    while (v[i]=='*'||v[i]=='/'){
        if (v[i]=='/') {i++;p/=numar();}
        else {i++;p*=numar();}
    }
    return p;
}

int numar(){
    int nr=0;
    if (v[i]=='(') {i++;nr=suma();i++;}
    else{
        while (v[i]>='0'&&v[i]<='9'){
            nr=nr*10+v[i]-'0';
            i++;
        }
    }
    return nr;
}

int main()
{
    f.read(v,100010);
    n=strlen(v);
    g<<suma();
    f.close();
    g.close();
    return 0;
}