gpt4 book ai didi

c++ - 在表达式树中添加一元运算符

转载 作者:行者123 更新时间:2023-11-30 04:23:36 28 4
gpt4 key购买 nike

我正在做我的作业,我必须修改我以前的任务(这是前缀表达式树,它接受表达式并给出结果)

+ OR
* AND
- NOT

现在我必须使它成为逻辑表达式树,它将执行 AND OR 和 NOT 操作

char input;
cin.get(input);

if((input == '+')||(input == '-')||(input == '*'))
{
p = new ExprTreeNode(input,NULL,NULL);
buildSub(p->left);
buildSub(p->right);
}
else if(isdigit(input))
{ //create a new node
p = new ExprTreeNode(input,NULL,NULL);
}
else
{
cout <<" invalid expression exiting..." <<endl;
exit (1);
}

上面的代码读取表达式并使用递归生成树...

我很困惑如何添加不是...的一元运算符之后我必须评估表达式

int answer;
switch (p->dataItem){

case '*':
// AND
case'+':
// OR

case '-':
// Reverse

default:
answer = (p->dataItem-'0');
break;
}
return answer;

p 是 ExprTreeNode

// Data members
char dataItem; // Expression tree data item
ExprTreeNode *left, // Pointer to the left child
*right; // Pointer to the right child

最佳答案

我会说你想做以下事情:

if ((input == '+') || (input == '*'))
{
p = new ExprTreeNode(input,NULL,NULL);
buildSub(p->left);
buildSub(p->right);
}
else if (input == '-')
{
p = new ExprTreeNode(input, NULL, NULL);
buildSub(p->left);
}
else if(isdigit(input))
{ //create a new node
p = new ExprTreeNode(input,NULL,NULL);
}
else
{
cout <<" invalid expression exiting..." <<endl;
exit (1);
}

编辑:然后,评估例程可以像这样工作:

bool ExprTreeNode::evaluate() {
switch (dataItem) {
case '+':
return left->evaluate() || right->evaluate();
case '*':
return left->evaluate() && right->evaluate();
case '-':
return !left->evaluate();
case '0':
return false;
default:
return true;
}
}

关于c++ - 在表达式树中添加一元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13305981/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com