Cod sursa(job #2089305)

Utilizator aturcsaTurcsa Alexandru aturcsa Data 16 decembrie 2017 12:33:15
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include <fstream>
#include <string>
#include <stack>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

stack <int>S;
string A;
int ecif(int ind)
///digit in caiet
{
    if('0'<=A[ind]&&A[ind]<='9')
        return 1;
    else
        return 0;
}
int eadun(int ind)
///is_op1 in caiet adica + si -
{
    if(A[ind]=='+'||A[ind]=='-')
        return 1;
    else
    return 0;
}
int einmul(int ind)
/// is_op2 in caiet adica * si /
{
    if(A[ind]=='*'||A[ind]=='/')
        return 1;
    else
    return 0;
}
int nr(int &ind)
///factor in caiet
{
    int r=0;
    while(ind<=A.size() && ecif(ind))
    {
        r=r*10+A[ind]-'0';
        ind++;
    }
    return r;
}
int termen(int &ind)
///ca in caiet
{
    int p=nr(ind);
    while (ind<=A.size()&&einmul(ind))
    {
        if(A[ind]=='*')
            p*=nr(++ind);
        else
            p/=nr(++ind);
    }
    return p;
}
int adunare(int &ind)
{
    int a=termen(ind);
    while(ind<=A.size()&&eadun(ind))
    {
        if(A[ind]=='+')
            a+=termen(++ind);
        else
            a-=termen(++ind);
    }
    return a;
}
//int paranteze(int &ind)
//{
//    int j=
//}
int main()
{
    fin>>A;
    int i=0;
    fout<<adunare(i);
    return 0;
}