Cod sursa(job #1256866)

Utilizator andrei_bB. Andrei andrei_b Data 6 noiembrie 2014 22:47:21
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.48 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i;
bool orim1;
double x,suma,semis,numar;
char a[100001],b[100001];

double expresie();

double factor(){

    if ( a[i]=='(' )
    {
        ++i;
        int h = expresie();
        ++i;
        return h;
    }
    else
    {
        orim1=false;
        if ( a[i]=='-' )
        {
            orim1 = true;
            i++;
        }
        numar=0;
        while ( a[i]>='0' && a[i]<='9' )
        {
            numar=numar*10+(a[i]-'0');
            i++;
        }
        if ( orim1 )
        {
            numar=0-numar;
        }
        return numar;
    }

}


double termen(){

    semis=factor();
    while ( a[i]=='*' || a[i]=='/' )
    {
        if ( a[i]=='*' )
        {
            i+=1;
            semis*=factor();
        }
        if ( a[i]=='/' )
        {
            i+=1;
            semis/=factor();
        }
    }

    return semis;
}

double expresie () {
    suma=termen();
    while ( a[i] == '+' || a[i] == '-' )
    {

        if ( a[i]=='+' )
        {
            i+=1;
            suma+=termen();
        }
        if ( a[i]=='-' )
        {
            i+=1;
            suma-=termen();
        }
    }

    return suma;
}

int main()
{
    fin.getline( a, 100000 );
    x=strlen(a);
    i = 0;

    fout<<expresie();

    return 0;
}