Cod sursa(job #2523201)

Utilizator RadianElevenAdrian Ariotn RadianEleven Data 13 ianuarie 2020 20:31:48
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f ("evaluare.in");
ofstream g ("evaluare.out");
char s[100002];

char *t=s;
int getnr()
{
    //cout<<4;
    int nr=0;
    while(*t>='0' && *t<='9')
    {
        nr*=10;
        nr+=*t-'0';
        ++t;
    }
  //  cout<<nr<<"n ";
    return nr;
}
int prod();
int parant();
int sum()
{
    int r=prod();
//cout<<r<<" ";
    while(*t=='+' || *t=='-')
    {
        if(*t=='+')
        {
             ++t;
             r+=prod();
        }

        else
        {
             ++t;
             r-=prod();
        }

    }

    return r;
}
int prod()
{
    int r=parant();
//cout<<r<<" ";
    while(*t=='*' || *t=='/')
    {
        if(*t=='*')
        {

           ++t;
           r*=parant();
        }

        else {
            ++t;
            r/=parant();
        }

    }

    return r;
}
int parant()
{
    int r=0;
//cout<<r<<" ";
    if(*t=='(')
    {
       ++t;
       r= sum();
            ++t;
    }

    else r= getnr();


    return r;
}

int main()
{
    f>>s;
    g<<sum();
    return 0;
}