四则运算(感谢吴志远同志为我的代码提供的改进)

发布时间 2023-12-09 10:26:00作者: 20232321罗乙又

我截的图不完全(请自行补充)

1.确定这次题目的个数和范围,以及得到4个随机数(补充:1.鄙人能力有限只能到达整数和分数,真分数确实不会2.我直接来4个是为了之后我分了3种类都可以使用计算方便,各位也可以根据不同的类别定义分别定义2,3,4个随机数)

2.我用3个元素的数组定义了符号位,每个元素范围是0到3,数字代替算术运算符(补充:为防止出现/号后面有0的情况我做了一个循环),最后我定义了一个数组(也就是你看到的h数组),他长这样(元素,运算符,元素,运算符,元素,运算符,元素,0,0)(后面的0,0,与算法无关只是为了改进一个特殊情况,将在下文说明)

3.最关键的如何让计算机计算函数的答案(我以3个运算符为例子(本质上可以计算n个运算符))

4.第一步算乘除:首先打印题目让玩家可以计算answer,并且先找到2元运算符*,/;在让符号两边的元素进行相应的计算;算完后让前一个数为0后一个数为这次计算的答案(我在第三步算加减时是从左往右计算的,把不是减法的都加起来);接着找下一个2元运算符。(我有个表达错误,我们最后的答案不是这个result,而是计算完第二三步后的result的,你可以用temp代替这里的result,但是这个表达错误不影响结果(所以我不改正))



5.第二步解决特殊情况:如果在进行一次连续的*或/前的符号是减号,我们就应该交换,那交换那个,如何判断,请看图



6.第三步算加减:就像第一步图片说的那样把不是减法的运算都看做加法(重要);当然还有计算你自己的答案并判断是否正确(这不重要)。

7.进行两次运算就把7改为5

8.如果你有更好的方法或你会命令行,请赐教(第一次把自己想的算法写博客,可能写的不好,(。・_・。)ノI’m sorry~)

https://www.cnblogs.com/kitaikuyo/p/17884007.html