Pagini recente » Cod sursa (job #2437608) | Cod sursa (job #1827887) | Cod sursa (job #696801) | Cod sursa (job #2873763) | Cod sursa (job #1000674)
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
#define NMAX 100001
class Expresie {
public :
char c[NMAX],*p;
Expresie ();
long double evalueaza();
long double termen();
long double factor();
};
Expresie :: Expresie ()
{
p=c;
}
long double Expresie :: evalueaza()
{
long double r;
r=termen();
while(*p=='+' || *p=='-')
if(*p=='+') {
p++;
r=r+termen();
}
else {
p++;
r=r-termen();
}
return r;
}
long double Expresie :: termen()
{
long double r;
r=factor();
while(*p=='*' || *p=='/')
if(*p=='*') {
p++;
r=r*factor();
}
else {
p++;
r=(int)(r/factor());
}
return r;
}
long double Expresie :: factor()
{
long double r;
if(*p=='(') {
++p;
r=evalueaza();
++p;
}
else {
r=0;
while(*p>='0' && *p<='9') {
r=r*10+(*p)-'0';
p++;
}
}
return r;
}
int main ()
{
Expresie S;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f>>S.c;
f.close();
g<<S.evalueaza();
g.close();
return 0;
}