代码之家  ›  专栏  ›  技术社区  ›  KellCOMnet

给定一个总数,确定一个值将进入它的次数

  •  6
  • KellCOMnet  · 技术社区  · 15 年前

    问题:

    一个盒子可以装53件物品。如果一个人有56件物品,需要2个盒子来装。框1将容纳53个项目,框2将容纳3个项目。

    如何重复上面的内容,其中53是一个常量,不变的值,56是每个框的变量:

    Math.Ceiling(Convert.ToDecimal(intFeet / 53))
    

    到目前为止,我的目的是:

    int TotalItems = 56; 
    int Boxes = Math.Ceiling(Convert.ToDecimal(intFeet / 53));  
    
    for (int i = 0; i < Boxes; i++)
    {  
        int itemsincurrentbox=??  
    }  
    
    6 回复  |  直到 12 年前
        1
  •  17
  •   Bill the Lizard    15 年前

    其中整数 capacity numItems 您的箱子容量(示例中为53)和您拥有的物品总数是否使用以下两种计算方法:

    int numBoxes = numItems / capacity;
    int remainder = numItems % capacity;
    

    这将为您提供已填充的框数( numBoxes )和附加框中的项目数( remainder )如果需要,因为该值可以是0。

    编辑:正如Luke在评论中指出的,使用.NET类库函数可以得到相同的结果。 Math.DivRem .

    int remainder;
    int numBoxes = Math.DivRem( numItems, capacity, out remainder );
    

    此函数返回商并将余数放入输出参数。

        2
  •  7
  •   Luke Schafer    15 年前

    简单、过于必要的例子:

    int itemsPerBox = 53;
    int totalItems = 56;
    int remainder = 0;
    int boxes = Math.DivRem(totalItems, itemsPerBox, out remainder);
    for(int i = 0; i <= boxes; i++){
        int itemsincurrentbox = i == boxes ? remainder : itemsPerBox;
    }
    
        3
  •  1
  •   womp    15 年前

    使用模数运算符确定余数。快速实例:

    int totalBoxes = Math.Ceiling(Convert.ToDecimal(intFeet / 53));
    
    List<int> boxes = new List<int>();
    for (int i=0; i< totalBoxes; i++)
    {
      if (i == totalBoxes-1) 
          boxes.Add(intFeet % 53)
      else 
          boxes.Add(53);
    }
    
        4
  •  1
  •   Jason    15 年前

    尝试使用模数?

    x % y
    
        5
  •  1
  •   johnc    15 年前

    如果我正确理解这个问题,除最后一个框外的所有框将容纳53个项目,而最后一个框将容纳Intfeet%53(Intfeet Mod 53,或Intfeet和53除后的剩余部分)。

    然而,这个循环不需要回答你的问题;

    int totalItems = 56;
    int boxes = Math.Ceiling(Convert.ToDecimal(totalItems / 53)) + 1;
    for(int i=0; i< boxes;i++)
    {
       int numberInBoxes = i != boxes -1 ? 53 : totalItems % 53;
    }
    
        6
  •  0
  •   BCS    15 年前

    除了最后一个盒子外,其余的都有53个。关于计算完整框数和最后一个框中的项目数,请查找整数除法和模。