2012-10-25 43 views
-2

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

这是代码我迄今... 越来越疯狂的数字作为结果..我是一个noob..Thank你

double multi(double n1, n2) 
{ 

    double answer(0), i=0; 

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

    return answer; 
} 
+2

什么是'input1'和'input2'?为什么你有'n1'和'n2'但不使用它们? –

+0

这是几乎不可读的伪代码。清理演示文稿,让示例自成一体并完成。 –

+0

你允许使用加倍和减半吗? – Neil

回答

2

您可以通过使用整数,而不是双打开始,实际上传递他们既作为参数....

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

    // stuff goes here... 

    return answer; 
} 

我怀疑这是家庭作业,所以我不打算给你逐字代码...

但是考虑到,如果一个VALU e是负数,如果相同的数值是正数,结果将被否定。实际上,如果您要添加x并执行y次,那么如果y为负数,则可以翻转xy的符号。这否定了答案,并给你一个积极的y循环。

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


..yes这是hmwk..but对不起,我不明白你的意思..

想象一下,你有两个整数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是肯定的我加XY副本一起。如果Y是负数,我加在一起-Y副本-X

如果这仍然没有帮助,那么我建议你坐下来思考一段时间。

+0

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

+0

我已编辑我的答案,试图澄清。 – paddy

+0

我要检查这个......谢谢你的时间来解释它有助于我更好地理解! – user1766270