首页 > 其他分享 >结对项目:生成四则运算

结对项目:生成四则运算

时间:2024-09-24 17:48:19浏览次数:7  
标签:结对 30 20 四则运算 真分数 生成 60 题目

个人项目——论文查重

这个作业属于哪个课程 计科12班
这个作业的要求在哪里 作业要求
这个作业的目标 实现一个自动生成小学四则运算题目的命令行程序

github链接:github

题目需求

  1. 使用 -n 参数控制生成题目的个数,例如

Myapp.exe -n 10

将生成10个题目。

  1. 使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围,例如

Myapp.exe -r 10

将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。该参数必须给定,否则程序报错并给出帮助信息。

  1. 生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1− e2的子表达式,那么e1≥ e2。
  2. 生成的题目中如果存在形如e1÷ e2的子表达式,那么*其结果应是真分数*
  3. *每道题目中出现的运算符个数不超过3个。*
  4. 程序一次运行生成的题目不能重复,*即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目*。例如,23 + 45 = 和45 + 23 = 是重复的题目,6 × 8 = 和8 × 6 = 也是重复的题目。*3+(2+1)和1+2+3这两个题目是重复的,由于+是左结合的,1+2+3等价于(1+2)+3,也就是3+(1+2),也就是3+(2+1)。但是1+2+3和3+2+1是不重复的两道题,因为1+2+3等价于(1+2)+3,而3+2+1等价于(3+2)+1,它们之间不能通过有限次交换变成同一个题目。*

生成的题目存入执行程序的当前目录下的Exercises.txt文件,格式如下:

  1. 四则运算题目1
  2. 四则运算题目2

……

其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。

  1. 在生成题目的同时,计算出所有题目的答案,并存入执行程序的当前目录下的Answers.txt文件,格式如下:

  2. 答案1

  3. 答案2

特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24。

  1. 程序应能支持一万道题目的生成。
  2. 程序支持对给定的题目文件和答案文件,判定答案中的对错并进行数量统计,输入参数如下:

Myapp.exe -e .txt -a .txt

统计结果输出到文件Grade.txt,格式如下:

Correct: 5 (1, 3, 5, 7, 9)

Wrong: 5 (2, 4, 6, 8, 10)

其中“:”后面的数字5表示对/错的题目的数量,括号内的是对/错题目的编号。为简单起见,假设输入的题目都是按照顺序编号的符合规范的题目。

psp表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 60 30
· Estimate · 估计这个任务需要多少时间 180 240
Development 开发 120 150
· Analysis · 需求分析 (包括学习新技术) 60 30
· Design Spec · 生成设计文档 30 20
· Design Review · 设计复审 30 20
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 30 20
· Design · 具体设计 60 60
· Coding · 具体编码 60 70
· Code Review · 代码复审 20 20
· Test · 测试(自我测试,修改代码,提交修改) 20 60
Reporting 报告 30 60
· Test Repor · 测试报告 60 30
· Size Measurement · 计算工作量 20 20
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 30
· 合计 800 860

接口设计

App函数为整个程序的入口,Calculate类负责对字符串进行计算,通过两个栈实现对不同运算符号优先级的处理,并返回结果字符串,Generate类负责生成四则运算,对于小范围的数据,使用双符号使得生成的数量能尽量大,对于大范围的数据,使用单符号,就可以保证生成出10000个算式,同时,将不同位置的数字使用不同的选择奇偶,保证生成的算式不会重复,Check类负责调用以上两个类,对文件的计算结果进行判断,IOUtil负责实现写入写出操作

性能分析

原本的代码中,将含有除法的运算结果进行格式化,每个算式跑了1e7次来保证正确性,后来发现对性能的影响太大,将其设置为1e4,能满足基本需求

对于其他的代码,性能接近线性

测试部分

生成100范围以内的算式10000个,从输出文件中可知符合要求

验算算式,将上方生成的答案进行修改,发现代码正确找出了错误的结果

异常处理

当参数输入过少时将不会执行程序,提示输入正确的参数

当参数不符合要求时报错

