2012-11-22 29 views
-2

我在c#上是一個新手,需要一些循環語句的幫助。C#循環語句,需要一個新手幫助

我正在通過設計一個計算每英里成本(即50便士)的程序進行練習,並且每1000英鎊增加30英鎊作爲穿着的$淚費。

我在解決邏輯問題時遇到了問題,如果有人能給我一些很棒的提示。

namespace ConsoleApplication10 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine("Input start milleage:"); 
      decimal StartMile = Convert.ToDecimal(Console.ReadLine()); 
     Console.WriteLine("Input Finish milleage:"); 
      decimal FinishMile = Convert.ToDecimal(Console.ReadLine()); 
      decimal TotalMilleage = FinishMile - StartMile; 

      if (TotalMilleage < 1000) 

       TotalMilleage = TotalMilleage/2; 

       Console.WriteLine("Total charge for hire:{0:C}", TotalMilleage); 


      Theres the code Ive done so far :S 
+0

我們可以看到你試過的代碼嗎? –

+4

發佈您迄今爲止的代碼,以便我們可以看到您所做的事情。作爲一個提示,你不需要使用循環來解決這個問題 - 你可以用簡單的算術來完成。 – Jason

+0

@Shaddai趕在你得到噸的-1之前。通常你可以展示你在問題主體中嘗試過什麼。 –

回答

2

你不需要循環就像這樣表達,假設£30只在1000英里之後充電。

double price = 0.5 * DistanceInMile + ((int)(DistanceInMile /1000)) *30; 
+0

'Convert.ToInt32'如果小數部分是'> = 0.5',則向上舍入 – Rawling

+0

您對了@Rawling,已更正 – Adil

2

Asuming英里是int

不知道我得到的問題,而是:

double price = 0.5 * miles + 30 * (miles/1000); 

1200英里這樣,你將只添加一次£30.00。如果你想添加了兩遍:

int times = miles/1000; 
if (miles % 1000 != 0) 
    times++; 
double price = 0.5 * miles + 30 * times; 
+0

假設里程是'int';如果它是浮動類型,則最終會獲得30英鎊的部分。 (你的第二個區塊可以解決這個問題。) – Rawling

+0

是的,我甚至沒有想到它。 – Diego

0
route.Cost = 0.5 * route.Length + (Math.Floor(route.Length/1000)) * 30; 
0

正如所指出的算術是爲了這個美好的,但是因爲這是作爲編程練習,有很多方法可以做到這一點。

首先,asuming您使用英里

int miles=4555; // example mile count; 
decimal cost=0; // starting cost; 
int mileCounter=0; 

for (int i=1; i<=miles;i++) { 
    cost += 0.5m; 
    mileCounter++; 
    if (mileCounter == 1000) { 
    mileCounter = 0; 
    cost += 30; 
    } 
} 

或者你不能使用英里計數器和使用的數學計算

for (int i=1; i<=miles;i++) { 
    cost += 0.5m; 
    if ((i % 1000) == 0) { 
    cost += 30; 
    } 
} 

的整數你可以放棄invidiual英里的環

decimal cost = 0.5m * miles; 
for (int i=1000; i<= miles; i+=1000) { 
    cost += 30; 
} 

最後直接算術方法

decimal cost = 0.5m * miles + (30 * Math.Truncate(miles/1000m));