Pagini recente » Cod sursa (job #1335218) | Cod sursa (job #1125678) | Cod sursa (job #1520075) | Cod sursa (job #2821224) | Cod sursa (job #1806551)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <cstring>
#include <ctype.h>
using namespace std;
int p = 0;
char s[100001];
int termen(void);
int factor(void);
int expresie(void);
int termen()
{
int rez = factor();
while(s[p] == '*' || s[p] == '/')
{
if(s[p] == '*')
{
p++;
rez*=factor();
}
else
{
p++;
rez/=factor();
}
}
return rez;
}
int expresie()
{
int sum = termen();
while(s[p] == '+' || s[p] == '-')
{
if(s[p] == '+')
{
p++;
sum+=termen();
}
else
{
p++;
sum-=termen();
}
}
return sum;
}
int factor()
{
int semn = 1;
int rez = 0;
while(s[p] == '-')
{
p++;
semn *= -1;
}
if(s[p] == '(')
{
p++;
rez = expresie();
p++;
return rez*semn;
}
while(isdigit(s[p]))
{
rez = rez*10 + (s[p] -'0');
p++;
}
return semn*rez;
}
int main()
{
FILE * fp;
fp = fopen("evaluare.in","r");
fgets(s,100001,fp);
int a = expresie();
printf("%i",a);
fclose(fp);
fp = fopen("evaluare.out","w");
fprintf(fp,"%i",a);
fclose(fp);
return 0;
}