Cod sursa(job #1393232)

Utilizator karlaKarla Maria karla Data 19 martie 2015 10:51:27
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <stdio.h>

using namespace std;

FILE*f=fopen("evaluare.in","r"),*g=fopen("evaluare.out","w");
int k;
char s[100100];

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

int main()
{
    fscanf(f,"%s",&s);
    k = 0;
    int sol = expresie();
    fprintf(g,"%d\n",sol);
    return 0;
}

int expresie()
{
    int r = termen();
    while(s[k] == '+' || s[k] == '-')
    {
        k++;
        if(s[k-1] == '+')
        {
            r += termen();
        }
        else{
            r -= termen();
        }
    }
    return r;
}

int termen()
{
    int r = factor();
    while(s[k] == '*' || s[k] == '/')
    {
        k++;
        if(s[k-1] == '*')
        {
            r *= factor();
        }
        else{
            r /= factor();
        }
    }
    return r;
}

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