通过加法相乘

时间:2012-10-25 23:13:51

标签: c++ multiplication addition

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

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

double multi(double n1, n2)
{

  double answer(0), i=0;

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

  return answer;
}

1 个答案:

答案 0 :(得分: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为正,我会Y XY副本。如果-Y为否定,请将-X的{​​{1}}份副本加在一起。

如果这仍然无济于事,那么我建议你坐下来思考一下。