【问题标题】:Dividing an array equally in C在C中平均划分数组
【发布时间】:2011-05-20 08:10:38
【问题描述】:

我正在 Linux 中编写一个 C,分叉一个父级和 N 个子级。 Parent 取sqrt(ArraySize),其余的平均分配给N个孩子。

如何将数组的其余部分平均分配给 N 个孩子?\

提前谢谢:)

【问题讨论】:

  • 您有任何示例代码可以提供给我们吗?这样我们就可以为您提供与您非常相关的答案。相同的变量名等。
  • 答案是(unsigned)(((double)ArraySize - sqrt(ArraySize)) / N) 吗?

标签: c linux arrays divide


【解决方案1】:
int arraySize = 100; // You would get a count from the array here
int nChildren = 5; // This would be provided by you as a parameter to this function
int parentSize = sqrt(arraySize);
int remainder = arraySize - parentSize;
int nChildSize = (remainder / nChildren) + 1

【讨论】:

  • 这不处理余数不能在其他进程之间平均分配的情况。诚然,这个问题只是假设它可以!
【解决方案2】:

你并没有真正告诉我们足够的答案来给出完整的答案

Decide size of share for each child, also determine what to do with any "remainder"

For each child 
    allocate an array sufficient to hold the required number of value
    populate the array

你坚持哪一点?

【讨论】:

  • 差不多,但我认为没有必要分配新的数组。 C 中的数组只是指针,因此您可以拥有一个指针,用于沿着您感兴趣的数组部分前进。或者您可以按原样使用原始数组并将注意力限制在它的某些索引上。
  • @Robin - 是的,我应该提到这一点 - 在 Java 世界中待了这么久,我忘记了指针的使用。
  • @mingos - 这是一个严肃的答案,我们可以进一步详细说明。我的观点是,很多问题看起来都太难了,但是当你把它们分解成明确的更小的步骤时,它们就变得容易处理了。我正在努力帮助提问者处理他遇到的下一个问题,而不仅仅是这个问题。
  • 本质上,您要求提供更多输入而不是提供解决方案。尽管它可能很有帮助(我不质疑这一点:将问题分解为多个步骤确实有助于更好地理解问题),但我仍然认为它更适合作为评论:)。
猜你喜欢
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多