-1

我正在编写一个程序,它是一个简单的表达式检查器。程序要做的就是检查用户给定的输入是否格式正确。我正在处理三个文件。我将在下面发布每个部分。如果我的编码正确,我的问题在案例一的 main.cpp 中。我是堆栈的新手,不确定我是否正确地对我想要发生的事情进行了编码。以防万一代码是获取一个后跟一个 : 的表达式,并且如果输入'('然后推送到堆栈并且如果答案是)'然后获取顶部并比较它们是否是对的。然后输出表达式是否格式正确。谢谢。

这是代码:

主文件

switch (choice){
case 1: 
    cout << "Current Setting: () " << endl;
    cout << "Enter your expression followed by a ; : " << endl;
    do {

    cin >> answer;


    if (answer = '(')
        stack.push( '(' );
    else 
        if (answer = ')' )
        (stack.top() == '(')




            while (answer != ';');

堆栈.h

elemType top(void) const;
// precondition: this stack is not empty
// returns top element in this stack

// transformers
void push(const elemType& item);
// precondition: this stack is not full
// adds item to this stack

void pop(void);
// removes top element from this stack if exist
// remains empty otherwise
4

2 回答 2

0

不。当您试图将其与一个字符进行比较时,您正在阅读整个表达式。

if (answer = '(')

循环也没有做任何事情

 while (answer != ';');
于 2012-04-16T01:54:10.357 回答
0

表达方式

if (answer = '(')

分配'('给 answer 并检查它是否非零(它是)——所以总是执行第一个分支。

你需要:

if (answer == '(')

相反(对于另一个类似)。

您还需要}while

于 2012-04-16T02:05:55.963 回答