1、程序要求ios
書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編號0、一、二、三、4表示,單獨一卷售價8元, 具體折扣以下所示:算法
根據購買的卷數以及本數,會對應不一樣折扣規則狀況。單數一本書只會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則能夠享受5%的折扣,另一本卷一則不享受優惠。編程
設計算法可以計算出讀者購買一批書的最低價格。post
2、程序設計思想編碼
買一本書時,只有一種狀況,8元;spa
買兩本書時,有2種狀況:設計
1. 買2本同樣的書,2*8=16元日誌
2. 買2本不同的書,2*8-2*8*5%=15.2code
買三本書時,有3種狀況:blog
1. 買3本同樣的書,3*8=24元
2. 買2本卷1,1本卷2,3*8-8*2*5%=23.2
3. 買3本不同的,8*3-3*8*10%=21.6
買四本書時,有4種狀況:
1. 買4本同樣的書,4*8=32元
2. 買3本卷1,1本卷2,8*4-2*8*5%=31.2
3. 買2本卷1,2本卷2,8*4-8*2*2*5%=30.4
4. 買3本不同的書,8*4-8*3*10%=29.6
5. 買4本不同的書,8*4-8*4*20%=25.6
買5本書時,有7種狀況:
1. 買5本同樣的書,5*8=40元
2. 買4本卷1,1本卷2,8*5-2*8*5%=39.2
3. 買3本卷1,2本卷2,8*5-8*2*2*5%=38.4
4. 買3本卷1,1本卷2,1本卷3,8*5-8*3*10%=37.6
5. 買2本卷1,2本卷2,1本卷3,8*5-8*3*10%-8*2*5%=36.8
6. 買4本不同的書,8*5-8*4*20%=33.6
7. 買5本不同的書,8*5-8*5*25%=30
買6本書時,有10種狀況:
1. 買6本同樣的書,6*8=48元
2. 買5本卷1,1本卷2,6*8-2*8*5%=47.2
3. 買4本卷1,2本卷2,6*8-2*8*2*5%=46.4
4. 買3本卷1,3本卷2,6*8-3*8*2*5%=45.6
5. 買4本卷1,1本卷2,1本卷3,6*8-3*8*10%=45.6
6. 買3本卷1,2本卷2,1本卷3,6*8-3*8*10%-8*2*5%=44.8
7. 買2本卷1,2本卷2,2本卷3,6*8-2*8*3*10%=43.2
8. 買3本卷1,1本卷2,1本卷3,1本卷4,6*8-8*4*20%=41.6
9. 買2本卷1,2本卷2,1本卷3,1本卷4,6*8-8*4*20%-8*2*5%=40.8
10. 買5本不同的書,6*8-8*5*25%=38
買7本書時,有13種狀況:
1. 買7本同樣的書,7*8=56元
2. 買5本卷1,1本卷2,7*8-2*8*5%=55.2
3. 買4本卷1,2本卷2,7*8-2*8*2*5%=54.4
4. 買3本卷1,3本卷2,7*8-3*8*2*5%=53.6
5. 買5本卷1,1本卷2,1本卷3,7*8-3*8*10%=53.6
6. 買4本卷1,2本卷2,1本卷3,7*8-3*8*10%-8*2*5%=52.8
7. 買3本卷1,3本卷2,1本卷3,7*8-3*8*10%-2*8*2*5%=52
8. 買2本卷1,2本卷2,2本卷3,7*8-2*8*3*10%=51.2
9. 買4本卷1,1本卷2,1本卷3,1本卷4,7*8-8*4*20%=49.6
10. 買3本卷1,2本卷2,1本卷3,1本卷4,7*8-8*4*20%-8*2*5%=48.8
11. 買2本卷1,2本卷2,2本卷3,1本卷4,7*8-8*4*20%-8*3*10%=47.2
13. 買2本卷1,2本卷2,1本卷3,1本卷4,1本卷5,7*8-8*5*25%-8*2*5%=45.2
因而可知,購買的每套圖書裏的本數最多,折扣越大,價格越低。
3、源程序代碼
1 //購買圖書最低價格 2 //張瑩熒 2016-06-03 3 4 #include <iostream> 5 using namespace std; 6 void main() 7 { 8 int n; //書的本數 9 int a = 0, b = 0; //a爲當本數大於5的時候,表示有幾個5,則計算幾倍的5本價錢。b表示剩餘的不足5本的價格。 10 double price; //sum表示總價格 11 cout << "請輸入要買的書的本數:" << endl; 12 cin >> n; 13 14 a = n / 5; 15 b = n % 5; 16 17 if (n == 3) 18 price = 3 * 8 * (1 - 0.1); 19 else 20 { 21 if (b == 0) 22 price = a * 5 * 8 * (1 - 0.25); 23 if (b == 1) 24 price = a * 5 * 8 * (1 - 0.25) + 8; 25 if (b == 2) 26 price = a * 5 * 8 * (1 - 0.25) + 2 * 8 * (1 - 0.05); 27 if (b == 3) 28 price = (n - 8) / 5 * 5 * 8 * (1 - 0.25) + 4 * 2 * 8 * (1 - 0.2); 29 if (b == 4) 30 price = a * 5 * 8 * (1 - 0.25) + 4 * 8 * (1 - 0.2); 31 } 32 cout << "購買書的最低價格爲:" << price << "元。" << endl; 33 }
4、運行結果截圖
5、項目計劃日誌:
周活動總結表
姓名:張瑩熒 日期:2016-06-03
日期/任務 | 聽課 | 編寫程序 | 閱讀課本 | 準備考試 | 日總計 | ||
週一5.30 | 100 | 30 | 120 | 250 | |||
週二 | 30 | 30 | 120 | 180 | |||
週三 | 180 | 180 | 360 | ||||
週四 | 100 | 30 | 120 | 250 | |||
週五 | 30 | 30 | |||||
周總結 | 200 | 270 | 60 | 540 | 1070 |
階段時間和效率 週數:14
不包括上一週在內的累計時間
總計 | 200 | 270 | 60 | 540 | 1070 | ||
平均 | 200 | 270 | 60 | 540 | 1070 | ||
最大 | 200 | 270 | 60 | 540 | 1070 | ||
最小 | 200 | 270 | 60 | 540 | 1070 |
之前各周的累計時間
總計 | 200 | 270 | 60 | 540 | 1070 | ||
平均 | 200 | 270 | 60 | 540 | 1070 | ||
最大 | 200 | 270 | 60 | 540 | 1070 | ||
最小 | 200 | 270 | 60 | 540 | 1070 |
6、時間記錄日誌:
學生:張瑩熒 日期:2016-06-03
教師:王建民 課程: PSP
日期 | 開始時間 | 結束時間 | 中斷時間 | 淨時間 | 活動 | 備註 |
5.30 | 14:00 |
15:50 |
10 |
100 |
上課 |
課間休息 |
5.31 | 10:00 |
10:30 |
0 |
30 |
編程 | |
6.1 | 14:30 |
17:40 |
10 |
180 |
編程 |
中間休息 |
6.2 | 12:30 14:00 |
13:00 15:50 |
0 10 |
30 100 |
編程 上課 |
課間休息 |
6.3 | 11:00 |
11:30 |
0 |
30 |
編程 |
7、缺陷記錄日誌:
學生: 張瑩熒
日期: 2016-06-03
教員: 王建民
程序號: 14
日期 | 編號 | 類型 | 引入階段 | 排除階段 | 修復時間 | 修復缺陷 |
6.03 | 1 | 算法 | 編碼 | 查資料、問同窗 | 30min | |
描述:程序設計問題,不知道該如何入手。 |
8、實驗總結
題自己很簡單,只要從第一本開始列出來,找出其中的規律,程序思路很容易就出來了。