2013-03-12 24 views
-3

這裏的問題是:程序要求優化最小費用

成本分析是工程的一個重要組成部分。在實踐中,可能會要求您編寫程序以確定許多不同潛在環境的最低成本。您的程序可以用作項目的決策工具。

考慮建造一個機場,跑道建在垃圾填埋場。承包商有兩輛自卸車,一輛是8噸,另一輛是12噸。承包商使用卡車從遠程地點向機場地點運送填充物。 8噸和12噸卡車的單程運營成本分別爲14.57美元和16.26美元。一輛卡車的行程不能超過60%。

編寫一個程序,爲給定的噸數開發最小成本。提示用戶輸入總噸數。顯示每輛卡車所需的行程數量和總成本。爲此程序使用模塊化設計。

這裏是我的嘗試:

#include <stdio.h> 

int main (void) 
{ 
    double mass, sixtyPercentMass; 
    int eightCount = 0, twelveCount = 0; 

    printf("Enter the number of tons: "); 
    scanf("%lf", &mass); 
    sixtyPercentMass = 0.6 * mass; 

    while((twelveCount*12) < sixtyPercentMass) { 
     twelveCount++; 
    } 
    while((eightCount*8) < (mass - sixtyPercentMass)) { 
     eightCount++; 
    } 

    printf("Total trips required: %d\n", (twelveCount+eightCount)); 
    printf("Number of 12-ton trucks required: %d\n", twelveCount); 
    printf("Number of 8-ton trucks required: %d\n", eightCount); 
    printf("Total cost: $%lf", (twelveCount*16.26 + eightCount*14.57)); 
    return 0; 
} 

問題:

  1. 我怎麼會佔卡車浪費空的空間?
    目前,如果您剩餘1個,則會浪費整個卡車。實際上,使用大量符合所需質量的卡車實際上會更便宜。

  2. 我該如何正確地完成正確的總行程的60%閾值?
    它目前只有質量的60%。

所需邏輯的僞代碼或正確方向的步驟將會有所幫助。

+4

你對SO觀衆的問題是什麼? – 2013-03-12 21:19:00

+0

關閉這個問題太局部化了:-) – 2013-03-12 21:24:27

+0

這是什麼意思,Aniket? – user1251385 2013-03-12 21:25:47

回答

0

首先,您需要從程序中分離出問題。試圖在一個步驟中解決這兩個問題時,您正在處理將問題作爲軟件運行所需的內容,從而發現問題所需的內容。

爲了優化卡車的最小數量,您應該想出一種方法來確保不使用不需要的卡車。一種方法是嘗試使用最小數量的最小卡車,並通過將較小卡車換成較大卡車來「減少」解決方案。另一種方法是使用最大的卡車,然後檢查部分滿載的卡車,這些卡車可以用較小的卡車代替。

然而,你接近這個問題,它並不需要一臺計算機來弄清楚。一旦你可以在沒有計算機的情況下在一定程度上解決問題(即使計劃只是在你的腦海中),那麼你可以着手編寫一個程序來完成解決方案所需的任務。

作爲第一步開始與寫作非常像建造一所房子,開始砍木頭,然後後來想知道如何在沒有外部門,廚房,電源線吃牆壁等

+0

好的,我決定解決問題2,因爲它是兩者中較大的問題。問題是我不知道如何在不使用計算機的情況下解決問題。老實說,這對我來說似乎是一個悖論。例如:假設我想移動120噸的質量。但是,我怎麼知道總次數?我想我可以將120乘以12來得到10次旅行。其中60%是6次旅行。 (繼續我的下一個評論) – user1251385 2013-03-12 21:45:11

+0

但是因爲我需要10輛12噸卡車,所以我超過了60%的門檻,因此我需要使用8噸卡車。一旦我開始使用8噸卡車,原來的行程總次數會增加,因此我知道需要重新計算60%的閾值,這意味着我可能已經能夠使用10輛12噸卡車了! – user1251385 2013-03-12 21:45:43

+0

百分比是_something_的百分比,因爲你還沒有說明,我假設你必須使用不超過60%的12噸卡車。在這種情況下,你要麼開始使用8噸卡車,除去少數卡車,看看是否有更多的60%12噸卡車,或者從另一端開始工作,將8噸卡車裝入12噸卡車,以及然後檢查適當的答案,或者只使用稱爲代數的奇怪事物,並解決問題而無需循環來檢查和修改可能的答案。 – 2013-03-12 21:50:23