Cod sursa(job #1134312)

Utilizator lehman97Dimulescu David lehman97 Data 6 martie 2014 12:59:26
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.22 kb
#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;

FILE *f=fopen("evaluare.in","r");
FILE *g=fopen("evaluare.out","w");



char s[100001];
int op,p,nr,w[100005];


int termen();
int expresie();
int factor();

int main()
{
    fgets(s,100001,f);
    strcpy(s+strlen(s)-1,s+strlen(s));
    p=0;
    fprintf(g,"%d",termen());
    return 0;
}
int termen()
{
    int rez=factor();
    while(s[p]=='+' || s[p]=='-')
    {
        if(s[p]=='+')
          {

            p++;
            rez+=factor();
          }else
          {
            p++;
            rez-=factor();

          }
    }
    return rez;
}
int factor()
{
    int rez=expresie();
    while(s[p]=='/' || s[p]=='*')
    {
        if(s[p]=='*')
          {

            p++;
            rez*=expresie();
          }else
          {
            p++;
            rez/=expresie();

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