问题
形如 5 5 5 5 5 = 5这样的式子,要求给定5个数字,同时给定一个结果;
在这五个数字之间可以填写不同的运算符号,最终使这个等式成立,试通过列出所有的可能。
分析:
这样的题在中小学时候见过不少,只是单纯的求出一种可能比较简单,但要是求解出所有的可能结果,工作量很繁琐,
人工计算也可能有遗漏。要是在程序中通过代码将数学公式写出来就会简单很多。
四则运算中乘除运算优先于加减运算,在进行除法运算时,除数不能为0。
为了解决运算优先级问题,使用left和right变量来保存中间运算结果;
#include<iostream>
using namespace std;
int main()
{
int num[5],i[4],sign,result,count = 0; //五个数字,四个运算符号,符号标志(加减运算需要),结果,计数器
float left, right; //优先级,左右两边保存之前的结果,方便解决运算优先的问题,int是向下取整,会影响结果准确性,在这定义为float型
char oper[4] = {'+', '-', '*', '/' }; //运算符集合
cout << "Please input 5 numbers:";
for (int j = 0; j < 5; j++)
{
cin >> num[j];
}
cout << "Please input the result :";
cin >> result;
for (i[0] = 0; i[0] < 4; i[0]++) //0,1,2,3分别表示+,-,*,/;
{
if ((i[0] < 3) || (num[1] != 0)) //除数不能为0;
{
for (i[1] = 0; i[1]