Cod sursa(job #1050941)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 9 decembrie 2013 14:43:58
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.5 kb
#include <stream>
#include<string.h>
using namespace std;
char s[100001],a[100001];
int b[100001],vf1,vf2,nr,ok,i,pr[256];
void calcul(){
    char ch;
    int rez;
    ch=a[vf1];
    switch(ch){
        '+':rez=b[vf2-1]+b[vf2];break;
        '-':rez=b[vf2-1]-b[vf2];break;
        '*':rez=b[vf2-1]*b[vf2];break;
        '/':rez=b[vf2-1]/b[vf2];break;
    }
    vf2--;
    vf1--;
    b[vf2]=rez;
}
int main()
{
    s>>s;
    pr['(']=1;
    pr['+']=pr['-']=2;
    pr['*']=pr['/']=3;
    nr=0;
    ok=0;
    n=strlen[s];
    for(i=0;i<=n;i++){
        if(s[i]=='('){
            vf1++;
            a[vf1]=v[i];
        }
        else
            if(s[i]=')'){
                if(ok==1){
                    vf2++;
                    b[vf2]=nr;
                    nr=ok=0;
                }
                while(a[vf1]!='('){
                      calcul();
                }
                vf1--;
            }
            else{
                if(s[i]>='0'&&s[i]<='9'){
                    ok=1;
                    nr=nr*10+s[i];
                }
                else{
                    if(ok==1){
                    vf2++;
                    b[vf2]=nr;
                    nr=ok=0;
                    }
                    while(vf1>0&&pr[a[i]]<pr[a[vf1]])
                        calcul();
                    vf1++;
                    a[vf1]=s[i];
                }
            }
    }
    while(vf1>0)
        calcul();
    g<<b[1];
    return 0;
}