您的位置:首页 > 其它

“四则运算2”分析报告

2015-03-19 00:04 169 查看
“四则运算2”分析报告

一、设计思路

初步设计思路:

1. 题目不重复先使用srand函数,生成两个做运算的随机数,再生成一个随机数,控制运算符号。

2. 是否有乘除法,数值范围,负数,余数,分数可以让用户选择。根据用户选择的结果,在每个函数之前根据用户的选择来执行不同的代码。

3. 把生成的每一个新的算式放在一起,每生成一个新的算式要验证是否与之前生成的算式重复,用字符串比如来做,如果重复就重新生成一个新的算式。

4. 打印只要用两个用户输入的变量就可以控制,一个控制打印的张数,一个控制打印每个式子的间距。

修改后设计思路:(修改了第2、3条)

1. 题目不重复先使用srand函数,生成两个做运算的随机数,再生成一个随机数,控制运算符号。

2. 是否有乘除法,数值范围,负数,余数,分数可以让用户选择。根据用户选择的结果,调用随机数生成函数,生成符合要求的随机数。

3. 为了避免算式重复,我定义了两个整型数组,一个字符数组。两个整型数组分别用来依次存放两个随机生成的数(a,b),字符数组用来依次存放每个式子的运算符号(+、-、*、/),每次输出生成算式的结果时,调用函数,验证当次生成的a,b两个随机数和符号是否完全一样,如果完全一样,则此次结果不保存在数组中,也不输出,在主函数中和for循环中加一次循环,新生成一个式子。

4. 打印只要用两个用户输入的变量就可以控制,一个控制打印的张数,一个控制打印每个式子的间距。

二、源程序代码

#include<iostream>

#include<time.h>

#include<string>

#define n 5

using namespace std;

void display(int a,int b,char z,int &i,int d[],int e[],char f[]) //验证算式是否重复,输出函数

{

int j,K=1;

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

if(a==d[j] && b==e[j] && z==f[j])

K=0;

if(K!=0)

{

d[i]=a;

e[i]=b;

f[i]=z;

if(b<0)

cout<<a<<z<<"("<<b<<")="<<endl;

else

cout<<a<<z<<b<<"="<<endl;

}

else

i=i-1;

}

void suiji(int &a,int &b,int &c,string s1,string s2,string s3) //s1 数值范围 s2 乘除法 s3 负数

{

if(s1=="Y")

{

a=rand()%50;

b=rand()%50;

}

else

{

a=rand();

b=rand();

}

if(s2=="Y")

c=rand()%4;

else

c=rand()%2;

if(s3=="Y")

{

if(s1=="Y")

{

a=-rand()%76+25;

b=-rand()%76+25;

}

else

{

a=rand()-rand();

b=rand()-rand();

}

}

}

void main() //主程序

{

int a,b,c,i;
char z;
int d
;
int e
;
char f
;
string s1,s2,s3,s4;

srand((int)time(0));

cout<<"---------------------------四则运算出题小程序-------------------------"<<endl; cout<<endl;

cout<<"是否有负数?(Y or N)"<<endl;

cin>>s3;

cout<<"是否有乘除法?(Y or N)"<<endl;

cin>>s2;

cout<<"是否有数值范围?(Y or N)"<<endl;

cin>>s1;

cout<<"乘除法是否有余数?(Y or N)"<<endl;

cin>>s4;

for(i=0;i<n;i++)

{

suiji(a,b,c,s1,s2,s3);

if(c==0) //加法

{

z='+';

if(b<0)

display(a,b,z,i,d,e,f);

else

display(a,b,z,i,d,e,f);

}

if(c==1) //减法

{

z='-';

if(b<0)

display(a,b,z,i,d,e,f);

else

display(a,b,z,i,d,e,f);

}

if(c==2) //乘法

{

z='*';

display(a,b,z,i,d,e,f);

}

if(c==3)

{

z='/';

if(s4=="Y")

display(a,b,z,i,d,e,f);

else

{

int k;

k=a%b;

while(k!=0)

{

suiji(a,b,c,s1,s2,s3);

k=a%b;

}

display(a,b,z,i,d,e,f);

}

}

} //for循环

int x;

cout<<"请输入打印张数:"<<endl;

cin>>x;

cout<<"已成功提交!"<<endl;

}

三、运行结果截图









四、编程总结

这次的四则运算2其实算是对上一次四则运算1延伸,大体框架就是1,在加一些功能进去,就是2。

编完这个程序我发现,在编程序之前,一定要先有设计思路,在纸上要先写写画画,把大致的过程写出来,之后才能到电脑上编,如果直接上去就编,编着编着就乱套了,就不知道哪是哪了。

程序中的每一个功能,都可以用很多方法去实现,虽然结果都是一样的,但是在思维方面和借助的东西上就完全不一样,我觉得找对方法这一点就直接决定了程序的效率问题。所以在以后的学习中,一定要尽量找到最简便最有效率的方法去解决编程中出现的问题,避免不必要的麻烦。

以后我是想试着把这个做成一个小程序,比如手机app之类的东西,先多看一些书,然后慢慢来试试看吧。

五、时间记录日志

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: