Pagini recente » Cod sursa (job #562275) | Cod sursa (job #2401101) | Cod sursa (job #1356226) | Cod sursa (job #2169807) | Cod sursa (job #1256856)
#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;
}