Mai intai trebuie sa te autentifici.
Cod sursa(job #2824605)
Utilizator | Data | 2 ianuarie 2022 19:20:26 | |
---|---|---|---|
Problema | Evaluarea unei expresii | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 1.14 kb |
#include <fstream>
#include <cstring>
#define DIM 100001
char s[DIM];
int i = 0;
int expresion();
int term();
int factor();
int expresion()
{
int r = term();
while (s[i] == '+' || s[i] == '-')
{
if (s[i] == '+')
{
i++;
r += term();
}
else
{
i++;
r -= term();
}
}
return r;
}
int term()
{
int r = factor();
while (s[i] == '*' || s[i] == '/')
{
if (s[i] == '*')
{
i++;
r *= factor();
}
else
{
i++;
r /= factor();
}
}
return r;
}
int factor()
{
int r{};
if (s[i] == '(')
{
i++;
r = expresion();
i++;
}
else
{
while (s[i] >= '0' && s[i] <= '9')
{
r = r * 10 + (s[i] - '0');
i++;
}
}
return r;
}
int main()
{
std::ifstream fin("evaluare.in");
std::ofstream fout("evaluare.out");
fin.get(s, DIM);
fout << expresion();
return 0;
}