軟體工程課堂作業——計算最優惠價格

weixin_30488085發表於2020-04-06

一、題目:

      書店針對《哈利波特》系列書籍進行促銷活動,一共5卷,單獨一卷售價8元,具體折扣如下:本數對應的折扣分別為:2本—5%,3本—10%,4本—20%,5本—25%。根據購買的卷數以及本數,會對應不同的折扣規則情況。單獨一本書只會對應一個折扣規則。設計演算法能夠計算出讀者購買一批書的最低價格。

二、設計思路:

對於1-5,定義double具有返回值型別的函式,列舉5種優惠情況。對於6-9,例如7,先計算2和5這種情況,然後2加1變3,計算3和4這種情況;然後3再加1,計算4,3這種情況。直至加一後小於5。對於10以上,那就簡單了。。

三、原始碼:

#include<iostream.h>
double fa(int i)
{
    double a;
    switch(i)
    {
    case 1:a=1.0;break;
    case 2:a=0.95;break;
    case 3:a=0.9;break;
    case 4:a=0.8;break;
    case 5:a=0.75;break;
    }
    return a;
}

int main()
{
    int booknumber,keybook,a,i,d,b,g,j;
    double sum;
    cout<<"input:";
    cin>>booknumber;
    if(booknumber>0&&booknumber<=5)
    {
        double c=fa(booknumber);
            sum=c*booknumber*8;
            cout<<sum;
    }
    else if(booknumber>5&&booknumber<=9)
    {
        a=booknumber-5;
            double d=fa(a);
        sum=d*a*8+30;
        for(i=a;i<5;i++) 
        {
            b=booknumber-a;
        double e=fa(a);
        double f=fa(b);
        
        
        if (e*a*8+f*b*8<sum)
            sum=e*a*8+f*b*8;
        }
        
        cout<<sum;
    }
    else
    
    g=booknumber%5;
    j=booknumber/5;
    double k=fa(g);
    sum=j*30+k*8*g;
    cout<<sum;

}

四.截圖

五.實驗總結這種

     這次試驗應該說是不太難,只要分成3種情況就行,關鍵是6-7的這種情況,必須考慮到每一種情況。這種情況可以用switch語句,和迴圈解決。程式的關鍵是把實際問題抽象成為數學問題再用程式實現,只要想到每一種情況,解決好就行。

轉載於:https://www.cnblogs.com/yanyafeng/p/4427773.html

相關文章