鱼C论坛

 找回密码
 立即注册
查看: 3462|回复: 2

求助Dev[Error] ld returned 1 exit status

[复制链接]
发表于 2017-11-9 13:31:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
#include<stack>
#include<string>
#include <stdlib.h>
using namespace std;

/*推断符号间的优先关系函数
*1表示>,0表示=,-1表示<
*c1栈内的算符。c2栈外的算符
*/
int Judge(char c1,char c2)
{
        int a1,a2;
        if('+'==c1||'-'==c1) a1 = 3;
        if('*'==c1||'/'==c1)a1 = 5;
        if('('==c1) a1 = 1;
        if(')'==c1) a1 = 7;
        if('#'==c1) a1 = 0;

        if('+'==c2||'-'==c2)a2 = 2;
        if('*'==c2||'/'==c2)a2 = 4;
        if('('==c2) a2 = 6;
        if(')'==c2) a2 = 1;
        if('#'==c2) a2 = 0;
        if(a1>a2) return 1;
        if(a1==a2) return 0;
        if(a1<a2) return -1;
}
//符号运算函数
double run(char c ,double d1,double d2)
{
        switch (c)
        {
        case '+':
                return d1+d2;
                break;
        case '-':
                return d1-d2;
                break;
        case'*' :
                return d1*d2;
                break;
        case '/':
                return d1/d2;
                break;
        default:
                return 0.0;
                break;
        }
}
int main()
{
        string op;op = "+-*/()#";
        string str ;
        cin>>str;
        //给表达式字符串str加入'#'结束标识符
        str.append(1,'#');
        stack<char> OPTR;//运算符栈
        stack<double> OPND;//操作数栈
        int a = -1;
        //先将#符号入栈
        OPTR.push('#');
        while(true)
        {
         int b = a+1;
         a = str.find_first_of(op,a+1);
         if(a==string::npos) break;
         if(a!=b)
         {
         string ss(str,b,a-b);
         double d=atof(ss.c_str());
         //数据先入栈
         OPND.push(d);
         }
         //运算符优先级比較
         int ju = Judge(OPTR.top(),str[a]);
         if(-1==ju)//栈外优先级大直接入栈
         {
             OPTR.push(str[a]);
         }
         if(0==ju)//栈内外优先级相等则出栈
         {
                 OPTR.pop();
         }
         if(1==ju)//栈内优先级大,出栈进行运算
         {
                 double d1 = OPND.top();
                 OPND.pop();
                 double d2 = OPND.top();
                 OPND.pop();
                 d1 = run(OPTR.top(),d2,d1);
                 //运算结果入栈
                 OPND.push(d1);
                 OPTR.pop();
                 a--;
         }
        }
        //删除表达式最后的'#'结束标识符
        str.erase(str.length()-1,1);
        cout<<str<<" = "<<OPND.top()<<endl;
}



源代码,vc下没有问题,为什么Dev下报错Error] ld returned 1 exit status
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-9 14:01:19 From FishC Mobile | 显示全部楼层
可能问题:
1 你的程序正在运行,没有关闭
2 你定义了多个main
3 关闭杀毒软件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-10 16:01:06 | 显示全部楼层
BngThea 发表于 2017-11-9 14:01
可能问题:
1 你的程序正在运行,没有关闭
2 你定义了多个main

就是这几个问题都没有啊....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 20:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表