天天看點

購買促銷書籍的問題

題目

書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,用編号0、1、2、3、4表示,單獨一卷售價8元,具體折扣如下所示:

            本數                  折扣

                                   2                       5%

                                   3                       10%

                                   4                       20%

                                   5                       25%

1 根據購買的卷數以及本數,會對應不同折扣規則情況。單數一本書隻會對應一個折扣規則,例如購買了兩本卷1,一本卷2,則可以享受5%的折扣,另外一本卷一則不享受優惠。

2 設計算法能夠計算出讀者購買一批書的最低價格。

3 要求将設計思想、代碼實作、實作截圖、個人總結以博文的形式發表。

設計思想

 根據折扣和買書數量可以知道:當買書量大于10本時,将數量進行求餘,算出當買6、7、8、9本書時的最小價格,其餘能夠被5整除的直接用買5套的折扣價即為最優方案。

源代碼

#include<iostream> 
using namespace std; 
float priceLowest; 
void f(int bookNum) 
{ 
    int N; 
    N=bookNum%5; 
    switch(N) 
    { 
        case 0: 
            priceLowest=bookNum*8*0.75; 
            break; 
        case 1: 
            priceLowest=(bookNum-N)*8*0.75+8; 
            break; 
        case 2: 
            priceLowest=(bookNum-N)*8*0.75+2*8*0.95; 
            break; 
        case 3: 
            priceLowest=(bookNum-N)*8*0.75+4*8*0.8*2-5*8*0.75; 
            if(bookNum<5) 
            { 
                priceLowest+=0.4; 
            } 
            break; 
        case 4: 
            priceLowest=(bookNum-N)*8*0.75+4*8*0.8; 
            break; 
        default: 
            cout<<"Error!"<<endl; 
              
    } 
} 
void main() 
{ 
    int q=0; 
    while(q==0) 
    { 
        int bookNum; 
        cout<<"請輸入購買數量:"; 
        cin>>bookNum; 
        f(bookNum); 
        cout<<"最低價格為:"<<priceLowest<<endl; 
        cout<<"是否繼續測試?(輸入0繼續)"; 
        cin>>q; 
    } 
}       

程式截圖

購買促銷書籍的問題

實驗總結

這次實驗的主要面臨的問題就是購買6-9本書和購買11-14本書是否進行%5求餘的問題,解決了這個問題就基本可以寫出複雜程度較低的算法來了