Pagini recente » Cod sursa (job #1325102) | Cod sursa (job #1094427) | Cod sursa (job #3218512) | Cod sursa (job #1791577) | Cod sursa (job #1256863)
#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[100001],b[100001];
double expresie();
double factor(){
if ( a[i]=='(' )
{
++i;
int h = expresie();
++i;
return h;
}
else
{
numar=0;
while ( a[i]>='0' && a[i]<='9' )
{
numar=numar*10+(a[i]-'0');
i++;
}
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;
}