0
私は抽象データ型を使って以前とは違った式ツリーを評価しています。マップ関数を正確に使う方法がわかりません。std :: mapを使って式ツリーを評価する
わかりましたので、この機能
int arithmetic_expression::evaluate_Expression(std::map< std::string, int > ipMap)
{
if (tree != NULL){
return(tree->evaluate(ipMap));
}
else
return(0);
}
呼び出し、この関数を、この関数の中で、私はこの異なる方法でこの
int arithmetic_expression::evaluate_Expression()
{
if (topPtr != NULL)
return(evaluateTree(topPtr));
else
{
std::cout<< "Invalid expression: returning 0"<< std::endl;
return(0);
}
}
}
}
int arithmetic_expression::evaluateTree(TreeNodePtr rootPtr)
{
if ((rootPtr->Op=="+") | (rootPtr->Op=="-")|(rootPtr->Op=="*")|(rootPtr->Op== "/"))
{
if (rootPtr->Op=="+")
{
return(evaluateTree(rootPtr->leftPtr)+ evaluateTree(rootPtr->rightPtr));
}
if (rootPtr->Op=="-")
{
return(evaluateTree(rootPtr->leftPtr)- evaluateTree(rootPtr->rightPtr));
}
if (rootPtr->Op=="*")
{
return(evaluateTree(rootPtr->leftPtr)* evaluateTree(rootPtr->rightPtr));
}
if (rootPtr->Op=="/")
{
return(evaluateTree(rootPtr->leftPtr)/ evaluateTree(rootPtr->rightPtr));
}
}
else
{
int Number;
std::istringstream(rootPtr->Op) >> Number;
return(Number);
}
のように、私が以前にやった
int Tree::evaluate(std::map< std::string, int > ipMap){
//not sure what to put in return to evaluate the expression
if(NodeType==TYPE_OPERATOR)
{
return())
}
返すことが何かわかりません
質問は何ですか? –
'|'は*ビット単位または*です。あなたはおそらく '||'を意味します。 – Johnsyweb
以前のプログラムで何をしたかに基づいています。どのように私は同じことを実装する代わりに地図のものを使用します。 nodetype = + then evaluate(leftPtr-> ipmap)+ evaluate(rightPtr-> ipmap)を返すとしますか?前のようなもの – user1325578