2016-04-09 1 views
-2

Я хочу реализовать приложение командной строки в C/Objective C, которое будет действовать как калькулятор из более чем двух чисел.Калькулятор командной строки в Objective C

./calc например 5 + 4 * 6 = 29

Я просто нужна идея или простой алгоритм, чтобы начать. Я буду признателен за любую помощь в этом.

ответ

2

Алгоритм, который вы хотите, представляет собой инфиксную нотацию для постфиксного конвертера нотации. Вы можете найти более подробную информацию об этом здесь.

http://scriptasylum.com/tutorials/infix_postfix/algorithms/infix-postfix/index.htm.

EDIT: Я не уверен, что это поможет, но вот реализация на Java. Я не знаком с Objective-C

// converts a infix string to postfix string 
private void convertInfixToPostfix(){ 
    // create an empty operand stack 
    operatorStack = new Stack<>(); 
    Operator operator = null; 
    Operand operand = null; 
    for(int i = 0; i < expressionTokens.size(); i++){ 
     String token = expressionTokens.get(i); 
     Element element = new Element(token); 

     if(element.isOperand(token)){ // check if element is operand 
      // add the element to the postfix string 
      operand = new Operand(element.getStringValue()); 
      postFixString.add(operand); 
     } 
     else if(operatorStack.isEmpty()){ 
      // push the token to the operator stack, its an operator 
      operator = new Operator(element.getStringValue()); 
      operatorStack.push(operator); 
     } 
     else { 
      operator = new Operator(element.getStringValue()); 
      while(!operatorStack.isEmpty() && 
        (operatorStack.peek().getPrecedence() 
        <= operator.getPrecedence()))  
       postFixString.add(operatorStack.pop()); 

      operatorStack.push(operator); 
     } 
    } 

    // add the rest of the operator stack to the postfix string 
    while(!operatorStack.isEmpty()){ 
     Operator remainingOperator = operatorStack.pop(); 
     postFixString.add(remainingOperator); 
    } 
} 
+0

Спасибо. У меня появилась идея :) –

 Смежные вопросы

  • Нет связанных вопросов^_^