【问题标题】:How would I apply the remainder/modulus operator here?我将如何在这里应用余数/模数运算符?
【发布时间】:2013-10-05 21:52:14
【问题描述】:

这不是一个直接的编程问题,因为它与特定代码无关,但这确实涉及余数/模数运算符。

我有一个用于偶数输入值的公式和一个用于奇数输入值的公式,但在我的程序中,我需要以某种方式将这两者结合起来,以便得到一个适用于偶数和奇数输入的公式。

****(我有两个整数值,x 和 y,当我说偶数输入值时,我的意思是当你添加 x 和 y 时,数字是偶数;对于奇数输入也是如此)* *

偶数公式:1 + sqrt(((x - 10)^2) + ((y - 10)^2))

奇数值的公式:1 + (((abs(x - 10)) + (abs(y - 10)))/(2))

我确实注意到这两个公式非常相似,我向我的教授询问了这个问题,他确实暗示使用余数/模数运算符。

起初,我考虑将两个公式除以 2,然后将它们相加,这样其中一个值为 0,因此,只使用其中一个公式。但是当我插入值时,我意识到偶数输入的答案并不总是偶数。所以现在我不确定我将如何解决这个问题。

非常感谢任何形式的帮助。

以下是一些值:

注意:y 值不限于 10,我只是使用了 10,这样我可以更轻松地手动计算值。

【问题讨论】:

  • 算法/程序/函数应该做什么不是很清楚。你能展示一些示例输入和输出吗?
  • 当然是 Juhana!我会提出一些我得到的值,Gangadhar,我需要先弄清楚这一步,然后才能开始编码。 (我需要先把公式翻译成c)
  • 公式在什么意义上相似? (第一个有平方根,第二个没有,......) - 你所说的“结合两者”是什么意思? if ((x+y) % 2 == 0) { ... } else { ... }够好吗?
  • Martin R:第二个公式的内容似乎几乎完全相同,只是有绝对值并除以2。而第一个公式有平方根,但内容相似。我同意使用 if/else 语句,但我的教授说我们不允许使用它们。 :(这就是为什么我对这个问题如此困惑。:(

标签: c math modulus


【解决方案1】:

如果你有“如果 x + y 是奇数则 a(x, y) else b(x, y)”,你可以使用模数运算符将其转换为公式,如下所示:

((x + y)%2) * a(x, y) + (1 - (x + y)%2) * b(x, y)

一个括号是零,另一个是零,这取决于你所处的情况。不过,我无法想象一个有用的应用程序,尤其是在 C 语言中。在像 R 这样的矢量化语言中,可能会有一些动机对于这种代码。

【讨论】:

  • 谢谢!抱歉,有个问题,a(x​​, y) 和 b(x, y) 会是我的两个公式吗?
  • @Karen:是的,我用它们作为占位符,这样我就不必输入所有这些东西了。
猜你喜欢
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 1970-01-01
相关资源
最近更新 更多