Pagini recente » Cod sursa (job #1306524) | Cod sursa (job #2943598) | Cod sursa (job #754441) | Cod sursa (job #2449405) | Cod sursa (job #724855)
Cod sursa(job #724855)
#include <fstream>
#include <iostream>
using namespace std;
typedef long long LL;
LL eval();
LL prod();
LL numar();
ifstream fin("evaluare.in");
char elem;
void ScriereFisier(LL rez)
{
ofstream fout("evaluare.out");
fout << rez;
fout.close();
}
LL eval()
{
LL rez = prod();
while( elem == '+' || elem == '-')
{
if (elem == '+')
{
fin >> elem;
rez = rez + prod();
}
if (elem == '-')
{
fin >> elem;
rez = rez - prod();
}
}
return rez;
}
LL prod()
{
LL rez = numar();
while (elem == '*' || elem == '/')
{
if (elem == '*')
{
fin >> elem;
rez = rez * numar();
}
if (elem == '/')
{
fin >> elem;
rez = rez / numar();
}
}
return rez;
}
LL numar()
{
LL rez = 0;
if (elem == '(')
{
fin >> elem;
rez = eval();
fin >> elem;
}
else
{
while (elem >= '0' && elem <= '9' && !fin.eof())
{
rez = rez * 10 + (elem - '0');
fin >> elem;
}
}
return rez;
}
int main()
{
LL rez;
fin >> elem;
rez = eval();
ScriereFisier(rez);
return 0;
}