四则运算二之结果

设计思想:

  1. 题目避免重复

将得到的题目放入数组,并与前面的进行匹配,若相同则跳过且变量减一。

  1. 可定制

通过一个变量控制输出来确定输出格式。

  1. 控制参数

是否有乘除法

If语句当面对除法时,控制被除数不为0。若为零,则跳过且变量减一。

数值范围

随机数控制。

加减有无负数

If语句检验随机数是否小于0,若小于零则跳过且变量减一。

除法有无余数

If语句检验,其余同上。

是否支持分数

If语句随机出现分数的运算。

实现代码:

//四则运算二,王昭博,3.13,2015

#include<iostream>

using namespace std;

#define N 30

#include<cmath>

void main ()

{

double a,b[N],c[N],d[N],e[N],f;

char g ;

cout<<"若允许有负数请输入Y;否则,输入N:"<<endl;

cin>>g;

for( int i = 0 ; i < N ; i++ )

{

a = rand()%2;//决定是否出现分数题目

if( a == 0 )//分数题目出现

{

b[i] = rand()%100;

c[i] = rand()%100;

d[i] = rand()%100;

e[i] = rand()%100;

f = rand()%4;

if( f == 0)

{

if(c[i] == 0 || e[i] == 0)//控制被除数及分子不为零

{i--;break;}

for( int j=0;j<i;j++)//避免重复

{

if(b[i] == b[j] && c[i] == c[j] && d[i] == d[j] && e[i] == e[j])

{i--;break;}

}

//控制有无负数

if(g == ‘Y‘)

{cout<<b[i]<<"/"<<c[i]<<" + "<<d[i]<<"/"<<e[i]<<"="<<endl;}

else

{

if(b[i] < 0 || c[i] < 0 || d[i] < 0 || e[i] < 0)

{i--;break;}

else

{cout<<b[i]<<"/"<<c[i]<<" + "<<d[i]<<"/"<<e[i]<<"="<<endl;}

}

}

else if( f == 1)

{

if(c[i] == 0 || e[i] == 0)//控制被除数及分子不为零

{i--;break;}

for( int j=0;j<i;j++)//避免重复

{

if(b[i] == b[j] && c[i] == c[j] && d[i] == d[j] && e[i] == e[j])

{i--;break;}

}

//控制有无负数

if(g == ‘Y‘)

{cout<<b[i]<<"/"<<c[i]<<" - "<<d[i]<<"/"<<e[i]<<"="<<endl;}

else

{

if(b[i] < 0 || c[i] < 0 || d[i] < 0 || e[i] < 0)

{i--;break;}

else

{cout<<b[i]<<"/"<<c[i]<<" - "<<d[i]<<"/"<<e[i]<<"="<<endl;}

}

}

else if( f == 2)

{

if(c[i] == 0 || e[i] == 0)//控制被除数及分子不为零

{i--;break;}

for( int j=0;j<i;j++)//避免重复

{

if(b[i] == b[j] && c[i] == c[j] && d[i] == d[j] && e[i] == e[j])

{i--;break;}

}

//控制有无负数

if(g == ‘Y‘)

{cout<<b[i]<<"/"<<c[i]<<" * "<<d[i]<<"/"<<e[i]<<"="<<endl;}

else

{

if(b[i] < 0 || c[i] < 0 || d[i] < 0 || e[i] < 0)

{i--;break;}

else

{cout<<b[i]<<"/"<<c[i]<<" * "<<d[i]<<"/"<<e[i]<<"="<<endl;}

}

}

else

{

if(c[i] == 0 || e[i] == 0 || d[i] == 0)//控制被除数及分子不为零

{i--;break;}

for( int j=0;j<i;j++)//避免重复

{

if(b[i] == b[j] && c[i] == c[j] && d[i] == d[j] && e[i] == e[j])

{i--;break;}

}

//控制有无负数

if(g == ‘Y‘)

{cout<<b[i]<<"/"<<c[i]<<" / "<<d[i]<<"/"<<e[i]<<"="<<endl;}

else

{

if(b[i] < 0 || c[i] < 0 || d[i] < 0 || e[i] < 0)

{i--;break;}

else

{cout<<b[i]<<"/"<<c[i]<<" / "<<d[i]<<"/"<<e[i]<<"="<<endl;}

}

}

}

else//非分数题目出现

{

b[i] = rand()%100;

c[i] = rand()%100;

f = rand()%4;

if( f == 0)

{

for( int j=0;j<i;j++)

{

if(b[i] == b[j] && c[i] == c[j])//避免重复

{i--;break;}

}

//控制有无负数

if(g == ‘Y‘)

{cout<<b[i]<<" + "<<c[i]<<"="<<endl;}

else

{

if(b[i] < 0 || c[i] < 0)

{i--;break;}

else

{cout<<b[i]<<" + "<<c[i]<<"="<<endl;}

}

}

else if( f == 1)

{

for( int j=0;j<i;j++)//避免重复

{

if(b[i] == b[j] && c[i] == c[j])

{i--;break;}

}

//控制有无负数

if(g == ‘Y‘)

{cout<<b[i]<<" - "<<c[i]<<"="<<endl;}

else

{

if(b[i] < 0 || c[i] < 0)

{i--;break;}

else

{cout<<b[i]<<" - "<<c[i]<<"="<<endl;}

}

}

else if( f == 2)

{

for( int j=0;j<i;j++)//避免重复

{

if(b[i] == b[j] && c[i] == c[j])

{i--;break;}

}

//控制有无负数

if(g == ‘Y‘)

{cout<<b[i]<<" * "<<c[i]<<"="<<endl;}

else

{

if(b[i] < 0 || c[i] < 0)

{i--;break;}

else

{cout<<b[i]<<" * "<<c[i]<<"="<<endl;}

}

}

else

{

if( c[i] == 0)//控制被除数及分子不为零

{i--;break;}

for( int j=0;j<i;j++)//避免重复

{

if(b[i] == b[j] && c[i] == c[j])

{i--;break;}

}

//控制有无负数

if(g == ‘Y‘)

{cout<<b[i]<<" / "<<c[i]<<"="<<endl;}

else

{

if(b[i] < 0 || c[i] < 0)

{i--;break;}

else

{cout<<b[i]<<" / "<<c[i]<<"="<<endl;}

}

}

}

}

}

