简单运算生成及求解

(1)GitHub链接:https://github.com/Victorbatman/jieduixiangmu/
(2)PSP表格:

PSP2.1

Personal Software Process Stages

预估耗时(小时)

实际耗时(小时)

Planning

计划

1.5

2

Estimate

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

2

3

Development

开发

5.5

5

Analysis

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

12

16

Design Spec

生成设计文档

3.5

2

Design Review

设计复审(和同事审核设计文档)

1

1.5

Coding Standard

代码规范(为目前的开发制定合适的规范)

2

1

Design

具体设计

2

3

Coding

具体编码

14

17

Code Review

代码复审

2

1

Test

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

11

8

Reporting

报告

2

4

Test Report

测试报告

3

2

Size Measurement

计算工作量

4

3

Postmortem & Process Improvement Plan

事后总结,并提出过程改进计划

2

4

 

合计

67.5

72.5


(3)解题思路及资料查找:
刚开始看到四则运算这个题目时,感觉很简单,但是后面的要求特别多,感觉一时不知从何处下笔的,先说一说生成吧,四则运算的生成,我主要借助了随机数来进行生成四则运算,那么问题来了,要生成出一个表达式,我们需要有操作数和操作符,生成的算式的长度是根据操作数的多少还是操作符的数量,考虑到加减乘除都是二元运算符,所以我是根据随机生成的运算符的个数来决定操作数的个数,也就是说,利用操作符的二元性进行匹配操作数,我的操作数也是随机产生的,于随机产生的操作符匹配上随机产生的操作数就构成了我的算式。

对于一个已经输入的算式,我需要将它计算出,而输入的是一个字符串,经过查资料,我了解到,我们输入的是中缀表达式,如果是要进行计算,我们需要将中缀表达式转换为后缀表达式,了解到可以利用栈的操作进行转换,转换为后缀表达式之后,我们可以进行计算,利用一个数组,每生成的一个表达式立即转换为后缀表达式,再计算出结果,存入定义好的的数组中,在数组中我们存入的是对应算式的结果,然后定义一个变量,当用户输入时,监控用户输入的哪一个算式,然后将数组中于该算式对应的值和变量的值判断相等即可。
(4)在设计过程中,难度较大的地方在于,如何将一个字符串转换为我们的算数表达式,这里要根据后缀表达式来进行,而不能简单的利用字符串进行处理。在判断结构设计时,一开始自己并不知道如何要去设计判断,最后经过和别的同学讨论才发现,可以直接利用数组存入结果,再利用一个变量来监控用户的输入,与定义好的数组进行匹配判断即可。

(5)我的生成代码:
//随机数式生成
void create()
{
 char shift[4]={'+','-','*','/'};
 int s1,s2;
 int op[11],temp;
 char string[100];
 for(int i=1;i<=1000;i++)
 {
  s1=rand()%4+1;//操作符个数
  for(int j=1;j<=s1;j++) //生成操作符
  { 
   op[j]=rand()%4;
   temp=rand()%100+1;
  
   printf("%d",temp);
   printf("%c",shift[op[j]]);  
  }
  temp=rand()%100+1;
   
   printf("%d",temp);
   printf("\n"); 
 }
}

组队队友:李*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值