随机生成四则运算式2-NEW+PSP项目计划(补充没有真分数的情况)
PS:这是昨天编写的随机生成四则运算式2的代码:http://www.cnblogs.com/wsqJohn/p/5264448.html 做了一些改进。
补:在上一次的运行中并没有加入真分数参与的运算,创建一个子函数string create_num()来随机生成一个数,大大简便了代码的复杂度。
// 按要求随机生成四则运算 王世强 2015/3/12
#include<fstream>
#include<iostream>
#include<stdlib.h>
#include<iomanip>
#include<time.h>
#include<cmath>
#include<string>
#include<stdio.h>
using namespace std;
#define random() (rand()%100000) //符号生成
char create_symbol(int n)
{
int n1,j;
char symbol[];
if(n==)
{
n1=;
}
else if(n=)
{
n1=;
}
j=random()%n1;
if(j==) symbol[]='+';
else if(j==) symbol[]='-';
else if(j==) symbol[]='*';
else symbol[]='/';
return symbol[];
}
//把数字转换成字符串型
string int_string(int number)
{
char str[];
itoa(number,str,);
string str_=str;
return str_;
}
//真分数合成一个字符串
string combination1(string str1,string str2,char k)
{
string equation;
equation=str1+k+str2;
return equation;
}
//新生成一个数
string create_num(int proper_fs,int range)
{
int num,num1,num2,fs;
string str_num,str_num1,str_num2;
num=random()%range+;
str_num=int_string(num);
if(proper_fs==)
{
fs=random()%;
if(fs==)//判断是否生成真分数
{
for(;;)
{
num1=random()%range+;
num2=random()%range+;
if(num1<num2) break;
}
str_num1=int_string(num1);
str_num2=int_string(num2);
str_num=combination1(str_num1,str_num2,'/');
}
}
return str_num;
}
//运算式转换成一个字符串
string combination(string str1,string str2,char k)
{
string equation;
equation=str1+' '+k+' '+str2;
return equation;
}
//主函数
int main()
{
srand((int)time(NULL)); //设置时间种子 ,使得程序每次运行的结果都不同
int num1,num2,num3,num4,count,n,change,amount,shuchu,range,j,repeat=,bracket,proper_fs;
string str_num1,str_num2,temp;
cout<<"有无乘除法?1有,0没有:"<<endl;
cin>>n;
cout<<"是否有括号?1有,0没有:"<<endl;
cin>>bracket;
cout<<"是否有真分数?1有,0没有:"<<endl;
cin>>proper_fs;
cout<<"题目是否在文件中输出?1是,0不是:"<<endl;
cin>>shuchu;
cout<<"请输入数字范围:"<<endl;
cin>>range;
cout<<"请输入出题数量:"<<endl;
cin>>amount;
string Equation[amount];
char symbol;
ofstream fout;
if(shuchu==)
{
fout.open("fl.txt");
fout<<生成的<<amount<<"道四则运算题如下:"<<endl;
}
else
{
cout<<生成的<<amount<<"道四则运算题如下:"<<endl;
}
for(int i=;i<amount;i++)
{
count=random()%+;
str_num1=create_num(proper_fs,range);
str_num2=create_num(proper_fs,range);
symbol=create_symbol(n);
Equation[i]=combination(str_num1,str_num2,symbol);
if(count>)
{
for(count;count>;count--)
{
symbol=create_symbol(n);
str_num1=Equation[i];
if(bracket==)
{
change=random()%;
if(change==)
{
str_num1='('+str_num1+')';
}
}
symbol=create_symbol(n);
str_num2=create_num(proper_fs,range);
change=random()%;
if(change==)
{
temp=str_num1;
str_num1=str_num2;
str_num2=temp;
}
Equation[i]=combination(str_num1,str_num2,symbol);
}
}
//判断是否重复
for(j=;j<i;j++)
{
if(Equation[j]==Equation[i])
{
i=i-;
repeat=;
break;
}
}
if(repeat!=)//若不重复,则输出
{
if(shuchu==)
{
fout<<Equation[i]<<"="<<endl;
}
else
{
cout<<Equation[i]<<"="<<endl;
}
} }
if(shuchu==)
{
fout.close();
}
}
实验结果截图:
文件输出时:
总结:原本昨天就把程序写完提交了,但是,想想还可以改进,就又忍不住修改了一下,争取做到更好!
项目计划总结:
日期&&任务 | 听课 | 编写程序 | 阅读相关书籍 | 网上查找资料 | 日总计 |
周一 | 2 | 4 | 2 | 2 | 10 |
周二 | 3 | 1 | 4 | ||
周三 | |||||
周四 | 2 | 2 | 4 | ||
周五 | 5 | 1 | 1 | 7 | |
周六 | 4 | 4 | |||
周日 | 2 | 2 | |||
周总计 | 4 | 18 | 5 | 4 | 31 |
时间记录日志:
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
3/7 | 14:00 | 15:50 | 10 | 100 | 听课 | 软件工程上课 |
16:00 | 18:20 | 140 | 编写程序 | 编写老师布置的作业 | ||
19:00 | 21:00 | 10 | 110 | 阅读书籍 | 《构建之法》 | |
21:00 | 24:00 | 20 | 160 | 网上查找资料,编程 | 作业2,讨论问题 | |
3/8 | 16:00 | 18:00 | 10 | 110 | 查资料,编写程序 | 作业2 |
21:00 | 21:50 | 50 | 阅读书籍 | 《构建之法》 | ||
3/9 | ||||||
3/10 | 14:00 | 15:50 | 10 | 100 | 听课 | 软件工程上课 |
19:00 | 21:20 | 20 | 100 | 查资料,编写程序 | 休息,聊天,作业2 | |
3/11 | 8:00 | 10:05 | 5 | 120 | 写博客 | 发表本周博客 |
16:10 | 18:30 | 10 | 140 | 修改程序,写博客 | 测试程序,发表博客 | |
19:00 | 19:40 | 40 | 阅读书籍 | 《构建之法》 | ||
19:45 | 21:45 | 10 | 110 | 写博客,修改程序 | 休息,聊天,发表博客 | |
3/12 | 15:20 | 19:50 | 30 | 240 | 修改程序,写博客 | 休息,谈论问题,修改,发表博客 |
3/13 | 19:00 | 19:30 | 30 | 阅读书籍 | 计划阅读《梦断代码》 |
缺陷记录日志:
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复时间 | 修复缺陷 |
3/11之前 | 1 | ... | ... | ... | ... | |
描述:之前的忘了统计,下次注意! | ||||||
3/12 | 2 | 20 | 编码 | 编译 | 15min | |
描述:修改累赘部分,采用了调用函数来新生成一个数。 |
随机生成四则运算式2-NEW+PSP项目计划(补充没有真分数的情况)的更多相关文章
- java 自动生成四则运算式
本篇文章将要介绍一个“自动生成四则运算式”的java程序,在没有阅读<构建之法>之前,我已经通过一个类的形式实现了要求的功能,但是当阅读完成<构建之法>之后,我意识到自己所写程 ...
- (幼儿园毕业)Javascript小学级随机生成四则运算
软件工程第二次结对作业四则运算自动生成器网页版 一.题目要求 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题. ...
- 用Java随机生成四则运算
代码链接:https://github.com/devilwjy/Code.Demo 需求分析: 1.程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符 ...
- 结对作业——随机生成四则运算(Core 第7组)
结对作业 ——随机生成四则运算(core第7组) 吕佳玲 PB16060145 涂涵越 PB16060282 GITHUB地址 https://github.com/hytu99/homework_2 ...
- 随机生成长度为len的密码,且包括大写、小写英文字母和数字
一道华三面试题,随机生成长度为len的密码,且包括大写.小写英文字母和数字,主要Random类的使用,random.nextInt(len)表示生成[0,len)整数.具体实现见下面代码,已经很详细了 ...
- Java随机生成18位身份证号
package com.ihome.data; import java.text.SimpleDateFormat; import java.util.Calendar; import java.ut ...
- js 随机生成姓名、手机号、身份证号、银行卡号
开发测试的时候,经常需要填写姓名.手机号.身份证号.银行卡号,既要符合格式要求.又不能重复.大家会到网上搜各种生成器.能不能自己写一个简单的生成器呢.下面是随机生成姓名.手机号.身份证号.银行卡号的j ...
- php随机生成验证码代码
<?php session_start(); //产生一个随机的字符串验证码 $checkcode=""; for ($i=0;$i<4;$i++){ $checkco ...
- python 随机生成固定长度的字串
from random import Random#随机生成4到20位的用户名def random_username(): username = '' chars = 'AaBbCcDdEeFfGgH ...
随机推荐
- Redis全方位讲解--哨兵模式(Sentinel模式)
前言 当按照上一篇<redis主从复制>部署好之后,我们会想,一旦redis的master出现了宕机,并且我们并没有及时发现,这时候就可能会出现数据丢失或程序无法运行.此时,redis的哨 ...
- 【npm 指令】 (不定时持续更新)
查看webpack所有的版本及更多信息 npm info webpack 查看webpack所有的版本 npm info webpack versions 查看webpack最新的版本 npm vie ...
- windbg调试虚拟机XP系统
一.先介绍一下被调试的虚拟机系统环境: 虚拟机:vmware workstation 10.0版本 虚拟机操作系统: Microsoft windows xp professional 2002 se ...
- 20190313-时间和日期-Time
概述 在Python中,与时间处理相关的模块有:time.datetime以及calendar,Python中通常有这几种方式表示时间:时间戳.格式化的时间字符串.时间元组(struct_time 共 ...
- 回文词 (Palindromes,Uva401)
例题 3-3 回文词 (Palindromes,Uva401) 输入一个字符中,判断它是否为回文串以及镜像串.输入字符串保证不含数字0.所谓回文串,就是反转以后和原串相同,如abba和madam.所有 ...
- scala (4) 可变数组和不可变数组
在scala中数组分为不可变长数组(在immutable包下)和可变长数组(在mutable包下) 不可变长数组指的是长度不可变,但是数组中角标对应的元素的值是可变的 可变数组指的是长度和数组中角标对 ...
- IEC的PLC编程语言标准 IEC61131-3
IEC的PLC编程语言标准(IEC61131–3) 中有5种编程语言:1)顺序功能图(Sequential function chart) :2)梯形图(Ladder diagram):3)功能块图( ...
- Freemarker入门(一)——入门与基本概述
1.概述 1.文档 完美的中文文档:http://freemarker.foofun.cn/ 2.是什么 FreeMarker是一个用Java语言编写的模板引擎.它基于模板来生成文本输出.Freema ...
- Hadoop安装配置
1.集群部署介绍 1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesy ...
- 20155218 《Java程序设计》实验三(Java面向对象程序设计)实验报告
20155218 <Java程序设计>实验三(Java面向对象程序设计)实验报告 一.实验内容及步骤 (一)编码标准 在IDEA中使用工具(Code->Reformate Code) ...