-3

我想创建一个函数,通过使用可以同时处理负数和正数的加法来找到两个整数的乘积。

这是我到目前为止的代码...得到疯狂的数字作为结果..我是菜鸟..谢谢

double multi(double n1, n2)
{

  double answer(0), i=0;

  do
  {
    answer += n1; i++;
  } while (i < n2);

  return answer;
}
4

1 回答 1

2

您可以从使用整数而不是双精度开始,并将它们都作为参数传递......

int multi( int x, int y )
{
    int answer = 0;

    // stuff goes here...

    return answer;
}

我怀疑这是作业,所以我不会逐字给你代码......

但是请考虑,如果一个值为负,则如果该相同值为正,则相对于答案的结果将被否定。有效地,如果您要添加x并执行y次数,那么您可以翻转两者的符号,x如果yy负数。这否定了答案,并给你一个积极y的循环。

一种优化是检查两个值中的哪一个较大,并使用较小的一个作为循环变量。


..是的,这是hmwk ..但我很抱歉我不明白你的意思..

假设你有两个整数XY。如果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我将. 如果是负数,我将.YXY-Y-X

如果这仍然没有帮助,那么我建议您坐下来考虑一下。

于 2012-10-25T23:22:22.670 回答