您的位置:首页 > 其它

四则运算2

2016-03-12 17:47 169 查看
本周对程序再做进一步的改进,要求满足如下条件:

1.题目避免重复。

2.可订制(数量/打印方式)

3.可以控制下列参数:

是否有乘除法

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

数值范围

加减有无负数

除法有无余数

分析如下:

面对问题,首先进行问题细化。根据以上要求,第一,生成一个随机数,通过取2的余数和取4的余数来选择有无乘除法。第二,通过#define random() (rand()%1000) 来选择数值范围。第三,通过控制表达式的结果是否为负选择加减有无负数。第四,通过两个操作数取余是否为0选择除法有无余数。以上条件均可供用户选择。

如下是本次程序的源代码:

//李妍 2015.3.12
//四则运算新
#include<iostream>
#include<fstream>
#include<iomanip>
#include<cmath>
#include<string>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;
#define random() (rand()%1000)

//是否有乘除法
char operator_random(int c1)
{
char o;
int c,c2;
if(c1==0)
{
c2=2;
}
if(c1==1)
{
c2=4;
}
c= (rand() % 100)%c2;
if (c == 0) o = '+';
else if (c == 1) o = '-';
else if (c == 2) o = '*';
else o = '/';
return o;
}

void main()
{
srand((unsigned)time(NULL));//设置时间种子 ,以使程序每次得到的结果都不同
int c1,number,output_mode,value_range,num_1,num_2,plus_or_minus,yushu,j,x,kuohao;
char o;
cout<<"是否有乘除法?0否 , 1是:"<<endl;
cin>>c1;
cout<<"题目如何输出?0在文件中输出 ,1在此直接输出:"<<endl;
cin>>output_mode;
cout<<"请输入数值范围:"<<endl;
cin>>value_range;
cout<<"有无括号?0没有,1有"<<endl;
cin>>kuohao;
cout<<"加减有无负数?0没有,1有:"<<endl;
cin>>plus_or_minus;
cout<<"除法有无余数?0没有,1有:"<<endl;
cin>>yushu;
cout<<"请输入题目的数量:"<<endl;
cin>>number;
ofstream fout;
if(output_mode==0)
{
fout.open("yunsuan.txt");
fout<<number<<"道随机四则运算:"<<endl;
}
else
{
cout<<number<<"道随机四则运算:"<<endl;
}
for (int i = 0; i < number; i++)
{
num_1=random()%value_range+1;
num_2=random()%value_range+1;
o=operator_random(c1);
int j=num_1-num_2;
int x=num_1%num_2;

if(output_mode==0)
{
if(((j<0)&&(plus_or_minus==0))||((j>=0)&&(plus_or_minus==1))||((x!=0)&&(yushu==0))||((x==0)&&(yushu==1)))
{
i--;
}
else
{
fout<<num_1<<o<<num_2<<"="<<endl;
}
}
else
{
if(((j<0)&&(plus_or_minus==0))||((j>=0)&&(plus_or_minus==1))||((x!=0)&&(yushu==0))||((x==0)&&(yushu==1)))
{
i--;
}
else
{
cout<<num_1<<o<<num_2<<"="<<endl;
}
}
}
if(output_mode==1)
{
fout.close();
}
}








总结:当老师布置这个作业的时候,我觉得自己不可能完成,但是通过自己的努力,一点一点查阅资料和一行一行编写代码,最终完成了这个任务。面对编程我有了一些信心,希望自己可以再接再厉,加油!

项目计划日志:



时间记录日志:



缺陷记录日志:

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