SRM 200 DIV 2 (250)
Programming/SRM Practice 2009. 5. 26. 17:05문제 요약 : 연산자 우선순위에 구애받지 말고
0~9까지의 숫자와 +,-,* 연산자를 String형으로 입력받아 계산하여라.
#include <iostream>
#include <string>
using namespace std;
class NoOrderOfOperations
{
public:
int evaluate(string expr);
};
int NoOrderOfOperations::evaluate(string expr)
{
int n = 0, res = 0;
int flag = 0;
char op;
int i = 0;
while(expr[i])
{
if( '0' <= expr[i] && expr[i] <= '9' )
{
if(i == 0) res = atoi(&expr[i]);
if(flag == 1)
{
n = atoi(&expr[i]);
switch(op)
{
case '+':
res += n;
break;
case '-':
res -= n;
break;
case '*':
res *= n;
break;
default:
break;
}
flag = 0;
}
}
else if(flag == 0)
{
op = expr[i];
flag = 1;
}
i++;
}
return res;
}
'Programming > SRM Practice' 카테고리의 다른 글
SRM 370 DIV 2 (250) (0) | 2009.05.26 |
---|---|
SRM 205 DIV 2 (250) (0) | 2009.05.26 |
SRM 197 DIV 2 (250) (0) | 2009.05.26 |
SRM 145 DIV 2 (250) (0) | 2009.05.26 |
SRM 144 DIV 2 (200) (0) | 2009.05.26 |