结果截图:

心得总结:

一开始,我尝试着不看设计思想去做,发现做着做着就卡壳;后来,我就边看设计思想边写,很快就做完了,虽然我的代码有些过于冗杂了,但是很顺畅(当然代码比较简单也是其中一个原因所在)。

时间记录日志


学生:


王昭博


 


日期:


3/13/2015


 


教师:


王建民


 


课程:


PSP


 


 


 


 


 


 


 


日期


开始时间


结束时间


净时


活动


备注


3月13日


10点10分


12点


100分钟


讲师授课


 


3月13日


13点


13点20分


20分钟


编写程序


 


3月18日


16点


17点30分


90分钟


编写程序


 


3月18日


21点30分


22点


30分钟


制作时间记录日志模板


 

时间: 2024-08-02 15:21:50

四则运算二之结果的相关文章

个人作业五:四则运算二

四则运算2 一.设计思路: 1.题目避免重复: (1)利用系统时间来产生随机数,重复率会降低. (2)建立链表,逐个判断.可读取写入文件. 2.可定制(数量/打印方式): (1)格式有默认值; (2)可以选择重新设置分几列和每行的间隔.打印方式用%取余来实现分列输出. 3.可以控制参数: (1)这些参数都有默认值: (2)出题之前可以选择重新设置某一个或多个参数: (3)是否有乘除法/括号/负数/余数/支持分数/支持小数:用户输入1/0表示是/否: 数值范围.真分数.假分数.精确到几位小数.每行

3月10号周二课堂练习:四则运算二

