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

小组成员:赵永恒、范德一

一、实验题目

书店针对《哈利波特》系列书籍进行促销活动,一共5卷,用编号0、1、2、3、4表示,单独一卷售价8元, 具体折扣如下所示:
                                   本数                  折扣
                                   2                       5%
                                   3                       10%
                                   4                       20%
                                   5                       25%

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。
要求将设计思想、代码实现、实现截图、个人总结以博文的形式发表。

二、设计思路

刚看到这个问题的时候,我们的设想是分情况讨论,例如说12本的时候程序自动将其分成很多种情况,如4.4.4、3.4.5等。但是在设计程序的时候我们发现这样来实现是很麻烦或者说是实现不了的,因为数目越大情况越多,需要讨论的也就越多,实现不了对很大的数的分情况讨论。后来通过计算,我们发现只需将所有的情况分成5类就可以,即被5整除后对其余数进行讨论,对于价格总数,我们也归类了5个计算公式就可以解决,这样不管数目是多少都能带入而且很简洁。

三、源代码

#include<iostream.h>
int main()
{
    int num;
    int shang;
    int yushu;
    double price;
    cout<<"请输入买书数量:";
    cin>>num;
    shang=num/5;
    yushu=num%5;
    switch(yushu)
    {
    case 0:
        price=30*shang;
        cout<<"书的总价是: "<<price<<" 元"<<endl;
        break;
    case 1:
        price=30*shang+8;
        cout<<"书的总价是: "<<price<<" 元"<<endl;
        break;
    case 2:
        price=30*shang+15.2;
        cout<<"书的总价是: "<<price<<" 元"<<endl;
        break;
    case 3:
        price=30*(shang-1)+51.2;
        cout<<"书的总价是: "<<price<<" 元"<<endl;
        break;
    case 4:
        price=30*shang+25.6;
        cout<<"书的总价是: "<<price<<" 元"<<endl;
        break;
    }
    return 0;
}

四、运行截图

五、实验总结

刚看到这个题目感觉难度有些大,但是经过和搭档研究一番后,发现看似复杂问题可以划分成几个小的分组,然后每个分组进行分析,这样问题就得到了解决。很多问题本身并不难,我们总是被它的表象给吓到了,冷静分析后才发现原来都在自己的能力范围之内。

时间: 2024-11-05 21:46:01

结对开发----买书问题的相关文章

结对合作-买书问题编程

组员:石鹤 李海超 一.问题 书店针对<哈利波特>系列书籍进行促销活动,一共5卷,单独一卷售价8元,具体折扣如下:本数对应的折扣分别为:2本—5%,3本—10%,4本—20%,5本—25%.根据购买的卷数以及本数,会对应不同的折扣规则情况.单独一本书只会对应一个折扣规则.设计算法能够计算出读者购买一批书的最低价格. 二.设计思路 1到5本书买越多越便宜,6到9本书得分类考虑,10本及以上是与1到9本一致. 三.源代码 #include<iostream.h> int main()

【活动】不用买书,不用花钱,可以免费看HTML5入门连载了

清华大学出版社推出的<HTML 5网页开发实例详解>适合HTML 5开发初学者和前端开发工程师.本书一经上市,就获得了读者的一致好评,为感谢读者,推出本书的连载活动.   本书术新颖.与时俱进,结合时下最热门的技术,如Node.js.响应式设计.移动开发.MVC,让读者在学习HTML 5的同时,了解熟识更多相关的世界先进技术.对于无法全面讲解的一些框架,还给出了GitHub的详细地址供读者参考. 本书贴近读者.贴近实际,大量成熟第三方组件和框架的使用和说明,帮助读者快速找到问题的最优解决方案,

结对开发之返回一个二维整数数组中最大联通子数组的和

一.题目要求 输入一个二维整形数组,数组里有正数也有负数.二维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.要求时间复杂度为O(n)题目:返回一个二维整数数组中最大子数组的和 二.解题思路 先对二维数组进行了重构,形成一个环状二维数组,然后再用求二维数组子矩阵最大和的方法求得最终结果. 三.程序代码 2 #include<iostream.h> 3 int main(int argc, char* argv[]

编程之美之买书问题

拿到这个问题,我的第一反应是用贪心算法,优先满足不同种类多的,这样打的折扣比价多.但是,看了书中的分析发现,* 我们设定的贪心策略实际上是有问题的, 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

结对开发——返回整数数组最大子数组和2

返回整数数组最大子数组和2 为了实现“敏捷开发”的目的,老师让我们采取“迭代”的方法进行项目的开发,这不,对于周一的求最大子数组和又有了新的要求,如下: 1.延续上次的要求,这里不再赘余… 2.如果数组A[0]……A[j-1]首尾相连,允许A[i-1],……A[n-1],A[0]……A[j-1]之和最大: 3.同时返回最大子数组的位置: 4.要求程序必须能处理1000 个元素,且每个元素是int32 类型的. 一.实验设计思路 首先实现的是数组首尾相连,先存入数组,再将原数组反向存储形成环形数组

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

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

结对开发5

题目:返回一个二维整数数组中最大子数组的和. 要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 结对编程要求: 两人结对完成编程任务. 一人主要负责程序分析,代码编程. 一人负责代码复审和代码测试计划. 发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照). 一.设计思路 这一次,因为诸多原因,我两互

结对开发——求环形二维数组最大子矩阵和的问题

一.题目要求 输入一个二维整形数组,数组里有正数也有负数.二维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.要求时间复杂度为O(n)题目:返回一个二维整数数组中最大子数组的和 二.解题思路 这次就在以前的基础上进行修改,先对二维数组进行了重构,形成一个环状二维数组,然后再用求二维数组子矩阵最大和的方法求得最终结果. 三.程序代码 1 #include "stdafx.h" 2 #include<i