买书实验

实验题目:

设计思路:

这次的实验是目前做过最简单的,重点在于把特殊情况找出来,一开始简单的以为只要和五本组合就可以了,除五取余取整就可以了,后来经过课堂上的计算才知道重点在8,所以除10取余取整就可以了。

实验代码:

#include<iostream>
using namespace std;

int main()
{
  int num;
  cout<<"请输入购买书的数量:";
  cin>>num;
  double money=0.0;
  double one,two,three,four,five,six,seven,eight,nine,ten;
  //计算10本书以内的各种最佳购书方案
  one=8;
  two=2*8*(1-0.05);
  three=3*8*(1-0.1);
  four=4*8*(1-0.2);
  five=5*8*(1-0.25);
  six=8+5*8*(1-0.25);
  seven=2*8*(1-0.05)+5*8*(1-0.25);
  eight=2*4*8*(1-0.2);
  nine=5*8*(1-0.25)+4*8*(1-0.2);
  ten=2*5*8*(1-0.25);
  cout<<"最佳购书方案为:"<<endl;
  int a;//计算买a个两套成套的书(10本)
  a=num/10;
  money=a*ten;//计算买a个两套成套的书(10本)需要的金额
  int b;//计算超出a个10本书的个数
  b=num%10;
  switch(b)//计算每种数量的价格
  {
  case(1): {money=money+one; break;}
  case(2): {money=money+two;break;}
  case(3): {money=money+three;break;}
  case(4): {money=money+four;break;}
  case(5): {money=money+five;break;}
  case(6): {money=money+six;break;}
  case(7): {money=money+seven;break;}
  case(8): {money=money+eight;break;}
  case(9): {money=money+nine;break;}
  }
  //输出购买方案
  if(b==8) cout<<"购买"<<a*2<<"套全套的书   再分两次购买 "<<4<<"本不同样的书"<<endl;
  else if(b>=5)
 {
	  a=a+1;
	  b=b-5;
	  cout<<"购买"<<a*2<<"套全套的书   再买 "<<b<<"本不同样的书"<<endl;
  }
  else  cout<<"购买"<<a*2<<"套全套的书   再买 "<<b<<"本不同样的书"<<endl;
  cout<<"总金额为:"<<money<<endl;

}

  运行结果:

经验总结:

总是觉得编程难,这一次是很简单,但是又眼高手低,自以为是,很多时候动手算一算才知道对错。

时间: 2024-10-13 10:18:54

买书实验的相关文章

4月14号周二课堂练习:买书最优问题

一.问题提出 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                   折扣 2                       5% 3                       10% 4                       20% 5                       25% 二.题目要求 1.根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣

课堂练习-买书价格最低

实验背景 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数 折扣 2 5%         3 10%         4 20%            5 25% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠.       设计算法能够计算出读者购买一批书的最低价格. 一.设计思想此问题可以折算为如何取余

个人项目——买书

用折后最低价买书 一.程序要求 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                    折扣 2                       5% 3                       10% 4                       20% 5                       25% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折

经济买书

一.设计思想 买书可以分为不同的情况,五本一下肯定是越多越便宜,五本以上,就要搭配着买.比如买6本,就有5+1,4+2,3+3三种买法. 要买6,7,9,本时,都是5+x是最合适的买法,只有买8本的时候,是4+4最合适. 所以就把买书的方案分成小块,用要买的本数除以10取余数,因为10的整数倍肯定是按五本买最合适,剩下的1-9本,除了8之外,其他的都是5+x模式,再把两部分的钱加起来.就是总钱数.(未拿数学证明,不严谨检讨!) 二.源代码 #include<iostream> using na

买书最优

一.题目要求 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示: 本数                  折扣 2                       5% 3                       10% 4                       20% 5                       25% 要求: 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购

结对开发----买书问题

小组成员:赵永恒.范德一 一.实验题目 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,用编号0.1.2.3.4表示,单独一卷售价8元, 具体折扣如下所示:                                   本数                  折扣                                   2                       5%                                   3               

编程之美之买书问题

拿到这个问题,我的第一反应是用贪心算法,优先满足不同种类多的,这样打的折扣比价多.但是,看了书中的分析发现,* 我们设定的贪心策略实际上是有问题的, ie 在买 5 + 3 本的时候会出错. 看到这里,书上说可以利用改进的贪心算法,感觉如果换了相应的折扣数量,可能又会有不同的结果了.因而,没有深入的研究下去. 既然,贪心算法不可行,那就用动态规划呗. 这里的动态规划思路很简单不过写起来有些复杂.我们这里用到了5维数组, 光是init 就写了好多. 其实我在写的时候,就在想有什么简单一点的方法可以

(动态规划)6049:买书

描述 小明手里有n元钱全部用来买书,书的价格为10元,20元,50元,100元. 问小明有多少种买书方案?(每种书可购买多本) 输入 一个整数 n,代表总共钱数.(0 <= n <= 1000) 输出 一个整数,代表选择方案种类 样例输入 样例输入1:20 样例输入2:15 样例输入3:0 样例输出 样例输出1:2 样例输出2:0 样例输出3:0 我の代码 #include <iostream> int pri[5]; int dp[1001]; using namespace s

软件工程——买书折扣问题

1.题目 书店针对<哈利波特>系列书籍进行促销活动一共5卷,用编号0.1.2.3.4表示,单独一卷售价八元,具体折扣如下所示: 本书       折扣 2           5% 3          10% 4          15% 5          20% 根据购买的卷数以及本数,会对应不同折扣规则情况.单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠.设计算法能够计算出读者购买一批书的最低价格. 2.设计思路 根据题目