一.题目新的要求 1.题目避免重复: 2.可定制(数量/打印方式): 3.可以控制下列参数: 是否有乘除法.是否有括号. 数值范围.加减有无负数.除法有无余数.否支持分数 (真分数, 假分数, …).是否支持小数 (精确到多少位).打印中每行的间隔可调整: 二.设计思想(将自己上次上课时的设计思想进行稍微的修改) 1.判断两次随机数是否相同    使用函数srand()保证两个随机数不同 2.多加入一个变量,来控制题目数量 3.在每一个switch选择的语句,进行选择判断  3.1选择是否有乘除

20165210 结对编程练习:四则运算(二)

20165210 结对编程练习:四则运算(二) 题目需求: 四则运算: 自动生成 要求有加减乘除 支持真分数 统计正确率 需求分析: 首先我们可以把除法和分数归为一类 有一个类进行随机生成数 有一个类进行随机生成符号 主类进行四则运算和统计正确率 四则运算的计算式 分数的计算式 设计思路: 原文地址:https://www.cnblogs.com/lyklyk/p/8910285.html

程序设计之四则运算二

随着又一次软件工程课的来临,老师再一次给我们布置了新的作业,这次作业是上一次的改良版,有了更多的要求 一.题目避免重复 二.定制(数量/打印方式) 三.控制参数 1.是否有乘除法 2.是否有括号 3.数值范围 4.加减有无负数 5.除法有无余数 题目避免重复,可以通过存入算式到数组,生成之后的算式时比较,如果重复则重新生成. 控制是否有乘除法可以通过改变随机生成时的参数来实现. 难度最大的就是生成括号了,这个需要考虑生成括号的位置,个数,括号的叠加等等. 位置可以通过设置数组代替,对应数字只有左

四则运算二

一.设计思想 在上个程序中添加控制变量,实现题目个数.数值范围.有无乘除法的控制. 二.源程序代码 #include<iostream> #include<cmath> using namespace std; void main() { int i, j, a, m, n, l, k, p, q, c,d,num/*,real*/; cout << "请输入题目的个数:" << endl; cin >> p; cout &l

3月13号周五课堂练习:对四则运算二进行测试(选择一个条件)

测试条件:随机数的取值范围 1.当负数和0时出现提示重新输入 2.当题目数量大于随机数的取值范围如1时,产生相同的四则运算关系式 3.当输入字母和其他特殊字符时,程序崩溃 4.当输入取值过大时,提示重新输入(最大的值99999999999999,14个9) 通过本次测试发现自己的程序不够健壮,很多bug,后期要好好的把发现的程序bug解决掉.

四则运算二项目计划总结

周项目总结表                        姓名:黄伟鹏                       日期:2016/3/19 任务/日期 听课 编写程序 阅读书籍 日总计 周日  3.12 0 1 1 2 周一 2 0.5 2 4.5 周二 0 0.5 0 0.5 周三 0 0 0 0 周四 0 0 0 0 周五 0 1 0 1 周六 0 3 1 4 周总计 2 7 4 13 日期 开始时间 结束时间 中断时间 净时间 活动 备注 3.12 8:00 9:00   1 编程序

四则运算 二

设计思想: 1.定义数组number1[] number2[] 2.首先在ChooseAmount()函数中选择题目数量实现题目数的订制 3.在ChooseMD()函数中选择是否有乘除法 其中定义变量mDChoose 若为1则有 若为2 则无 4.在ChooseNumberRange()选择输出数值的范围 5.在RandomNumber()函数中用随机赋值入数组 6.在RandomNumberChange()函数中判断一些数学运算问题 比如除数不为0 7.在RandomOperatorOne()

软工概论第二周个人项目四则运算二(改进)

设计思想: 设计思想:输出表达式的个数n,利用随机数方法产生小于100的随机数,用for循环产生多个随机数,然后在进行判断,判断两个证书的和小于100,差大于0,乘积小于100,能够整除如果不符合要求则跳过本次循环,如果符合则赋值当总数到n时跳出循环,用字符串保存表达式,用double类型的数组保存正确结果,然后循环输出表达式,输入结果后跳转到判断结果界面,循环判断结果,如果相等flag[]为1,不等为0,最后给出正确的题目数量和错误的数量和未作的数量,在循环输出不正确的那些题目 改进的地方:表