Cod sursa(job #852117)

Utilizator andreii1Ilie Andrei andreii1 Data 10 ianuarie 2013 21:19:44
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
#include <string.h>
using namespace std;
int p=0,n;
char s[100001];
int parant();
int prod();
int adun();

int main()
{
    FILE *f=fopen("evaluare.in","r");
    FILE *g=fopen("evaluare.out","w");
    fscanf(f,"%s",s);
    n=strlen(s)-1;
    while(s[n]=='\n')s[n--]=NULL;
    fprintf(g,"%d",adun());
    fclose(f);
    fclose(g);
    return 0;
}

int adun()
{
    int r=prod();
    while(s[p]=='-'||s[p]=='+')
    if(s[p]=='+')
    {
        p++;
        r+=prod();
    }
    else {p++;r-=prod();}
    return r;
}

int prod()
{
    int r=parant();
    while(s[p]=='/'||s[p]=='*')
    if(s[p]=='*'){p++;r*=parant();}
    else {p++;r/=parant();}
    return r;
}

int parant()
{
    int r=0;
    if(s[p]=='(')
       {
           p++;
           r=adun();
           p++;
       }
       else while(s[p]>='0'&&s[p]<='9')
       {
           r*=10;
           r+=s[p]-'0';
           p++;
       }
    return r;
}