Pagini recente » Cod sursa (job #1611324) | Cod sursa (job #1857472) | Cod sursa (job #2767360) | Cod sursa (job #3168372) | Cod sursa (job #584508)
Cod sursa(job #584508)
#include<fstream>
#include<string.h>
#define dim 100005
using namespace std;
struct
{char ns; int v;} ts[dim];
char e[dim];
int i, lg;
void citire();
int evalex();
int evalfact();
int evaltermen();
int main()
{ ofstream g("evaluare.out");
citire();
g<<evalex();
g<<"\n";
g.close();
return 0;
}
void citire()
{
//FILE *f=fopen("extresie.in","r"), *g=fopen("expresie.out","w");
ifstream f("evaluare.in");
int nrs=0;
f.getline(e,dim);
lg=strlen(e);
while(!f.eof())
{f>>ts[nrs].ns>>ts[nrs].v;
nrs++;}
f.close();
}
int eval(char c)
{int k;
if(c>='0'&&c<='9') return c-'0';
for( k=0;ts[k].ns!=c;k++);
return ts[k].v;
}
int evalfact()
{
int fin;
if(e[i]=='(')
{
i++;
fin=evalex();
i++;}
else
{
fin=eval(e[i]);
i++;}
return fin;
}
int evaltermen()
{
int fin=evalfact();
while((i<lg)&&(e[i]=='*'))
{
i++;
fin*=evalfact();
}
return fin;
}
int evalex()
{
int t=evaltermen();
while(i<lg&&e[i]=='+')
{
i++;
t+=evaltermen();
}
return t;
}