SRM 200 DIV 2 (250)

Programming/SRM Practice 2009. 5. 26. 17:05
SRM 200 DIV 2 (250)
문제 요약 : 연산자 우선순위에 구애받지 말고
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
: