zoukankan      html  css  js  c++  java
  • 课程作业四

    分为3个类:input,operate,和output

    `class input
    {

    private:
    
    	int userans[20];//用户输入的答案 
    
    	int quesnum;//题目数量 
    
    public:
    
    	void setuserans(int a);
    
    	void setquesnum(int a);
    
    	int getquesnum();
    
    	char* getuserans();
    

    };`

    `class output

    {

    private:
    
    	bool judge;//判断用户答案是否错误 
    
    	char expression[20];//运算式 
    
    	int userans;//用户答案 
    
    	int correctans;//正确答案 
    
    public:
    
    	void printsummary();//打印解题报告 
    
    	void printjudge();//判断答案对错,从而决定如何反馈信息 
    
    	void setjudge(bool a);//传入判断值
    
    	void setuserans(int a);
    
    	void setcorrectnum(int a);
    

    };`

    `class operation
    {

    private:
    
    	bool judge;
    
    	char experssion[20];
    
    	int correctans;
    
    	int userans;
    
    public:
    
    	char random();//生成随机数 
    
    	void setexpression();//生成运算式 
    
    	bool judgment();//判断结果是否是整数 
    
    	void bolan();//转成逆波兰表达式 
    
    	int calculate();//计算 
    
    	void eornot(char *a);//判断用户输入是否有e 
    

    };`

    算法实现
    采用两个栈先将表达式转化为逆波兰式,再计算。
    实现过程:

    1. 设两个栈s1,s2 ;

    2. 中缀式的左端开始逐个读取字符,逐序进行如下步骤:

    • 若是操作数,则分析出完整的运算数,直接压入栈s2;

    • 若是运算符,则分情况讨论:

    • 若是'(',则直接压入栈s1;

    • 若是')',则将距离栈s1栈顶的最近的'('之间的运算符,逐个出栈,依次压入栈s2,此时抛弃'(';

    • 若是除'('和')'外的运算符,则再分如下情况讨论:

                  若当前栈s1的栈顶元素为'(',则直接压入栈s1;

                  若当前栈s1的栈顶元素不为'(',则与栈s1的栈顶元素比较,若优先级大于栈s1栈顶运算符优先级,则直接压入栈s1。否者,将栈s1的栈顶运算符弹出,压入栈s2中,直到栈s1的栈顶运算符优先级别低于(不包括等于)该字符优先级,或栈s2的栈顶运算符为'(',此时再则压入栈s1;

    3.在进行完2后,检查栈s1是否为空,若不为空,则将栈中元素依次弹出并压入栈s2中(不包括'#');      

      

    4.完成上述步骤后,栈s2便为逆波兰式输出结果。但是栈s2应做一下逆序处理,因为此时表达式的首字符位于栈底;

  • 相关阅读:
    Postgresql HStore 插件试用小结
    postgres-xl 安装与部署 【异常处理】ERROR: could not open file (null)/STDIN_***_0 for write, No such file or directory
    GPDB 5.x PSQL Quick Reference
    postgresql 数据库schema 复制
    hive 打印日志
    gp与 pg 查询进程
    jquery table 发送两次请求 解惑
    python 字符串拼接效率打脸帖
    postgresql 日期类型处理实践
    IBM Rational Rose软件下载以及全破解方法
  • 原文地址:https://www.cnblogs.com/daydreams/p/6858080.html
Copyright © 2011-2022 走看看