一、设计思路

前提,没有买重复书的情况是最优惠的。
总共买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[]={,0.05,0.1,0.2,0.25}; double Caculate(int num1,int num2) //计算该情况的价钱
{
double money,money1,money2;
money1=(PRICE-PRICE*discount[num1-])*num1;
money2=(PRICE-PRICE*discount[num2-])*num2;
money=money1+money2;
return money;
}
double Discount(int num) //分情况讨论价钱
{
int k,yushu;
double money1,money2,min;
k=num/; //取整
yushu=num%; //取余
min=num*PRICE;
switch(k)
{
case :
money1=(PRICE-PRICE*discount[num-])*num;
break;
default:
if(yushu==)
{
money1=(PRICE-PRICE*discount[])*num;
return money1;
}
for(int i=;i<(yushu+);i++)
{
money1=Caculate(i,(yushu+)-i);
if(money1<min)
min=money1;
}
if(num>)
money2=(k-)**(PRICE-PRICE*discount[]);
else
money2=;
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 ;
}

三、运行截图

四、心得体会

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

幸亏当初我爸让我报经济我没报,要不然钱都没了,都算不清是怎么没得。

软件工程随堂小作业——最优惠价钱(C++)的更多相关文章

  1. 软件工程随堂小作业——随机四则运算Ⅱ(C++)

    一.设计思路 设计思路已给出,此处不再赘述. 二.源代码 (1)四则运算2.cpp(源文件) // 四则运算2.cpp : Defines the entry point for the consol ...

  2. 软件工程随堂小作业——寻找“水桶”(C++)

    一.设计思想 思路与寻找一个水王相似,这次只是计数器和嫌疑人变量都设置为数组.每次选取一个ID与三个嫌疑人比较,若有相同则计数:若三个都不相同,则三个计数器都减一.若减为0,则从新赋值给嫌疑人. 二. ...

  3. 软件工程随堂小作业—— 寻找“水王”(C++)

    一.设计思路 (1)输入发帖ID记录表 (2)从第一个ID开始,与后续的发帖ID进行比较,若相同计数器则加一,否则减一.若计数器的数值被减为零,则重新选取当前ID开始记录比较. (3)输出结果 二.源 ...

  4. 软件工程随堂小作业——(C++)

    一.设计思路 本来我的思路是根据上楼的人数和上楼的层数来计算出平均值,但是我发现这个思路不对.于是我选择了最笨的方法,复杂度为O(n2). (1)输入坐电梯的人数和要去的楼层: (2)找到输入楼层里最 ...

  5. 软件工程随堂小作业——随机四则运算Ⅱ之算法思路(C++)

    1.题目避免重复: (1)利用系统时间来产生随机数,重复率会降低. (2)建立链表,逐个判断.可读取写入文件. 2.可定制(数量/打印方式): (1)格式有默认值; (2)可以选择重新设置分几列和每行 ...

  6. 软件工程随堂小作业——随机四则运算(C++)

    一.设计思路: 1.程序的主体部分是循环输出,次数即题目数目由用户输入: 2.三个整型变量+rand函数来实现随机数四则运算,一个变量代表加减乘除,另外两个用作运算数: 3.用户体验:题目分三列,排列 ...

  7. 福州大学软件工程1816 | W班 第8次作业[团队作业,随堂小测——校友录]

    作业链接 团队作业,随堂小测--校友录 评分细则 本次个人项目分数由两部分组成(博客分满分40分+程序得分满分60分) 博客和程序得分表 评分统计图 千帆竞发图 总结 旅法师:实现了更新,导出,查询, ...

  8. [福大软工] Z班 团队作业——随堂小测(同学录) 作业成绩

    团队作业--随堂小测(同学录) 作业链接 http://www.cnblogs.com/easteast/p/7763645.html 作业情况 本次作业从原先预计的3小时,有些组打了鸡血连续肝了4. ...

  9. 福州大学软件工程1816 | W班 作业成绩排名汇总

    评分链接 第一次作业--准备篇 第二次作业--个人项目实战 第三次作业--原型设计(结对第一次) 第四次作业--团队展示(团队) 第五次作业--项目选题报告(团队) 第六次作业--结对第2次作业--W ...

随机推荐

  1. hdu 2255 奔小康赚大钱 KM算法

    看到这么奇葩的题目名我笑了,后来这么一个裸的KM调了2小时我哭了…… 这是个裸的KM算法,也没什么多说的,主要是注意多组数据时,每次都要把各种数组清空啊,赋值啊什么的,反正比较麻烦.至于为什么调了2小 ...

  2. Mysql的ssl主从复制+半同步主从复制

    Mysql的ssl主从复制+半同步主从复制 准备工作 1.主从服务器时间同步 [root@localhost ~]# crontab -e */30 * * * * /usr/sbin/ntpdate ...

  3. Linux搭建NFS提供磁盘给Windows使用

    在Windows2008系统下设置挂载Linux服务器磁盘 一.系统环境 系统平台:CentOS release 5.8 (Final) NFS Server IP:X....X...153.157 ...

  4. ASP测试代码: <% response.write("helloworld,vbscript!") %>

    ASP测试代码: <% response.write("helloworld,vbscript!") %>

  5. php异常处理示例

    php异常处理使用示例,代码说明了普通错误和致命错误捕获及处理的方法.  代码如下: <?php //禁止错误输出 error_reporting(0); //设置错误处理器 set_error ...

  6. Nginx配置:http重定向,URLRewrite,一个简单框架的配置思路

    一个重定向的应用配置: server { listen       8000; server_name  localhost; root F:/home/projects/test; index   ...

  7. leetcode刷题笔记

    (1)Best Time to Buy and Sell Stock Total Accepted: 10430 Total Submissions: 33800My Submissions Say ...

  8. 为你的Windows7设置动态壁纸

    From:http://www.cnblogs.com/killerlegend/p/3644014.html By KillerLegend DreamScene是Vista上的一个功能,可以让你设 ...

  9. Servlet之HttpServletResponse和HttpServletRequest

    HttpServletResponse 1.告诉服务器应用使用UTF-8解析文本的两种方式,告诉客户端要使用什么编码 response.setHeader("content-type&quo ...

  10. ROS多个master消息互通

    需求 有时候我们需要有几个不同的master, 他们之间要交换topic的内容,这时候就不能使用ros自带的设置同一个master的方法. 我们的处理方法是,构造一个client和一个server,他 ...