Pagini recente » Cod sursa (job #2476525) | tp_sim | Cod sursa (job #2355464) | Cod sursa (job #1953090) | Cod sursa (job #1909541)
/*#include <bits/stdc++.h>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
char *sir=new char[100002];
double termen();
double factor();
double eval(){
double r=termen();
while(*sir=='+' || *sir =='-'){
switch(*sir){
case '+':
sir++;
r+=termen();
break;
case '-':
sir++;
r-=termen();
break;
}
}
return r;
}
double termen(){
double r=factor();
while(*sir=='*' || *sir =='/'){
switch(*sir){
case '*':
sir++;
r*=factor();
break;
case '/':
sir++;
r/=factor();
break;
}
}
return r;
}
double factor(){
double r=0;
if(*sir=='('){
sir++;
r=eval();
sir++;
}
else {
while(*sir>='0' && *sir<='9')
r=r*10+*(sir++)-'0';
}
return r;
}
int main()
{
fin.get(sir,100002);
fout<<eval();
return 0;
}
*/
#include <bits/stdc++.h>
#define H 2
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
char *sir=new char[100002];
char *sirh[3]={"+-","*/",""};
long long result(long long x, long long y, char z){
switch(z){
case '+':return x+y;
case '-':return x-y;
case '*':return x*y;
case '/':return x/y;
}
}
long long eval(int h){
long long r=0,y;
if(h==H){
if(*sir=='('){
sir++;
r=eval(0);
sir++;
}
else{
while(*sir >='0' && *sir<='9')
r=r*10+*sir++-'0';
}
}
else{
for(r=eval(h+1);strchr(sirh[h],*sir) && *sir;)
r=result(r,eval(h+1),*sir++);
}
return r;
}
int main()
{
fin.get(sir,100002);
fout<<eval(0);
return 0;
}