一、设计思路

前提,没有买重复书的情况是最优惠的。
总共买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. CentOS下通过rdesktop连接Windows远程桌面

    众所周知,微软的Windows提供了一种远程桌面系统(Remote Desktop),该服务的默认端口是3389,可使用户远程登录进行系统管理或作为终端服务器运行各种应用软件. 而要连接Windows ...

  2. 1.3查看Linux内核版本

    1.目前Linux内核主要维护的三个版本:Linux2.4.Linux2.6和Linux3.x,Android使用的是Linux2.6:Linux3.x是最新推出的Linux内核版本: 2.查看Lin ...

  3. Android IOS WebRTC 音视频开发总结(七)-- 基于浏览器的开发

    前面写的一系列总结都是讲webrtc如何下载,编译,开发的,有些人可能有点云里雾里了,WEBRTC不是用来搞跨浏览器开发的吗,怎么我讲的这些跟浏览器扯不上任何关系,其实看看下面这个架构图,你就明白了, ...

  4. C# 常用小技巧

    int? id 表示id是可以为null的整型 跟Nullable<int> id 是一样的 id ?? 1等于 id==null?1:id;

  5. 【一步一图】:详解IIS日志配置

    打开网站配置:右键点击属性 弹出设置界面     如上图,日志可选4种格式: [Microsoft IIS 日志文件格式]   存放地址如上图 以in开头 年份后两位+月份+日 命名: 示例: //, ...

  6. YUM软件管理

    YUM是一个RPM的前端程序,主要目的是设计用来解决RPM的依赖关系的问题,而不用手动安装所依赖的所有软件.它使用仓库保存管理RPM软件包,仓库的配置文件保存在/etc/yum.repos.d/目录下 ...

  7. Git一张图学习

  8. sail.js学习 - 安装篇

    导言: 最近在学习sails.js(http://sailsjs.org/),因为用的人不多,资料较少,故写些自己的学习过程.因自己也是初学node.js,有问题大家指出. 介绍: sails.js的 ...

  9. ASP.net UrlRewrite的防盗链功能

    ASP.net中如何实现基于UrlRewrite的防盗链. ASP.net中最快实现UrlRewrite的方法这篇文章中说了如何做UrlRewrite,那只是一个最简单的应用 其实利用UrlRewri ...

  10. linux中文显示乱码的解决办法

    linux中文显示乱码的解决办法 linux中文显示乱码是一件让人很头疼的事情. linux中文显示乱码的解决办法:[root@kk]#vi /etc/sysconfig/i18n将文件中的内容修改为 ...