问题在于:
一张纸包含10个标签。我想打印许多标签,但是从任意的起始索引。现在,我想找到打印用户所需标签需要多少张纸。例如,假设我开始索引52,我想打印23个标签。那么如何找到所需的纸张数量?有没有人有一个公式来计算这个?
编辑大家好,感谢您现在解决问题的答案。 非常感谢你们。
答案 0 :(得分:5)
我猜你的意思是你有一个预定的页面布局,即如果你想打印标签42到67,你必须打印标签40-49,50-59和60-69。
您需要做的就是找到起始页的工作表索引和结束页的工作表索引,减去它们,然后添加1.标签 n 的工作表索引是floor(n / 10)(或只有整数除法的n / 10)。因此,如果您的起始标签是 n ,并且您想要打印 x 标签,那么您需要的张数是:
floor((n+x)/10) - floor(n/10) + 1
这都假设从零开始的索引,为了理智(这意味着第一个标签的索引为0)。如果您的标签号是从1开始的,即第一个标签的索引是1,那么您需要先从 n 中减去一个,因此公式变为:
floor((n-1+x)/10) - floor((n-1)/10) + 1
这应该很容易理解。
答案 1 :(得分:4)
的Ceil((52-10)/ 10)
在Delphi中,这将是
function AmountOfSheets(startingIndex: Integer; labels: Integer): Integer;
const
ILabelsPerSheet: Integer = 10;
begin
Result := Ceil((labels - startingIndex) / ILabelsPerSheet);
end;
感谢所有评论正确评论的人,或者在朋友的帮助下引用jc 。
答案 2 :(得分:4)
例如,我开始索引10 我想打印52个标签。然后如何 我找不到需要的床单
天花板((52 - 10 + 1)/ 10) - > pages(编辑:确保执行浮点除法而不是整数)
(52-10 + 1)%10 - >最后一页上的标签数量
答案 3 :(得分:4)
所需的页数是(使用整数算术):
(items + pageSize - 1) / pageSize
其中items
是要打印的标签数量,pageSize
是每页标签数量。
只要您知道要打印多少个标签,起始索引就与页数无关。如果您打印25个标签,如果起始索引是4或827364827364则无关紧要,它仍然是25个标签。
编辑:
如果要使用索引可选择在第一页上留下标签空白,即从索引14到索引32打印19个标签:
Page 1: -- -- -- 14 15 16 17 18 19 20
Page 2: 21 22 23 24 25 26 27 28 29 30
Page 3: 31 32 -- -- -- -- -- -- -- --
然后首先计算在第一个标签之前留空的标签数量:
(index - 1) % pageSize
(其中%是模数(或余数)运算符。)
然后,将这些空项添加到标签数中,以计算要打印的实际项目数。对于上面的示例,它将是3 + 19 = 22.这将在上面的计算中用于获取页数。
答案 4 :(得分:1)
所需的纸张数量始终是您想要的总数除以10,向上舍入。如果起始指数偏离要打印的总数,那么起始指数的总标签为负,除以10,向上舍入。
ceil(总标签/ 10)
ceil((总标签 - 指数)/ 10)
一个PHP示例:
$starting_index=0;
$total=52 - $starting_index;
$labels_per_page=10;
$pages=ceil($total / $labels_per_page);
答案 5 :(得分:1)
假设意图是重复使用半张的标签,你有类似的东西
labelsOnFirstPage = labelsPerPage + 1 - StartIndex
if( totalLabels > labelsOnFirstPage )
{
return 1 + Ceiling( (totalLabels - labelsOnFirstPage) / labelsPerPage )
}
else
{
return 1;
}
答案 6 :(得分:1)
我假设从您非常难以理解的问题中,您的“起始索引”是页面上将打印第一个标签的位置。像这样:
1 2
3 4
5 6
7 8
9 10
那么您打印的页数是您想要的标签总数减去您在第一页上打印的标签除以每页标签数量:
int labels_per_page = 10;
int starting_index = 10;
int total_labels = 52;
// Edit to account for a starting_index of more than labels_per_page:
int first_page = labels_per_page - ((starting_index - 1) % labels_per_page);
// first_page has one label
int remaining_labels = total_labels - first_page;
if (remaining_labels <= 0) { return 1; }
// 51 labels left
int total_pages = ceiling(remaining_labels / labels_per_page) + 1;
// 7 pages total
return total_pages;
您需要确保first_page
大于total_labels
,因为可能只有一页。
答案 7 :(得分:1)
与Svante的解释相同,索引从1开始,我会把答案写成
nSheets = ceiling((startIndex+nLabels) / 10) - ceiling(startIndex / 10) + 1
对于给出的示例,从索引10开始的52个标签,我们有编号,直到索引61(= 10 + 52-1):
10 (end of first sheet -> 1 label)
11 12 13 14 15 16 17 18 19 20 (second sheet -> 11 labels)
21 22 23 24 25 26 27 28 29 30 (third sheet -> 21 labels)
31 32 33 34 35 36 37 38 39 40 (fourth sheet -> 31 labels)
41 42 43 44 45 46 47 48 49 50 (fifth sheet -> 41 labels)
51 52 53 54 55 56 57 58 59 60 (sixth sheet -> 51 labels)
61 (beginning of seventh sheet -> 52 labels)
因此需要 7 张,我们可以检查
ceiling((10+52)/10)-ceiling(10/10)+1 = ceiling(6.2)-ceiling(1)+1 = 7-1+1 = 7
答案 8 :(得分:0)
⌈(52-10 + 1)/10⌉