Pagini recente » Cod sursa (job #291529) | Cod sursa (job #2347587) | Cod sursa (job #1715011) | Cod sursa (job #2534195) | Cod sursa (job #2819509)
#include <stdio.h>
#include <stdlib.h>
//recursivitate mutuala
int expression(char *p, int *i)
{
int rez = term(p,i);
while(p[*i]=='+' || p[*i]=='-')
{
if(p[*i]=='+')
{
(*i)++;
rez += term(p,i);
}
if(p[*i]=='-')
{
(*i)++;
rez -= term(p,i);
}
}
return rez;
}
int term(char *p, int *i)
{
int rez = factor(p,i);
while(p[*i]=='*' || p[*i]=='/')
{
if(p[*i]=='*')
{
(*i)++;
rez *= factor(p,i);
}
if(p[*i]=='/')
{
(*i)++;
rez /= factor(p,i);
}
}
return rez;
}
int factor(char *p, int *i)
{
int nr = 0;
if(p[*i]=='(')
{
(*i)++;
nr=expression(p,i);
(*i)++;
return nr;
}
while(p[*i]>='0' && p[*i]<='9')
{
nr = nr*10 + p[*i]-'0';
(*i)++;
}
return nr;
}
int main()
{
FILE* in = fopen("evaluare.in", "r");
FILE* out = fopen("evaluare.out", "w");
char s[100005];
char *p;
int i = 0;
fscanf(in,"%s", s);
p = s;
fprintf(out,"%d\n", expression(p, &i));
return 0;
}