Cod sursa(job #1779435)

Utilizator UrsuDanUrsu Dan UrsuDan Data 15 octombrie 2016 12:26:27
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

ifstream in ("evaluare.in");
ofstream out ("evaluare.out");

char s[100050];
int poz=0;
int expresie();
int factor();
int termen();
int numar();

int numar()
{
    int nr=0;
    while(s[poz]<='9' && s[poz]>='0')
    {
        nr=nr*10+s[poz]-'0';
        poz++;
    }
    return nr;
}

int factor()
{
    int ans=0;
    if(s[poz]=='(')
    {
        poz++;
        ans=expresie();
        poz++;
    }
    else
        ans=numar();
    return ans;
}

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

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

int main()
{
    int n;
    in>>s;
    out<<expresie();
    return 0;
}