Pagini recente » Cod sursa (job #2106986) | Cod sursa (job #2351060) | Cod sursa (job #2422359) | Cod sursa (job #4172) | Cod sursa (job #1750617)
#include <fstream>
#define MAX_LEN 100001
using namespace std;
void ReadInput(char* string);
int eval(char **current);
int termen(char **current);
int factor(char **current);
int main()
{
char string[100001];
char* p = string;
ReadInput(string);
int result = eval(&p);
ofstream fout;
fout.open("evaluare.out");
fout << result;
return 0;
}
void ReadInput(char* string)
{
ifstream fin;
fin.open("evaluare.in");
fin >> string;
fin.close();
}
int eval(char **current)
{
int result = termen(current);
while(**current == '+' || **current == '-')
{
switch(**current)
{
case '+' :
(*current)++;
result += termen(current);
break;
case '-':
(*current)++;
result -= termen(current);
break;
default :
exit(1);
}
}
return result;
}
int termen(char **current)
{
int result = factor(current);
while(**current == '*' || **current == '/')
{
switch(**current)
{
case '*' :
(*current)++;
result *= factor(current);
break;
case '/':
(*current)++;
result /= factor(current);
break;
default :
exit(1);
}
}
return result;
}
int factor(char **current)
{
int result = 0;
if(**current == '(')
{
(*current)++;
result = eval(current);
(*current)++;
}
else
{
while(**current >= '0' && **current <= '9')
{
result = result * 10 + (**current - '0');
(*current)++;
}
}
return result;
}