可怜的二柱子同学,老师又对他的自动出题系统提出了新的要求:

1、题目避免重复;

2、可定制(数量/打印方式);

3、可以控制下列参数:

是否有乘除法;

是否有括号(最多可以支持十个数参与计算);

数值范围;

加减有无负数;

除法有无余数!

具体实现:

1. 使用无限循环实现不同功能的输出以满足用户的需求。

2. 输出语句,让用户输入数值范围随机生成数的范围,所生成题目个数,输入有无乘除法是否要有乘除法?有请输入<1>,无请输入<0>;是否要加减结果有负数?有请输入<1>,无请输入<0>;否要除法结果有余数?有请输入<1>,无请输入<0>;

3. a=min+rand()%m;

b=min+rand()%m;
   c=rand()%4;

利用随机方式来生成随机数,c决定运算符号;

4. 打印方式,生成题目的数量;在程序的开始让客户选择打印方式《cout<<"请依次输入输出算式数量和每行显示数量:"<<endl;cin>>num>>line;

5.在题目生成的时候进行次循环遍历数组以避免新产生的表达式与前面重复,如果重复则继续生成表达式,直到不重复为止。

7.考虑含负数情况下也有无负数的表达式。

operation.h文件
#pragma once
#include <string>
#include <iostream>using namespace std;
class operation
{
public:int a0[1000],b0[1000],c0[1000],a1[1000],b1[1000],c1[1000],a2[1000],b2[1000],c2[1000],a3[1000],b3[1000],c3[1000],C[1000],a,b,c;int i,j,A0,A1,A2,A3,B0,B1,B2,B3;int num,line,k;int min,max,m;int CC,FS,YS,KH;void xuanze();//选择void suiji();//随机void yunsuan();//运算operation(void);~operation(void);
};

