Cod sursa(job #1159928)

Utilizator Mihai_ChihaiMihai Chihai Mihai_Chihai Data 29 martie 2014 23:09:58
Problema Evaluarea unei expresii Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include<fstream>
#include<cstring>
using namespace std;

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

unsigned char s[100005],i;
int termen();
int factor();


int eval()
{
    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=eval(); i++;}
     else {
        while (s[i]>='0' && s[i]<='9') {
                v=v*10+(int)(s[i]-'0');

                i++;}
};

return v;
};

int main()
{
    fin>>s;
    //strcat(s[],"#");
    i=0;
    fout<<eval();
    fin.close();
    fout.close();

}