Pagini recente » Cod sursa (job #2713708) | Cod sursa (job #2430250) | Cod sursa (job #2210838) | Cod sursa (job #1369132) | Cod sursa (job #2203262)
#include <iostream>
#include <fstream>
using namespace std;
int elvegez(char c, int a, int b)
{
switch(c)
{
case '+': return a+b;
case '-': return a-b;
case '*': return a*b;
case '/': return a/b;
}
return 0;
}
bool szamjegy(char c)
{
return c>='0'&&c<='9';
}
int kiertekel(char muvelet_sor[])
{
int i=0, szamok[50005], szi = 0;
char muveletek[50005], muvi = 0;
while(muvelet_sor[i]!='\0')
{
if(szamjegy(muvelet_sor[i]))
{
int a=0;
while(szamjegy(muvelet_sor[i]))
{
a *= 10;
a += muvelet_sor[i]-'0';
i++;
}
szamok[szi++] = a;
}
else if(muvelet_sor[i] == '+' || muvelet_sor[i] == '-')
{
while(muvi && muveletek[muvi-1]!='(')
{
szamok[szi-2] = elvegez(muveletek[muvi-1],szamok[szi-2],szamok[szi-1]);
szi--;
muvi--;
}
muveletek[muvi++] = muvelet_sor[i++];
}
else if(muvelet_sor[i] == '*' || muvelet_sor[i] == '/')
{
while(muvi && muveletek[muvi-1]!='(' && muveletek[muvi-1]!='+' && muveletek[muvi-1]!='-')
{
szamok[szi-2] = elvegez(muveletek[muvi-1],szamok[szi-2],szamok[szi-1]);
szi--;
muvi--;
}
muveletek[muvi++] = muvelet_sor[i++];
}
else if(muvelet_sor[i] == '(')
{
i++;
muveletek[muvi++] = '(';
}
else if(muvelet_sor[i] == ')')
{
i++;
while(muveletek[muvi-1] != '(')
{
szamok[szi-2] = elvegez(muveletek[muvi-1],szamok[szi-2],szamok[szi-1]);
szi--;
muvi--;
}
}
else
i++;
}
while(muvi)
{
szamok[szi-2] = elvegez(muveletek[muvi-1],szamok[szi-2],szamok[szi-1]);
szi--;
muvi--;
}
return szamok[0];
}
int main()
{
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char muvelet_sor[100005];
in.get(muvelet_sor,100005);
out << kiertekel(muvelet_sor) << '\n';
return 0;
}