[高分悬赏满意再追加]求一个算法函数,描述如下:
函数需求如下:传5个值X1、X2、X3、X4、X5传给函数后返回处理后的X1、X2、X3、X4、X5五个值算法规则如下:X1-X2-X3-X4-X5将X1轮流去减X2、X...
函数需求如下:
传5个值X1、X2、X3、X4、X5传给函数后 返回处理后的X1、X2、X3、X4、X5五个值
算法规则如下:X1-X2-X3-X4-X5 将X1轮流去减X2、X3、X4、X5
1:减数-被减数如果结果>0 则将获得的值赋值给被减数 减数赋值为0 例如:X1-X2>0 则X2=X1-X2 X1=0 函数继续 将X2去减X3
X1 X2 X3 X4 X5
例如 10 2 3 4 5 10-2>0 第一次减完后5个数分别为: 0 8 3 4 5 函数继续 将8-3
2: 减数-被减数如果结果=0 则减数和被减数全部赋值为0 函数停止 后面没减到的值全为原值
X1 X2 X3 X4 X5
例如 20 20 3 4 5 20-20=0 减完后5个数分别为: 0 0 3 4 5 函数停止
3:减数-被减数如果结果<0 则将获得的值赋值给被减数(可调换减数、被减数位置或者将结果乘以-1) 减数赋值为0 函数停止 后面没减到的值全为原值
X1 X2 X3 X4 X5
例如 1 2 3 4 20 1-2<0 减完后5个数分别为: 0 1 3 4 20 函数停止 展开
传5个值X1、X2、X3、X4、X5传给函数后 返回处理后的X1、X2、X3、X4、X5五个值
算法规则如下:X1-X2-X3-X4-X5 将X1轮流去减X2、X3、X4、X5
1:减数-被减数如果结果>0 则将获得的值赋值给被减数 减数赋值为0 例如:X1-X2>0 则X2=X1-X2 X1=0 函数继续 将X2去减X3
X1 X2 X3 X4 X5
例如 10 2 3 4 5 10-2>0 第一次减完后5个数分别为: 0 8 3 4 5 函数继续 将8-3
2: 减数-被减数如果结果=0 则减数和被减数全部赋值为0 函数停止 后面没减到的值全为原值
X1 X2 X3 X4 X5
例如 20 20 3 4 5 20-20=0 减完后5个数分别为: 0 0 3 4 5 函数停止
3:减数-被减数如果结果<0 则将获得的值赋值给被减数(可调换减数、被减数位置或者将结果乘以-1) 减数赋值为0 函数停止 后面没减到的值全为原值
X1 X2 X3 X4 X5
例如 1 2 3 4 20 1-2<0 减完后5个数分别为: 0 1 3 4 20 函数停止 展开
展开全部
你把减数跟被减数弄反了。 被减数-减数=差。 被减数在减号前面 。
函数继续 将8-3 ,这个到哪里结束,你没说清。 是不是只要到x4-x5就可以了,还要不要反过来 。x5-x1这样子。 如果是前者,那么这个算法只是简单的几个语句,后者的话,则要循环过程 。我依前者写。
利用 && 这个逻辑运算符的特点 ,a&&b 如果a为false,则不会管b的结果 。
#include <iostream>
#include<cstdio>
using namespace std;
bool solve(int &x1,int &x2)
{
if(x1>x2) { x2=x1-x2; x1=0;return true; }
else if(x1==x2) { x1=0; x2=0; }
else { x2=x2-x1; x1=0; }
return false;
}
void funtion(int &x1,int &x2,int &x3,int &x4,int &x5)
{
if(solve(x1,x2)&&solve(x2,x3)&&solve(x3,x4)&&solve(x4,x5)){}
}
int main()
{
int x1,x2,x3,x4,x5;
x1=10,x2=2,x3=3,x4=4,x5=5;
funtion(x1,x2,x3,x4,x5);
printf("%d %d %d %d %d\n",x1,x2,x3,x4,x5);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询