标签:结对,30,20,四则运算,真分数,生成,60,题目
From: https://www.cnblogs.com/nowiam/p/18429703

相关文章

  • C#在Winform中截图指定控件中的内容生成图像
    开发上位机过程中,收到需求:在软件跑完数据之后保存报告和图表截图。因为界面控件都做了大小拉伸缩放的适配,所以简单的设置截图起始点和长宽时无法满足需求的。所以要做一个根据控件本身大小来做截取动作的功能,所以我写了一个截取指定控件内图像的函数。 函数如下,只需传入控件,和存......
  • 国内大厂这款「一站式」AI视频创作平台,一键将剧本生成视频!实测体验(附内测申请)
    大家好,我是程序员X小鹿,前互联网大厂程序员,自由职业2年+,也一名AIGC爱好者,持续分享更多前沿的「AI工具」和「AI副业玩法」,欢迎一起交流~AI现在已经可以一键创作剧本、生成分镜图了?今天介绍的这个一站式AI视频创作平台厉害了!它可以自动将剧本拆分成分镜图,并转化成视频。还将多种......
  • MemLong: 基于记忆增强检索的长文本LLM生成方法
    本文将介绍MemLong,这是一种创新的长文本语言模型生成方法。MemLong通过整合外部检索器来增强模型处理长上下文的能力,从而显著提升了大型语言模型(LLM)在长文本处理任务中的表现。核心概念MemLong的设计理念主要包括以下几点:高效扩展LLM上下文窗口的轻量级方法。利用不可训练的外部记......
  • SAP 销售凭证流增加自主生成的凭证
    在标准销售凭证流增加自定义凭证信息,本质上是ALVTREE增加显示内容1、显示结果,新增一个会计凭证,此凭证是使用F-02生成,但是凭证挂接着交货单号信息,可通过交货单号信息与正常凭证流程挂接 2、实现此结果,使用到的增强有两处(1)  (2)第二个增强,在凭证流中选中这个预折会计凭证......
  • 2024年中国生成式AI行业最佳应用实践|附100页PDF文件下载
    前言8月28日,由弗若斯特沙利文(Frost&Sullivan,简称“沙利文”)主办的第十八届中国增长、科创与领导力峰会暨第三届新投资大会上,沙利文携手头豹研究院共同发布了《2024年中国生成式AI行业最佳应用实践》报告,并揭晓了多项实践方案大奖。其中,商汤科技与海通证券凭借双方联合打造的金融......
  • 美图视频生成大模型「奇想」完成升级;李飞飞:空间智能不仅适用虚拟世界生成,还可融合现实
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 勤哲Excel服务器自动生成网络工程管理信息化系统
    在当今信息化技术高速发展的时代,有线网络工程作为信息交流和数据传输的重要基础设施,已经渗透到各个领域。有线网络工程的规模和复杂性日益增长,对其全面管理的需求也与日俱增。传统的人工管理已经无法满足大规模网络环境下的管理需求,因此,信息化管理成为必然的趋势。据悉,有线网络......
  • .net core 使用QRCoder在linux 下生成带logo的二维码
    1使用nuget安装QRCoder、SkiaSharp、SkiaSharp.NativeAssets.Linux.NoDependenciespublicIActionResultQrCode(stringcontent,intpixel){content=HttpUtility.UrlDecode(content);stringlogoPath=Path.Combine(AppContext.BaseDirectory,"wwwroot"......
  • cmd fsutil生成指定大小文件
    概要>fsutilfilecreatenew/?用法:fsutilfilecreateNew<filename><length>例如:fsutilfilecreateNewC:\testfile.txt1000生成单位:Byte测试用例生成1KB的文件fsutilfilecreateNew1.txt1024生成1MB的文件2^20=1024*1024=1048576fsutilfilec......
  • vue根据页面标签生成图片打印
    安装npminstallhtml2canvas安装npminstallprint-jsimporthtml2canvasfrom'html2canvas';importprintfrom'print-js'<template><div><divid="content-to-convert"style="width:772px;">......