zoukankan      html  css  js  c++  java
  • 第一次作业

    四则运算题目生成程序

     

    个人作业1——四则运算题目生成程序(基于控制台)

    需求分析

     1、控制运算表达式题目数量,控制题目中数值的大小

     2、题目中存在分数形式要进行约分

     3、运算符个数不能超过3个

     4、不能出现重复题目,即两个运算表达式的计算步骤不能完全相同

     5、程序支持生成10000道题目

     6、程序同时支持计算生成的每道题目,并对结果进行约分

     7、对用户所做答案进行判断,并且输出正确答案或错误答案

    功能设计

     基本功能 

      1、随机生成运算表达式

      2、重复题目查询

      3、四则运算计算功能

      4、对运算表达式中数值和对计算结果进行约分

    设计实现

     1、根据随机生成2个数值进行合成,产生一个分数,如果是分数要进行约分,和随机生成运算符,组成一个只有两个运算符的表达式

     2、表达式中存在除法,并且除法后面是括号,则要判断括号内结果不能为0,即除数不能为0,如7÷(3-3)这是不符合的,要重新生成题目

     3、四则运算表达式计算,分为有括号和无括号,有括号先计算括号内,无括号按四则运算法则运算

     4、将所有的数值都转为分数形式,整数分母为1,在分别取出分子和分母,方便后面做分数计算

     5、重复题目判断,只有两个运算符只进行两步,先判断结果是否相同,再比较第一步骤运算是否完全相同,如果存在括号第一步即为计算括号内的,取出括号内的运算符和数值;无括号则按运算法则取出第一步运算过程中运算符和数值。比较运算是否相同,相同再比较数值,是否存在完全相同的数值,都满足,则这两道题目重复

    代码说明

    使用C++编写,源代码所存位置:https://coding.net/u/zxb6308/p/work01/git

    下面是时间预估PSP:

    PSP2.1

    Personal Software Process Stages

    Time Senior Student

    Time

    Planning

    计划

    1h

    1h

    · Estimate

    估计这个任务需要多少时间

    7天

    6天

    Development

    开发

    5天

    5天

    · Analysis

    需求分析 (包括学习新技术)

    2h

    1.5h

    · Design Spec

    生成设计文档

    1h

    1h

    · Design Review

    设计复审

    1h

    3h

    · Coding Standard

    代码规范

    4h

    4h

    · Design

    具体设计

    1天

    1天

    · Coding

    具体编码

    4天

    4天

    · Code Review

    代码复审

    5h

    4h

    · Test

    测试(自我测试,修改代码,提交修改)

    3h

    5h

    Reporting

    报告

    4h

    3h

    ·

    测试报告

    3h

    2h

    ·

    计算工作量

    10分钟

    0

    ·

    并提出过程改进计划

    1h

    30分钟

    这是约分和分数合成的代码,主要是传入2个随机数,先进行约分化简,再合成分数(字符串类型),在返回

    string fraction(int num1, int num2)
    {
    
    	char buff[50] = "";
    	int t, z;
    	string str;
    	if (num1 % num2 == 0)
    	{
    		sprintf(buff, "%d", num1 / num2);
    		str += buff;
    		return str;
    	}
    	for (int i = 9; i>1; i--)
    	{
    		if (num1%i == 0 && num2%i == 0)
    		{
    			num1 = num1 / i;
    			num2 = num2 / i;
    		}
    	}
    	if (num1>num2)
    	{
    		t = num1 / num2;
    		z = num1 - t*num2;
    
    		sprintf(buff, "%d'%d/%d", t, z, num2);
    		str += buff;
    
    	}
    	else
    	{
    		sprintf(buff, "%d/%d", num1, num2);
    		str += buff;
    
    	}
    	return str;
    
    }
    

      


    下面是一些运行结果:

    控制台

    Answer.txt文件:

    Exercises.txt文件

    Grade.txt文件

     10000道题目生成测试的Exercises.txt和Answer.txt文件:

     

    这次作业大体上是完成了,但还是有些不足,查重只能比较2个式子是否完全一样,

    但是通过这次作业我对C++又有很好的学习。

  • 相关阅读:
    门禁控制系统的状态机-《实时控制软件设计》第二周作业
    [leetcode] Single Number
    [leetcode] Candy
    [leetcode] Gas Station
    [leetcode] Clone Graph
    [leetcode] Palindrome Partitioning II
    [leetcode] Palindrome Partitioning
    [leetcode] Surrounded Regions
    [leetcode] Sum Root to Leaf Numbers
    [leetcode] Longest Consecutive Sequence
  • 原文地址:https://www.cnblogs.com/zxb630866690/p/7575219.html
Copyright © 2011-2022 走看看