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