2016-05-19 34 views
-2

我有這個問題上學。我知道我幾乎是正確的,但似乎我在代碼中的某處出現問題。問題是我有2個用戶輸入的值。第一個(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); 
      } 
     } 
    } 
} 
+2

運行代碼時遇到的確切問題是什麼?這是否僅在分裂後有一小部分時纔會發生? –

+0

無題。你調試過你的代碼,看看它需要多少次? –

+1

爲'n-p'循環,直到它是'<= 0'或者用'n/p'除法縮短它,如果有任何餘數加上'1' –

回答

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的-小提琴:https://dotnetfiddle.net/srLTVZ

0

鴻溝TotalNumberOfPeople超過ElevatorCapacity和得到的答案爲double,然後繞着它上升到第更大int,所以你可以知道你是否有小數與否。這樣,如果你有一個小數點,它將被轉換爲1(並添加到最終結果中)

PS:你可以通過將0.5加入double答案,然後簡單地將它分配給另一個int變量你會得到你的最終解決方案。

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代表?