Cod sursa(job #2272021)

Utilizator ptudortudor P ptudor Data 29 octombrie 2018 16:50:16
Problema Evaluarea unei expresii Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.71 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char c[100005];
const int A=1000000005;
stack <int> q;
int main()
{int i,nr;
    in.getline(c,100002);
    char semn='+';
    for (i=0;c[i];)
    {
        if (c[i]=='(')
        {
            q.push(A);
            i++;
        }
       else if (c[i]=='-')
        {
            semn='-';
            i++;
        }
       else if (c[i]=='+')
        {
            semn='+';
            i++;
        }
       else if (c[i]=='*')
        {
            semn='*';
            i++;
        }
       else if (c[i]=='/')
        {
            semn='/';
            i++;
        }
       else if (c[i]>='0'&&c[i]<='9')
        {
            nr=0;
            while (c[i]>='0'&&c[i]<='9')
            {
                nr=nr*10+c[i]-'0';
                i++;
            }
            if (semn=='*')
            {
                nr*=q.top();
                q.pop();
                q.push(nr);
            }
          else  if (semn=='/')
            {
                nr=q.top()/nr;
                q.pop();
                q.push(nr);
            }
            else if (semn=='+')q.push(nr);
            else  if (semn=='-')q.push(-1*nr);
            semn='+';
        }
        else if (c[i]==')')
        {
            nr=0;
            while (q.top()!=A)
            {
                nr+=q.top();
                q.pop();
            }
            q.pop();
            q.push(nr);
            i++;
        }
    }
    nr=0;
    while (!q.empty())
    {
        nr+=q.top();
        q.pop();
    }
    out<<nr<<"\n";
    out.close();
    in.close();
    return 0;
}