Cod sursa(job #2041207)

Utilizator mihnea00Duican Mihnea mihnea00 Data 16 octombrie 2017 22:18:28
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.29 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

int a,i;
char sir[100010];

int fctplus();
int fctminus();
int fctori();
int fctsupra();
int rezultat();

int fctplus()
{
    int termen=fctminus();
    if(sir[i]=='+')
    {
        ++i;
        termen+=fctminus();
    }
    return termen;
}

int fctminus()
{
    int termen=fctori();
    if(sir[i]=='-')
    {
        ++i;
        termen-=fctori();
    }
    return termen;
}

int fctori()
{
    int termen=fctsupra();
    if(sir[i]=='*')
    {
        ++i;
        termen*=fctsupra();
    }
    return termen;
}

int fctsupra()
{
    int termen=rezultat();
    if(sir[i]=='/')
    {
        ++i;
        termen/=rezultat();
    }
    return termen;
}

int rezultat()
{
    int termen=0;

    if(sir[i]=='(')
    {
        ++i;
        termen=fctplus();
        ++i;
    }
    else
    {
        while(sir[i]>='0' && sir[i]<='9')
        {
            termen=termen*10+sir[i]-'0';
            ++i;
        }

    }
    return termen;


}

int main()
{
    fin.getline(sir,100010);
    i=0;
    fout<<fctplus();

    //for(i=1;i<=strlen(sir);++i)
        //fout<<int(sir[i])<<"\n";

    return 0;
}