我想创建一个函数,通过使用可以处理负数和正数的加法来找到两个整数的乘积。
这是我到目前为止的代码...... 得到疯狂的数字作为结果..我是一个菜鸟。谢谢你
double multi(double n1, n2)
{
double answer(0), i=0;
do
{
answer += n1; i++;
} while (i < n2);
return answer;
}
答案 0 :(得分:2)
您可以先使用整数而不是双精度,然后将它们作为参数传递......
int multi( int x, int y )
{
int answer = 0;
// stuff goes here...
return answer;
}
我怀疑这是作业,所以我不打算逐字地给你代码......
但请注意,如果一个值为负数,则相对于答案,如果相同的值为正,则结果将被否定。如果您要添加x
并执行y
次,则有效,如果x
为否定,则可以翻转y
和y
的符号。这会否定答案并给你一个积极的y
来循环。
优化是检查两个值中哪一个更大,并使用较小的一个作为循环变量。
..是的,这是hmwk ..但我很抱歉,我不明白你的意思..
想象一下,您有两个整数X
和Y
。如果Y
为正数,则很容易看到:
X * Y = (X + X + X + X + ...)
现在,如果Y
是负面的呢?我将使用-Y
来表示:
X * -Y = -(X * Y)
= -(X + X + X + X + ...)
= (-X - X - X - X - ...)
= ((-X) + (-X) + (-X) + (-X) + ...)
因此,如果Y
为正,我会Y
X
个Y
副本。如果-Y
为否定,请将-X
的{{1}}份副本加在一起。
如果这仍然无济于事,那么我建议你坐下来思考一下。