程序設(shè)計實驗周r005h小車過沙漠_第1頁
程序設(shè)計實驗周r005h小車過沙漠_第2頁
程序設(shè)計實驗周r005h小車過沙漠_第3頁
程序設(shè)計實驗周r005h小車過沙漠_第4頁
程序設(shè)計實驗周r005h小車過沙漠_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、R005H卡車過沙漠程序設(shè)計報告、問題描述:一輛重型卡車欲通過1000公里的沙漠,卡車耗油量為1公升/公里,卡 車總載油量為500公升,顯然卡車裝一次油是通過不了沙漠的。因此司機必 須在沿途設(shè)立幾個儲油點,使卡車能順利通過沙漠。試問司機如何建這些儲 油點?每個儲油點應該儲多少升油?才能使用卡車以最小耗油量的代價通 過沙漠?二、問題分析:由終點倒推,遞推每個儲油點的儲油量和兩個儲油點間車行駛距離分析:上面是最原始的遞推可得第一個程序,相對較簡單,但是由這個程序 (什么都已知的,路程,每公里耗油量,以及汽車最多載油量)怎么改編成什么 都可以改變的,即都由用戶來輸入數(shù)據(jù),需解決以下問題。1、每個儲油

2、點(place)需儲油(oil)和每次最大載油量(max)間的關(guān)系。2、怎樣表示出離起點最近的儲油點的距離。3、最重要的是讓計算機做出判斷,任意兩個相鄰儲油點之間汽車需來回多少 次,可以確定的是,這個數(shù)字一定是奇數(shù)。解決以上三個問題,特別是第三點,程序自然能出來。三、結(jié)構(gòu)圖三、結(jié)構(gòu)圖卡車過沙漠輸入數(shù)據(jù)過程運算分析判斷輸出結(jié)果輸入數(shù)據(jù)過程運算分析判斷輸出結(jié)果四、數(shù)據(jù)結(jié)構(gòu)的設(shè)計編程計算及打印建立的貯油點序號,各貯油點距沙漠邊沿出發(fā)的距離以及存 油量。設(shè)dist 為第i個貯油點至終點(i=0)的距離;oil為第i個貯油點的存貯油量;我們可以用倒推法來解決這個問題。從終點向始點倒推,逐一求出每個貯油

3、點的位置及存油量。下圖表示倒推時的返回點:從貯油點i向貯油點i+1倒推的策略是,卡車在點i和點i+1間往返若十次???車每次返回i+1處時正好耗盡500公升汽油,而每次從i+1出發(fā)時又必須裝足500 公升汽油。兩點之間的距離必須滿足在耗油最少的條件下使i點貯足i*500分升 汽油的要求(0=i=n-1)。具體地講,第一個貯油點i=1應距終點i=0處500km且 在該處貯藏500公升汽油,這樣才能保證卡車能由i=1處到達終點i=0處,這就 是說dist=500 oil=500;為了在i=1處貯藏500公升汽油,卡車至少從i=2處開兩趟滿載油的車至i=1 處。所以i=2處至少貯有2*500公升汽油

4、,即從終點算第二個儲油點需要油: oil=500*2=1000。另外,再加上從i=1返回至i=2處的一趟空載,合計往返3次。 三次往返路程的耗油量按最省要求只能為 500公升。d12=500/3dis=dist+500/3為了在i=2處貯存1000公升汽油,卡車至少從i=3處開三趟滿載油的車至 i=2處。報以i=3處至少貯有3*500公升汽油,即oil=500*3=1500。加上i=2至 i=3處的二趟返程空車,合計5次。路途耗油量也應為500公升,即d23=500/5, Dist=dist +500/5;500依此類推,為了在i=place處貯藏place*500公升汽油,卡車至少從i=pl

