资源简介

武汉大学国际软件学院编译原理作业 C++实现计算器+ —* \ 带括号运算 [作业内容和要求] 设计和实现一个计算器,实现整数、实数的加减乘除四则运算,要求: 1、输入字符串(直接从控制台输入、或采用文件输入),可识别的合法单词(token) 为:整数(不以0 开头)、实数(不以0 开头)、‘+’、‘-’、‘*’、‘/’,‘(’、‘)’,‘=’。 以‘=’作为输入结束符。 2、输出要求:检查中缀表达式表示的加减乘除运算是否符合正常的表达式规则, 如果中缀表达式合法,则输出计算结果;如果不合法,则输出出错提示。

资源截图

代码片段和文件信息


#include 
using std::endl; 
using std::cout; 
using std::cin; 

class Numbers   //定义存放数字的类
{
 private: 
         long double Num_str[200];
     protected: 
         Numbers():count(0){} 
         ~Numbers(){}; 
         int count;
         int Num_set(long double num)
         { 
             Num_str[count]=num; 
             count++; 
             return 0; 
         } 
         int Num_input(long double numint b) 
         { 
             Num_str[b]=num; 
             return 0; 
         } 
         long double getNum(int b)
         { 
             return Num_str[b]; 
         } 
         bool display();
}; 

class sign    //定义一个符号的类

     protected: 
         int a; //‘0‘标志 
         int b; //‘1-9‘标志 
         int c; //‘+-‘标志 
         int d; //‘*‘标志 
         int e; //‘/‘标志 
         int f; //‘(‘标志 
         int g; //‘)‘标志 
         int h; //‘.‘标志 
         int i; //‘=‘标志 
         int fc; //‘(‘计数器 
         int gc; //‘)‘计数器 
        
         sign():a(0)b(0)c(0)d(0)e(0)f(0)g(0)h(0)i(0)fc(0)gc(0){} 
         ~sign(){}; 
}; 



class compute:protected Numbersprotected sign   //定义一个计算类

     private: 
         char member;
         compute *next; 
     protected: 
         bool creat(compute **head_adrint debug_model=0);      //构建算式链表
         bool isValid(compute *headint debug_model=0);      //判断有效性
         bool deal(compute *headcompute **deal_head_adrint debug_model=0);     //数值有效化处理
         bool comput(compute **comput_head_adrint debug_model=0);              //算式计算
         long double ltodf(compute *ch_head); //字符串转双精度浮点型
     public: 
         compute():next(NULL){}   //构造函数 
         bool main_Fun();         //总函数
         ~compute(){}; 
}; 

  



//构建算式链表
bool compute::creat(compute **head_adrint debug_model) 

     char get[1000]; 
     char *point; 
     int i; 
     compute *p*cur; 
     cout<<“请输入四则运算式“; 
     if(debug_model==1) 
         cout<<“(debug模式)“<     else 
         cout<     cin>>get; 
     for(point=getp=NULL*head_adr=cur=NULL;*point!=‘\n‘;point++)  //依次读取字符串中的字符 
     { 
         switch(*point) 
         { 
             case ‘.‘: 
             case ‘0‘: 
             case ‘1‘: 
             case ‘2‘: 
             case ‘3‘: 
             case ‘4‘: 
             case ‘5‘: 
             case ‘6‘: 
             case ‘7‘: 
             case ‘8‘: 
             case ‘9‘: 
             case ‘+‘: 
             case ‘-‘: 
             case ‘*‘: 
             case ‘/‘: 
             case ‘(‘: 
             case ‘)‘:p=new compute; 
                  p->member=*point; 
                  if(*head_adr==NULL) 

                      *head_adr=p; 
                  else 
                      cur->next=p; 
                  cur=p; 
                  break; 
             case ‘=‘:p=new compute; 
                  p->member=*point; 
  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      15261  2013-03-25 22:57  新建文件夹\Calculator\Calculator\Calculator.cpp

     文件       4025  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Calculator.vcxproj

     文件        948  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Calculator.vcxproj.filters

     文件     202452  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\Calculator.obj

     文件       1550  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\cl.command.1.tlog

     文件      22324  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\CL.read.1.tlog

     文件       1162  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\CL.write.1.tlog

     文件         94  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\ConsoleApplication2.lastbuildstate

     文件       2002  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\ConsoleApplication2.log

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link-cvtres.read.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link-cvtres.write.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link-rc.read.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link-rc.write.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.12604-cvtres.read.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.12604-cvtres.write.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.12604-rc.read.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.12604-rc.write.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.12604.read.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.12604.write.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.13028-cvtres.read.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.13028-cvtres.write.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.13028-rc.read.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.13028-rc.write.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.13028.read.1.tlog

     文件          2  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.13028.write.1.tlog

     文件       1466  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.command.1.tlog

     文件       3060  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.read.1.tlog

     文件        762  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\link.write.1.tlog

     文件     338944  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\vc110.idb

     文件     348160  2013-03-25 23:08  新建文件夹\Calculator\Calculator\Debug\vc110.pdb

............此处省略14个文件信息

评论

共有 条评论