概要设计
打招呼并判断用户是否使用该程序
1)获取数据确认用户使用该程序时提醒用户输入数据
判断用户输入数据的合法性并将合法数据存入数组
循环体1:控制第一个运算符
2)运算部分循环体2:控制第二个运算符
循环体3:控制第三个运算符
比较运算部分的结果与24:采用3个循环结构
3)输出结果打印出第一个可能的结果,终止程序
输出
没有结果时输出提示信息,终止程序
详细设计
先来分析输入部分的设计原理,作为程序的设计者,和用户的沟通是很重要的。
所以开头设计了一个打招呼函数,在该函数中向用户说明程序的功能并征求用户是否开始该程序。
这样的设计思路更加人性化。
不仅如此,在输入数据时,设计一个循环结构,用来检测用户输入的数据是否合法,如果超出取值范围会提醒用户重新输入。
这样就能够比较顺利地完成数据的获取任务。
基于穷举和简化算法结构两个出发点,该程序主体采用的是循环结构。
首先,考虑到四个数之间只能有三个运算符,每种运算符都有四种可能(加、减、乘、
除)。
所以总共有4*4*4种可能的组合方式(暂不考虑家括号下的运算顺序),所以我设计了三重循环。
分别以i,j,k作为计数变量,先固定i、j保持不变,k从0变到3,分别表示按照加、减、乘、除的方式依次循环,然后再让i保持不变,让k由0变到1,再将k循环从0到3循环一次,以此往复就可以把运算符所有可能的组合穷尽。
当然这是算法实现的基本过程,而在将运算方式(加、减、乘、除)与计数变量联系起来的桥梁就是函数。
函数可以对两个整数进行处理,要使其根据计数变量的不同进行不同的类型的运算,就叫引入一个新的变量,在执行函数功能时让它作为开关(在该程序中,0代表加,1代表减,2代表乘,3代表除)就可以了。
最后一部分即输出部分给出了运算结果,先采用循环结构比较结果值与24是否相等(由于计算机本身精度的原因,其实只要当结果和24的差值足够小时就可以确定这种可能是可以得出24的),如果判断成立,马上输出结果并停止进一步的循环检测(减少运算量,提高效率);如果没有可能,就输出“NO SOLUTION!”提醒用户所输入的四个数无法组合形成24。
在这一步就会发掘出运算部分的四维数组的优势,中括号中的数字组合刚好对应一定的运算方式,在打印过程中就有章可循了。
总的设计思路还是按照解决问题的一般逻辑问题进行的,其中不乏很多以前没有实践过的思路和方法,而且也会涉及到一些其他方面的知识,比如电脑本身的数据结构、精度等等。
所以一个完整的程序需要合乎逻辑的算法,以及多方面的考虑和技术的支持。