5、ace+1 處開place趟滿載車至i=place處,艮口oil=oil+500,加上從i=k處返回i=k+1的k-1趟返程空間,合計2k-1次。這2k-1次總耗油量按最省要求為500公升,即dk,k+1=500/(2k-1)dist=dist+dk,k+1=dist+500/(2k-1);最后,i=n至始點的距離為1000-dist,從終點開始數(shù)第n個儲油點需要油: oil=500*n。為了在i=n處取得n*500公升汽油,卡車至少從始點開n+1次滿載車 至i=n,加上從i=n返回始點的n趟返程空車,合計2n+1次,2n+1趟的總耗油 量應正好為(1000-dist)*(2n+1),即始點藏

6、油為 oil+(1000-dist)*(2n+1)。double total,dist,oil,max,cost,place=1.0; /total 總距離dist儲油點離終點距離oil儲油點要的油量max最大儲油量 cost每公里耗油量int k=1;/前往下一儲油點的次數(shù)printf(請輸入總的距離:n);scanf(%lf,&total); 輸入總距離 totalprintf(請輸入每公里耗油:n);scanf(%lf,&cost); /輸入每公里耗油printf(車一次最多能裝多少油:n);scanf(%lf,&max); /輸入車最多一次能裝多少油 dist=max;/第一個儲油點距

7、終點的距離oil=max*cost*place;/距離第一個儲油點需要多少油五、處理流程圖:1rF1rrf11rF1rrf1/、輸入總路程total輸入每公里耗油cost輸入最大載油量maxiJh.JLJ*F/輸出儲油點(place) 儲油點位置(dist) 儲油點油量(oil)r判斷兩個儲油點間卡車往返的次數(shù)pF第幾個儲油點:place = place + 1儲油點位置 dist=dist+max/( 2 * p - 1 )/cost儲油點油量 oil = max*place*costYES一一一 ldist (total=1000)二二,NO判斷起點與其最近儲油點往返次數(shù)p起點儲油 oil

8、 = max * ( place - 1 )*cost+ ( total-dist) * ( 2 * p- 1 )*cost起點表示dist=(int)(dist/10000000000)六、源程序:#include #includevoid main()printf(自動化 n啟東哥學號n);while(1)double total,dist,oil,max,cost,place=1.0;/total 總距離 dist 儲油點離終 點距離oil儲油點要的油量max最大儲油量cost每公里耗油量int k=1,p,w=1;printf(請輸入總的距離:n);scanf(%lf,&total);

9、printf(請輸入每公里耗油:n);scanf(%lf,&cost);printf(車一次最多能裝多少油:n);scanf(%lf,&max);dist=max/cost;oil=max*cost*place;doprintf(儲油點 %.0lft 距離%lft 油量lfn,place, total-dist, oil );a:if (k*maxcost*place*max)/假設(shè)離得很近,每次把車油全部運過去 max*k但是不可能所以需k的出的整數(shù)加 一,所以 max* (2(k-1)-1)大于下一儲 油點需的油量max*cost*placep=k;if(abs(k*max-cost*pl

10、ace*max)0.0000000001)p=k+1;elsek+;goto a;place = place + 1;dist=dist+max/( 2 * p - 1 )/cost;oil = max*place*cost;while ( dist cost*place*max)p=w;if(abs(w*max-cost*place*max)0.0000000001)p=w+1;elsew+;goto b;oil = max * ( place - 1 )*cost+ ( total-dist) * ( 2 * p- 1 )*cost; dist=(int)(dist/100000000000000000);printf(儲油點 %.0lft 距離%6.2lft 油量6.2lfn,place, dist, oil);printf(n);十、軟件說明:1、程序人機交互性好,審美觀較好。2、第二個源程序針對性強,可以輸入任意可控制的量。3、計算機自己可以判斷相鄰兩個儲油點的距離。十一、課程設(shè)計總結(jié):這次的設(shè)計課是我們第一次動手與同學合作進行的程序設(shè)計!自己發(fā)現(xiàn)問 題、解決問題,其中不僅對C和C+的操作有了進一步的掌握,還了解到了 程序設(shè)計的書寫風格及其注釋的格式。對于這個課題來說,重點在于對于程序的算法了解,以及建

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論