Link_Ray
2017-07-30 14:12
采纳率: 60%
浏览 2.5k

C++为什么我的代码没错,却无法编译呢

图片说明

 #include <iostream>
#include <string>
using namespace std;
string s;
string ori;
int cnt = 0;
bool expression_value();
bool term_value();
bool factor_value();


bool expression_value()
{
    bool result = term_value();
    char next;
    bool more = true;
    while(more)
    {
        next = ori[cnt];
        if(next == '&')
        {
            cnt++;
            bool next_expression = term_value();
            result = next_expression && result;
        }
        else if(next == '|')
        {
            cnt++;
            bool next_expression = term_value();
            result = next_expression || result;
        }
        else
            more = false;
    }
    return result;
}
bool term_value()
{
    bool result = factor_value();
    char next;
    bool more = false;
    while(more)
    {
        next = ori[cnt];
        if(next == ' ')
            continue;
        if(next == '&')
        {
            cnt++;
            bool next_expression = term_value();
            result = next_expression && result;
        }
        else if(next == '|')
        {
            cnt++;
            bool next_expression = term_value();
            result = next_expression || result;
        }
        else
            more = false;
    }
    return result;
}
bool factor_expression()
{
    bool result = false;
    char c;
    c=ori[cnt];
    if(c == '!')
    {
        cnt++;
        result = !result;
    }
    if(c == '(')
    {
        cnt++;
        result = expression_value();
        cnt++;
    }
    if(c == 'V')
        return true;
    if(c== 'F')
        return false;
    return result;
}
int main()
{
    string s,ori;
    int ncase=0;
    while(getline(cin,s))
    {
        ncase++;
        for(int i = 0;i<s.size();i++)
        {
            char ch = s[i];
            if(s[i]!=' ')
                ori+=ch;
        }
        bool result = expression_value();
        if(result)
            cout<<"Expression "<<ncase<<": V"<<endl;
        else
            cout<<"Expression "<<ncase<<": F"<<endl;
        ori.clear();
        cnt=0;
    }
    return 0;
}![图片说明](https://img-ask.csdn.net/upload/201707/30/1501423942_674742.png)

提交到OJ上面显示我的三个函数无定义,这是为什么??

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • shen_wei 2017-07-31 07:20
    已采纳

    bool factor_value();

    bool factor_expression()

    确定这两个那个是正确的。。。

    打赏 评论
  • 底层软件架构 2017-07-31 04:35

    不能编译,那就贴出编译器出错的输出。

    打赏 评论
  • 栗悟饭和龟仙人 2017-07-31 07:16

    factor_value 函数没定义啊

    打赏 评论
  • das白 2017-07-31 07:38

    把 bool factorexpression() 这个函数改成 bool factor_value()

    这个是你上面声明的函数 bool factor_value() 你下面实现的时候写的是 bool factor_expression()

    打赏 评论

相关推荐 更多相似问题