2016-04-09 13 views
-2

私は以上の2つの数の計算機として機能しますC/Objective Cの中のコマンドラインアプリケーションを実装したいです。コマンドライン電卓

例えば./calc * 6 5 + 4 = 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

ありがとうございました。私は考えを得た:) –