Pagini recente » Istoria paginii runda/qwertyu/clasament | Cod sursa (job #1528984) | Istoria paginii utilizator/manuel_estiarte | Cod sursa (job #406467) | Cod sursa (job #2355755)
// Evaluarea unei expresii.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
//#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char *p;
char op[4][4] = { "+-", "*/", "^", "" };
constexpr auto LMAX = 2;
struct arbore
{
char car;
arbore *st, *dr;
}rad;
arbore* creeare(char c)
{
arbore* nou = new arbore;
nou->car = c;
return nou;
}
int eval(int a, int b, char o) {
switch (o) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return a / b;
}
}
int expr(int lev) {
int x, y;
if (lev == LMAX)
if (*p == '(')
++p, x = expr(0), ++p;
else
for (x = 0; *p >= '0' && *p <= '9'; ++p)
x = x * 10 + *p - '0';
else
for (x = expr(lev + 1); strchr(op[lev], *p); x = y)
y = eval(x, expr(lev + 1), *p++);
return x;
}
int main()
{
char sir[100000];
fin >> sir;
p = sir;
fout << expr(0);
return 0;
}