【问题标题】:Multiplying through Addition [closed]通过加法相乘[关闭]
【发布时间】:2012-10-25 23:13:51
【问题描述】:

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

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

double multi(double n1, n2)
{

  double answer(0), i=0;

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

  return answer;
}

【问题讨论】:

  • input1input2 是什么?为什么你有n1n2 但不使用它们?
  • 这是几乎不可读的伪代码。清理演示文稿并使示例独立且完整。
  • 你可以使用加倍和减半吗?
  • @sftrabbit..apologies 我已经编辑了代码
  • @neil 我不知道那是什么..hmwk 指定将 2 个整数相乘而不使用乘法,但它应该与 neg #'s 一起使用

标签: c++ multiplication addition


【解决方案1】:

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

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

    // stuff goes here...

    return answer;
}

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

但请考虑,如果一个值为负,则如果该相同值为正,则相对于答案的结果将被否定。实际上,如果您要添加x 并执行y 次,那么如果y 为负数,则可以翻转xy 的符号。这否定了答案,并给你一个肯定的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 的副本加在一起X。如果Y 是负数,我将-Y 的副本加在一起-X

如果还是不行,那我建议你坐下来好好想想。

【讨论】:

  • ..是的,这是 hmwk..但很抱歉,我不明白你的意思..
  • 我已经编辑了我的答案以试图澄清。
  • 我要检查一下...感谢您花时间解释它有助于我更好地理解!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
相关资源
最近更新 更多