您的位置:首页 > 其它

个人作业十八:购买图书

2016-06-23 10:12 148 查看
书店促销

一、设计思路

前提,没有买重复书的情况是最优惠的。
总共买n本书,可以分解成5k+(n-5k),k=0,1,2,...
1、如果k=0,n本不重复的价钱是最优惠的;
2、如果k=1,算出每一种情况的折扣并比较,最后挑选出折扣最大的;
3、如果k>1,最后的(n-5k)再按照第二种情况进行计算。

二、源代码

// 最优价钱.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "iostream.h"

#define PRICE 8

double discount[5]={0,0.05,0.1,0.2,0.25};

double Caculate(int num1,int num2) //计算该情况的价钱

{

double money,money1,money2;

money1=(PRICE-PRICE*discount[num1-1])*num1;

money2=(PRICE-PRICE*discount[num2-1])*num2;

money=money1+money2;

return money;

}

double Discount(int num) //分情况讨论价钱

{

int k,yushu;

double money1,money2,min;

k=num/5; //取整

yushu=num%5; //取余

min=num*PRICE;

switch(k)

{

case 0:

money1=(PRICE-PRICE*discount[num-1])*num;

break;

default:

if(yushu==0)

{

money1=(PRICE-PRICE*discount[4])*num;

return money1;

}

for(int i=1;i<(yushu+5);i++)

{

money1=Caculate(i,(yushu+5)-i);

if(money1<min)

min=money1;

}

if(num>9)

money2=(k-1)*5*(PRICE-PRICE*discount[4]);

else

money2=0;

return min+money2;

}

return money1;

}

int main(int argc, char* argv[])

{

int booknum;

double money;

cout<<"请输入购买书籍的数量:";

cin>>booknum;

money=Discount(booknum);

cout<<"最优惠的价格是"<<money<<"元"<<endl;

return 0;

}

三、运行截图

四、心得体会

因为我数学不太好,写这个程序时气死我了,一开始测试结果跟我用计算器算的不同,我以为是我的算法写错了,于是调试了好久。最后我找同学帮忙,他说我的程 序思路是对的,帮我纠正了一些细节上的错误。真的觉得自己真是太没脑子了,本来很快就能写出来的程序,每次都调试那么久。

幸亏当初我爸让我报经济我没报,要不然钱都没了,都算不清是怎么没得。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: