Pagini recente » Cod sursa (job #3231904) | Cod sursa (job #560507) | Cod sursa (job #980681) | Cod sursa (job #777471) | Cod sursa (job #1442622)
/*
* File: main.c
* Author: Razvan
*
* Created on May 25, 2015, 9:10 PM
*/
#include <stdio.h>
#include <stdlib.h>
#define FILE_IN "evaluare.in"
#define FILE_OUT "eveluare.out"
#define MAX_SIZE 100001
char S[MAX_SIZE], *p = S;
int fact(void)
{
if (*p == '(')
{
p++;
return eval();
}
int f=0;
while('0'<= *p && *p <= '9')
f = f*10 + *p++ - '0';
return f;
}
int term(void)
{
int prod = fact();
while (*p)
{
switch(*p)
{
case '*':
{
p++;
prod *= fact();
break;
}
case '/':
{
p++;
prod /= fact();
break;
}
default:
return prod;
}
}
return prod;
}
int eval(void)
{
int s = term();
while (*p)
{
switch(*p)
{
case '+':
{
p++;
s += term();
break;
}
case '-':
{
p++;
s -= term();
break;
}
default:
{
p++;
return s;
}
}
}
p++;
return s;
}
/*
*
*/
int main(int argc, char** argv) {
freopen(FILE_IN, "r", stdin);
freopen(FILE_OUT, "w", stdout);
scanf("%s", S);
printf("%d", eval());
return (EXIT_SUCCESS);
}