C# 电梯容量
我在学校有这个问题。我知道我几乎是对的,但似乎我在代码的某个地方遇到了问题。问题是,我有两个由用户输入的值。第一个(n)是想要进入电梯的人数,第二个(p)是电梯可以容纳的人数。问题是,为了把所有的人都带到选定的楼层,电梯将进行多少次行程C# 电梯容量,c#,for-loop,C#,For Loop,我在学校有这个问题。我知道我几乎是对的,但似乎我在代码的某个地方遇到了问题。问题是,我有两个由用户输入的值。第一个(n)是想要进入电梯的人数,第二个(p)是电梯可以容纳的人数。问题是,为了把所有的人都带到选定的楼层,电梯将进行多少次行程 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Elevator
{
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
int p = int.Parse(Console.ReadLine());
int elevatorTrips = 0;
elevatorTrips = n / p;
if (elevatorTrips % 10 != 0)
{
elevatorTrips += 1;
Console.WriteLine(elevatorTrips);
}
else {
Console.WriteLine(elevatorTrips);
}
}
}
}
我想这应该可以。使用 从MSDN: 返回大于或等于指定的双精度浮点数的最小整数值
DotNet Fiddle:将
TotalNumberOfPeople
除以ElevatorCapacity
,得到一个double
的答案,然后将其四舍五入到第一个较大的int
,这样你就可以知道你是否有小数了。这样,如果您有一个十进制数,它将被转换为1(并添加到最终结果)
附言:你可以把
0.5
加到double
的答案中,然后简单地把它赋给另一个int变量,你就会得到你的最终解决方案;假设我们有13
人排队,电梯的载客量是3
,那么答案是5
:
4 turns with 3 peoples
1 turn with 1 people
你能看到图案吗<代码>人员/容量在电梯满载时跳闸,可能在电梯部分装载时额外跳闸。而且解决办法很简单
int capacity = 3;
int peoples = 13;
int trips = peoples / capacity + (peoples % capacity != 0 ? 1 : 0);
在您当前的实现中
if (elevatorTrips % 10 != 0)
这是错误的:什么神奇的数字
10
代表什么?当你运行代码时,你有什么确切的问题?只有在除法后有一个分数时才会发生吗?离题。您是否调试了代码以查看它需要多少次?循环n-p
,直到它成为问题是:这10次从何而来?有更好的价值吗?试着用大量不同的输入测试你的工作,分别是n
和p
,看看它们是否都得到了很好的结果。为什么不把的答案分成两部分,然后把它凑起来呢??
if (elevatorTrips % 10 != 0)