Cod sursa(job #1779433)

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

using namespace std;

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

char s[1000001];
char s1[100001];
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;
}