zoukankan      html  css  js  c++  java
  • 作业二(1):个人编程项目——四则运算

    1)作业要求:

       包括整数,真分数的四则运算 
    

    2)编程环境:

      使用VS2010,编程语言C++
    

    3)具体思路:

     因为是随机出题器,所以会用到随机数,我的想法是:先定义两个随机数作为运算数,因为算法会用到+—*/所以再定义四个随机数,用于调用运算符,之后再进行运算。
    

    4)实验代码:

    #include<iostream>
    #include<stdlib.h>
    #include<iomanip>
    #include<time.h>
    using namespace std;
    
    #define random() (rand()%100)//运用rand()函数随机生成100以内的整数。
    
    void main()
    {
               int s1,s2,s3,s4;
              
               srand((int)time(NULL));//运用srand函数设立随机种子,让种子和当前时间有关,避免每次生成的随机数相同
    
              for(int i=0;i<30;i++)//运用for循环,共循环30次,生成30随机运算。
    
               {
    
                        s1=random();
    
                        s2=random();
    
                       int k=(int)rand()%5;//运用rand()函数随机生成5以内的整数。
    
                       switch(k)
    
                       {
    
                       case 0:{cout<<s1<<"+"<<s2<<"=";
    
                       break;}                                 //进行整数加法运算
    
                       case 1:{cout<<s1<<"-"<<s2<<"=";
    
                       break;}                                //进行整数减法运算
    
                       case 2:{cout<<s1<<"*"<<s2<<"=";
    
                       break;}                                //进行整数乘法运算
    
                       case 3:{
    
                       while(s2==0)
    
                       s2=random();
    
                       cout<<s1<<"/"<<s2<<"=";
    
                       break;}                                //进行整数除法运算
    
                       case 4:                                //真分数运算部分
    
                 {
    
              while(s2==0||s1>=s2)
    
             {
    
                s1=random();
    
                           s2=random();
    
             }
    
                s3=random();
    
                           s4=random();
    
            while(s4==0||s3>=s4)
    
            {
    
                s3=random();
    
                           s4=random();
    
            }
    
                int q=(int)rand()%4;
    
            switch(q)
    
            {
    
                case 0:
    
                    cout<<"("<<s1<<"/"<<s2<<")"<<"+"<<"("<<s3<<"/"<<s4<<")"<<"=";
    
                  
    
                    break;
    
                case 1:
    
                       cout<<"("<<s1<<"/"<<s2<<")"<<"-"<<"("<<s3<<"/"<<s4<<")"<<"=";
    
                    break;
    
                case 2:
    
                     cout<<"("<<s1<<"/"<<s2<<")"<<"*"<<"("<<s3<<"/"<<s4<<")"<<"=";
    
                  
    
                    break;
    
                case 3:
    
                    cout<<"("<<s1<<"/"<<s2<<")"<<"/"<<"("<<s3<<"/"<<s4<<")"<<"=";
    
                    break;
    
                         }
    
                       }
    
                    }
    
                       cout<<endl;
    
              }
    system("pause");
    }
    

    结果截图:

    5)实验总结:

      这次试验的优点是在不断地调试和运行之后终于实现了这个代码,完成了c++创建栈的全部过程,让我的这个小组对栈的了解有人更加深入的认识,完成了栈的所有的基本操作,但是缺点在于这次试验的代码并不是完全符合条件,没有用树的遍历实现。二叉树实现参考附录二。  此次实验要求我们用中序输入一个四则运算的表达式,计算出结果后,再通过后续遍历输出。我们组采用的是栈的方式做出了结果。   但是我跟别的组的夏晓玲讨论出了另一种想法时,先把四则运算表达式按照优先级加好括号,这样建树时一遇到括号就建这个子树,然后再返回到原来的根节点,继续往下建树。  夏晓玲同学加括号的代码写了100多行,我们还在考虑有没有更简洁的写法。但是在建树的过程中出现了问题,一旦表达式过长,就会失败。这也是我们未能解决的问题。这次实验,真正是我收获最大的一次,但问题是懂得了算法,写不出代码。嗯,所以,在接下来的学习中,还要加深对代码这一块的了解和掌握。
  • 相关阅读:
    20160402_[转]联合体(union)的使用方法及其本质
    20160402_C语言位操作符的使用
    20160402_多道程序环境中的设备抢占问题
    20160402_TCP/IP协议簇
    20160402_TCP连接的建立、终止和状态转换
    20160402_C++中的内存对齐
    20160127_Android程序完全退出的方法
    Redis持久化
    github慢!怎么办?
    mybatis-plus-generator: 自动生成entity,mapper,service,controller的代码
  • 原文地址:https://www.cnblogs.com/liyunlong/p/5285526.html
Copyright © 2011-2022 走看看