Pagini recente » Cod sursa (job #3245085) | Cod sursa (job #821788) | Cod sursa (job #2226383) | Cod sursa (job #23309) | Cod sursa (job #445359)
Cod sursa(job #445359)
#include<fstream.h>
char v[100001];
int x=0, n;
double max=-2000000001;
long extrage_nr()
{
long nr=0;
while(v[x]-'0'>=0 && v[x]-'0'<10 && x<=n)
{
nr=nr*10+(int)v[x]-'0';
x++;
}
return nr;
}
double expresie()
{
double num[100];
long i, k=0, aux;
char semne[100];
while(v[x]!=')' && x<=n)
{
if(v[x]=='(')
{
x++;
num[k]=expresie();
k++;
}
else if(v[x]=='+' || v[x]=='*' || v[x]=='/' || v[x]=='-')
{
semne[k-1]=v[x];
x++;
}
else
{
num[k]=extrage_nr();
k++;
}
}
x++;
for(i=0; i<k-1; ++i)
if(semne[i]=='*' || semne[i]=='/')
{
if(semne[i]=='*')
num[i+1]*=num[i];
else
num[i+1]=num[i]/num[i+1];
num[i]=-2000000001;
}
for(i=0; i<k-1; ++i)
if(semne[i]=='+' || semne[i]=='-')
{
aux=i+1;
while(num[aux]==-2000000001)
aux++;
if(semne[i]=='-')
num[aux]=num[i]-num[aux];
else
num[aux]+=num[i];
}
/*if(num[k-1]>max)
max=num[k-1];*/
return num[k-1];
}
int main()
{
double nr;
ifstream f("evaluare.in");
f.getline(v, 100001);
n=strlen(v)-1;
nr=expresie();
/* if(nr>max)
max=nr;
*/ ofstream g("evaluare.out");
g<<nr;
g.close();
return 0;
}