电梯容量

时间:2016-05-19 13:34:24

标签: c# for-loop

我在学校有这个问题。我知道我几乎是对的,但似乎我在代码中的某个地方有问题。问题是我有两个由用户输入的值。第一个(n)是想要进入电梯的人数,第二个(p)是电梯可以接受的人数。问题是电梯将进行多少次旅行以便将所有人带到选定楼层。

    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);
            }
        }
    }
}

3 个答案:

答案 0 :(得分:0)

我认为应该这样做。使用Math.Ceiling

来自MSDN:

  

返回大于或等于指定的双精度浮点数的最小整数值。

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());

            var elevatorTrips = Math.Ceiling((double)n / p);

            Console.WriteLine(elevatorTrips);
        }
    }
}

DotNet-Fiddle:https://dotnetfiddle.net/srLTVZ

答案 1 :(得分:0)

TotalNumberOfPeople除以ElevatorCapacity并获得double的答案,然后将其四舍五入到第一个更大的int,这样您就可以知道您是否有小数。这样,如果你有一个小数,它将被转换为1(并添加到最终结果)

P.S:您可以将0.5添加到double答案的任何内容中,然后将其分配给另一个int变量,您将获得最终解决方案。

答案 2 :(得分:0)

让我们看看;假设我们排队13人,电梯的容量为3,答案是5

  4 turns with 3 peoples
  1 turn  with 1 people

你能看到这种模式吗?电梯已满载peoples / capacity次行程,可能是电梯部分加载的额外行程。解决方案非常简单

  int capacity = 3;
  int peoples = 13; 

  int trips = peoples / capacity + (peoples % capacity != 0 ? 1 : 0);

在您当前的实施中

  if (elevatorTrips % 10 != 0)

错误幻数 10代表什么?