分隔和间距

时间:2019-06-13 06:50:14

标签: c#

我需要以非常特定的方式划分可变距离。分隔的间距必须至少为40个单位,最大为80个单位。

我已经尝试了几种不同的代码,但是我在努力将最小/最大变量包括在我的部门中一事无成。

double totaldist = X; 
double division = totaldist / 80;
double roundup = Math.Ceiling(division);
double space = totaldist / roundup;

double increment = 0;
while (increment < totaldist)
{
increment = increment + space;
}

附带的代码显然缺少我想要完成的工作,我不确定如何弥合差距。谢谢

2 个答案:

答案 0 :(得分:2)

因此,您要做的就是遍历所有可能的除数并选择最佳除数。完成此操作的最简单方法如下:

<View style={{paddingLeft:10,
 height:300, marginBottom:10, 
 borderWidth:1,
 borderStyle: 'dashed',
 borderColor:'red',
 borderTopColor:'white'}}>

这将始终返回最接近的结果。即使没有真正的解决方案,它仍然会提供一个近似的答案作为后备。

答案 1 :(得分:0)

我会测试每个除数是否为mod 0(无余数)

int d = 420;
int s = 40;
for(; s <= 80; s++){
  if(d%s==0)
    break;
}
if(s==81)
  Console.Write("There is no suitable divisor");
else
  Console.Write($"{d} divides into {s} segments of {d/s} with no remainder");

如果要最小化段长度(更多段数),请从80开始并在循环中朝40努力-将d设置为480,从80开始,您应该获得“ 80个长度为6的段”比“长度为12的40段”

您甚至可以用圈圈变得可爱,而且没有身体:

for(; s <= 80 && d%s > 0; s++){ }

但这不是那么可读/自我解释