Cod sursa(job #1118356)

Utilizator NacuCristianCristian Nacu NacuCristian Data 24 februarie 2014 10:28:53
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <stdio.h>
#include <string.h>


using namespace std;

char s[100010];

void citire()
{
    FILE *f1 = fopen("evaluare.in","r");
    fscanf(f1,"%s",s);

}

int i=0;
int nr,tot;
int termen();
int factor();



int exp()
{
    int v=termen();
    while(s[i]=='+' || s[i]=='-')
        {
            if(s[i]=='+')
                i++,v+=termen();
            else
                i++,v-=termen();
        }
        return v;
}

int termen()
{
    int v=factor();
    while(s[i]=='*' || s[i]=='/')
        {
            if(s[i]=='*')
                {i++;v*=factor();}
            else
               {
                i++;
                v/=factor();
               }
        }

    return v;

}

int factor()
{
    int v=0;
    if(s[i]=='(')
       {
           i++;
           v=exp();
           i++;
       }
    else
        while(isdigit(s[i]))
            v=v*10+s[i++]-'0';

    return v;

}



int main()
{
    FILE *f1 = fopen("evaluare.out","w");
    citire();
    int x = exp();
    fprintf(f1,"%d",x);
    return 0;
}