operation.cpp文件
#include "operation.h"operation::operation(void)
{
}operation::~operation(void)
{
}
void operation::xuanze()
{k=0;A0=0;A1=0;A2=0;A3=0;B0=0;B1=0;B2=0;B3=0;cout<<"四则运算"<<endl;cout<<"请依次输入输出算式数量和每行显示数量:"<<endl;cin>>num>>line;cout<<"请问是否要有乘除法?有请输入<1>,无请输入<0>"<<endl;cin>>CC;while(1)                            {if(CC != 1&&CC != 0){cout<<"输入不合法,请重新输入<1>或<0>";cin>>CC;}elsebreak;}cout<<"请问是否要加减结果有负数?有请输入<1>,无请输入<0>"<<endl;cin>>FS;while(1)                             {if(FS != 1&&FS != 0){cout<<"输入不合法,请重新输入<1>或<0>:";cin>>FS;}elsebreak;}cout<<"请问是否要除法结果有余数?有请输入<1>,无请输入<0>"<<endl;cin>>YS;while(1)                             //判断输入是否合法{if(YS != 1&&YS != 0){cout<<"输入不合法,请重新输入<1>或<0>";cin>>YS;}elsebreak;}cout<<"请输入两个值确定算式中a,b的取值范围:"<<endl;cin>>min>>max;while(1)                            //判断输入是否合法{if(min>=max){cout<<"请保证前一个值小于后一个值,请重新输入:";cin>>min>>max;}elsebreak;}cout<<"请问是否要加括号数?无请输入<1>,有请输入<0>"<<endl;cin>>KH;while(1)                             {if(KH != 1&&KH != 0){cout<<"输入不合法,请重新输入<1>或<0>:";cin>>FS;}elsebreak;}
}void operation::suiji()
{m=max-min+1;for(i=0;i<1000;i++){a0[i]=0;b0[i]=0;a1[i]=0;b1[i]=0;a2[i]=0;b2[i]=0;a3[i]=0;b3[i]=0;}for(i=0;;i++){a=min+rand()%m;b=min+rand()%m;c=rand()%4;if(CC==0)              {if(c==2||c==3)continue;}if(FS==0)              {if(c==0){if(a+b<0)continue;}else if(c==1){if(a-b<0)continue;}}if(YS==0)            {if(c==3)if(0 != a%b)continue;}if(c==0)                {for(j=0;j<=A0;j++){if(a==a0[j]&&b==b0[j]){B0++;break;}}if(B0>0){B0=0;continue;}else{a0[A0]=a;b0[A0]=b;c0[A0]=a+b;A0++;}}else if(c==1)                   {for(j=0;j<=A1;j++){if(a==a1[j]&&b==b1[j]){B1++;break;}}if(B1>0){B1=0;continue;}else{a1[A1]=a;b1[A1]=b;c1[A1]=a+b;A1++;}}else if(c==2)                     {for(j=0;j<=A2;j++){if(a==a2[j]&&b==b2[j]){B2++;break;}}if(B2>0){B2=0;continue;}else{a2[A2]=a;b2[A2]=b;c2[A2]=a+b;A2++;}}else                               {if(b==0)continue;for(j=0;j<=A3;j++){if(a==a3[j]&&b==b3[j]){B3++;break;}}if(B3>0){B3=0;continue;}else{a3[A3]=a;b3[A3]=b;c3[A3]=a+b;A3++;}}if(num==A0+A1+A2+A3)              break;}}void operation::yunsuan(){for(i=0;i<A0;i++)                       {k++;if(a0[i]<0)cout<<"("<<a0[i]<<")";elsecout<<a0[i]<<" ";cout<<"+";if(b0[i]<0)cout<<"("<<b0[i]<<")";elsecout<<" "<<b0[i]<<" ";cout<<"=";if(k%line==0)cout<<endl;elsecout<<"\t";for(j=0;j<i;j++)//判断是否有重复{if(b2[j]==b2[i],b3[j]==b3[i]){i=i-1;suiji();break;}}for(i=0;i<A1;i++)                       {k++;if(a1[i]<0)cout<<"("<<a1[i]<<")";elsecout<<a1[i]<<" ";cout<<"-";if(b1[i]<0)cout<<"("<<b1[i]<<")";elsecout<<" "<<b1[i]<<" ";cout<<"=";if(k%line==0)cout<<endl;elsecout<<"\t";for(j=0;j<i;j++)//判断是否有重复{if(b2[j]==b2[i],b3[j]==b3[i]){i=i-1;suiji();break;}}for(i=0;i<A2;i++)                       {k++;if(a2[i]<0)cout<<"("<<a2[i]<<")";elsecout<<a2[i]<<" ";cout<<"*";if(b2[i]<0)cout<<"("<<b2[i]<<")";elsecout<<" "<<b2[i]<<" ";cout<<"=";if(k%line==0)cout<<endl;elsecout<<"\t";for(j=0;j<i;j++)//判断是否有重复{if(b2[j]==b2[i],b3[j]==b3[i]){i=i-1;suiji();break;}}for(i=0;i<A3;i++)                        {k++;if(a3[i]<0)cout<<"("<<a3[i]<<")";elsecout<<a3[i]<<" ";cout<<"/";if(b3[i]<0)cout<<"("<<b3[i]<<")";elsecout<<" "<<b3[i]<<" ";cout<<"=";if(k%line==0)cout<<endl;elsecout<<"\t";for(j=0;j<i;j++)//判断是否有重复{if(b2[j]==b2[i],b3[j]==b3[i]){i=i-1;suiji();break;}}}}

  

 

main 函数

#include"operation.h"
#include<iostream>
void main()
{operation C21;C21.xuanze();C21.suiji();C21.yunsuan();
}

  

程序总结

存在的问题:是否有括号(最多可以支持十个数参与计算)功能没有很好的实现。由于的数据结构没有掌握好,本来这个功能呢是利用栈来实现的,但是没有完全掌握好,这次利用了多个的程序单元,包括生成随机数,打印,是加减乘除等一些程序是单元,可以单独调试,大大减少了程序的调试时间;

转载于:https://www.cnblogs.com/hanzhu/p/5284418.html

软件工程概论个人作业02相关推荐

  1. 软件工程概论个人作业02(四则运算2)

    1.设计思想: 在四则运算1的基础上,多加了几个要求,是否有乘除法可以通过不同的选择然随机生成符号的函数有时候生成两个数字对应加减,有时候生成四个数对应加减乘除:括号没有实现:数值范围通过一个函数实现 ...

  2. 软件工程概论 课后作业1

    网站系统开发需要掌握的技术: 1. 网页上要显示内容,需要学学HTML 2. 光有文字还不行,还要考虑不同的颜色,布局,排版,如图做出这样页面效果,要学学基本的CSS 3. 有一些交互,比如修改了代码 ...

  3. 软件工程概论课堂作业3

    题目:返回一个整数数组中最大子数组的和 要求: 输入一个一维整形数组,数组里有正数也有负数. 一维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个 ...

  4. 软件工程概论课后作业01

    1. 网站系统开发需要掌握的技术 ①java语言 Java语言体系比较庞大,包括多个模块.从WEB项目应用角度讲有JSP,Servlet,JDBC,JavaBean(Application)四部分技术 ...

  5. 软件工程概论--课后作业1

     作业概况:                               1.网站系统开发所需技术 1.基础内容   网页设计概述.网站设计制作的基本流程.色彩搭配在网站中的应用.网站用户界面的设计. ...

  6. 软件工程概论第一次作业

    [习题] 一.单项选择 1.软件是计算机系统中与硬件相互依存的另一部分,它是包括(  1 B ).(  2 A )及(  3 D )的完整集合.其中,(  1 B )是按事先设计的功能和性能要求执行的 ...

  7. 软件工程概论课堂作业二维数组

    结对作业 结对人员:曹婷婷,王凯路 设计思想:先输入一个二维数组,通过遍历二维数组,找到一个正数,确定它的下标,判断是否联通通过判断二维数组的下标假设找到一个正数,它的下标为i和j,如果找到的下一个数 ...

  8. 软件工程结对开发作业02

    开发人员: 程序分析,代码编程:信1505-1班 毛松林: 代码复审与代码测试:信1505-1班 张  浩, 一开始看到这到题的时候,我简直没有一点思路.老师提示说是可以先求出所有正整数的和,然后找出 ...

  9. 软件工程概论-合作作业02-四则运算网页答题

    题目:四则运算web版:把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目,并可实现在线答题并评判 四则运算web版的程序设计思想:之前的程序是可以用户自定义生成任意个数四则运算题目的,这次 ...

最新文章

  1. flutter嵌入HTML5页面,Flutter加载Html并实现与JS 的双向调用
  2. Java的二十三种设计模式(单例模式、工厂方法模式、抽象工厂模式)
  3. 3.3 1!到n!的和
  4. Mybatis—代理开发和核心配置文件深入
  5. python语言map函数及map object at 乱码错误
  6. LeetCode之Binary Tree Level Order Traversal 层序遍历二叉树
  7. mysql count 排序_MySQL什么时候会使用内部临时表?
  8. python 怎么样去txt中提取xml_如何使用python将.txt文件转换成xml文件?
  9. bat脚本监控tomcat并启动_windows使用批处理发布web到tomcat并启动tomcat脚本分享
  10. DV、OV、EV :SSL证书那么多,我该选择哪一种?
  11. safari浏览器关于时间日期格式的兼容问题
  12. python爬取南京市房价_屌丝想买房,爬取南京20000多套二手房|上篇
  13. 3.注册后台处理逻辑编写
  14. swiper 重新初始化
  15. 图像分割:阈值获取方法总结
  16. 从零开始掌握Python机器学习:七步教程 基础篇
  17. vba CAD提取图元属性
  18. pytorch rnn 实现手写字体识别
  19. linux如何让命令是中文,linux centos 让man命令帮助显示简体中文
  20. cd40系列芯片_cd40110的工作原理详细(cd40110引脚图功能_如何计数及应用电路分享) - 全文...

热门文章

  1. 走在网页游戏开发的路上(八)
  2. Python基础06-数据类型:元组tuple
  3. bigquery使用教程_如何使用Python和Google BigQuery构建机器人以自动执行您的笨拙任务...
  4. css flexbox模型_5分钟内学习CSS Flexbox-初学者教程
  5. javascript 代码_代码简介:2016年JavaScript的现状
  6. 字节跳动 录屏功能_一周盘点:Instagram打通视频购物功能 公开叫板TikTok;字节跳动要大力布局跨境出口电商?...
  7. 控制行输入以下两句命令16倍速播放青年大学习
  8. JavaScript 利用location对象实现跨页面传参
  9. Linux:检查当前运行级别的五种方法
  10. 常用MySQL的命令集锦