-2
私は以上の2つの数の計算機として機能しますC/Objective Cの中のコマンドラインアプリケーションを実装したいです。コマンドライン電卓
例えば./calc * 6 5 + 4 = 29
私はちょうど開始するアイデアや単純なアルゴリズムを必要としています。私はこれに関する助けを感謝します。
私は以上の2つの数の計算機として機能しますC/Objective Cの中のコマンドラインアプリケーションを実装したいです。コマンドライン電卓
例えば./calc * 6 5 + 4 = 29
私はちょうど開始するアイデアや単純なアルゴリズムを必要としています。私はこれに関する助けを感謝します。
したいアルゴリズムは、後置記法コンバータに中置記法です。 ここで詳細を知ることができます。
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);
}
}
ありがとうございました。私は考えを得た:) –