Cod sursa(job #1256856)

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

using namespace std;

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

double expresie();

double factor(){

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

}


double termen(){

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

    return semis;
}

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

    return suma;
}

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

    fout<<expresie();

    return 0;
}