软件工程课堂作业——购书问题

小组成员:陈志利   檀威

一、题目要求

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

根据购买的卷数以及本数,会对应不同折扣规则情况。单数一本书只会对应一个折扣规则,例如购买了两本卷1,一本卷2,则可以享受5%的折扣,另外一本卷一则不享受优惠。
设计算法能够计算出读者购买一批书的最低价格。

二、设计思想

  首先我们俩根据书的本数划分了三个范围,0-5,6-9,10以上。然后我们决定从实际数据出发,笔算了10以下的实际最大折扣,总结出10以上就是前面6-9的循环。跟5做除法得到的商就是5本的最大折扣的整数倍,再加上跟5取余得到的余数乘上相应的折扣,最终得到的和就是最低价格。

三、代码实现

 1 #include<iostream.h>
 2 void main()
 3 {
 4     int number;//本数
 5     int shang;//商
 6     int remainder;//余数
 7     double price;
 8     int n;
 9     while(n)
10     {
11         cout<<"请输入您买书的本数:"<<endl;
12         cin>>number;
13         shang=number/5;
14         remainder=number%5;
15         switch(remainder)
16         {
17         case 0:
18             price=shang*8*0.75*5;
19             cout<<"购买"<<number<<"本书的最低价格是:"<<price<<"元"<<endl;
20             break;
21         case 1:
22             price=shang*8*0.75*5+8;
23             cout<<"购买"<<number<<"本书的最低价格是:"<<price<<"元"<<endl;
24             break;
25         case 2:
26             price=shang*8*0.75*5+8*2*0.95;
27             cout<<"购买"<<number<<"本书的最低价格是:"<<price<<"元"<<endl;
28             break;
29         case 3:
30             price=(shang-1)*8*0.75*5+8*4*0.8*2;
31             cout<<"购买"<<number<<"本书的最低价格是:"<<price<<"元"<<endl;
32             break;
33         case 4:
34             price=shang*8*0.75*5+8*4*0.8;
35             cout<<"购买"<<number<<"本书的最低价格是:"<<price<<"元"<<endl;
36             break;
37         default:
38             break;
39         }
40         cout<<"继续输入1,退出输入0"<<endl;
41         cin>>n;
42     }
43 }

四、实现截图

五、个人总结

  在我们计算的过程中,由于计算不认真,不全面误以为6-9的时候都是先满足5本的折扣,剩下的折扣就是最便宜的,不过经过后来同学的指正,我们又认真计算了一下,当为8本时,4本和4本是折扣力度最大的,这就是由于我们的不认真,太天真造成的,以后要坚决避免这种类似情况的发生。

时间: 2024-10-28 15:42:49

软件工程课堂作业——购书问题的相关文章

软件工程课堂作业04

软件工程课堂作业04 源代码: 1 package jian; 2 import java.io.*; 3 import java.util.Scanner; 4 public class Point3D{ 5 public static int Lenght(int list[],int lenght) 6 { 7 int i,max; 8 max=list[0]; 9 for(i=1;i<=(lenght-1);i++) 10 { 11 if(list[i]>max) 12 { 13 ma

软件工程-课堂作业(最低购书价)

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

课堂作业-购书问题

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

软件工程课堂作业(七)续——电梯调度之整体设计

一.题目要求: 1.可以获得电梯和乘客所在楼层: 2.可以根据乘客的需求到达想到达的楼层. 二.设计思路: 1.通过用户输入可以获取乘客和电梯所在楼层: 2.通过循环,输出电梯向上/向下走的过程. 三.源代码: 1 // 电梯调度——胡亚宝 2 // 3 4 #include "stdafx.h" 5 #include<iostream> 6 using namespace std; 7 8 9 int _tmain() 10 { 11 int a,b,c,m,i; 12

软件工程课堂作业(四)——结对开发

一.题目及要求: 1.题目:返回一个整数数组中最大子数组的和. 2.要求: ①输入一个整形数组,数组里有正数也有负数:数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和:求所有子数组的和的最大值:要求时间复杂度为O(n). ②两人结对完成编程任务:一人主要负责程序分析,代码编程,一人负责代码复审和代码测试计划. 3.结对人员:胡亚宝 焦燕 二.设计思路: ①第一个方法,定义一个数组,将所有的子数组的和都求出来放到该数组中,再求最大值,输出.但是在编写过程中,我们发现如果用循环方式存放

软件工程课堂作业(最小数组和)

1.设计思想 2.源程序 import java.util.*; public class max_add { static Scanner in=new Scanner(System.in); public static void main(String[] args){ int n=0; System.out.println("请输入数组个数:"); n=in.nextInt(); int a[]=new int[2*n-2]; System.out.print("请输入

软件工程课堂作业(十四)——揪出“水王”

一.题目: 现有一个灌水论坛,信息学院的学生都喜欢在上面交流灌水.传说在论坛上有一个“水王”,它不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目已超过了帖子数目的一半. 如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者ID在其中,请设计算法快速找到这个传说中的“水王”. 二.设计思路: 1.首先要快速找到,要求时间复杂度要低.如果进行ID数目多少排序的话,时间复杂度至少为O(n*lgn),所以不能排序: 2.要想遍历一遍就能找到最多出现的ID,可以将数目少的ID删

软件工程课堂作业(一)——随机产生四则运算题目

一.设计思想: 1.首先主函数只用来调用随机产生并输出运算题目函数,随机产生并输出这一部分功能用一个randout函数实现: 2.随机产生运算数这一功能,两个运算数可以用随机函数生成,并将它们控制在100以内.其中,考虑到除数不能为零,第二个运算数随机产生时+1: 3.随机产生运算法则这一功能,运算法则一共有4种,也可以随机产生0-4的数,分情况进行四则运算. 二.源代码: #include "stdafx.h" #include "stdlib.h" void r

软件工程课堂作业(三)——软件单元测试:Right-BICEP

方法:Right-BICEP Right-结果是否正确? B-是否所有的边界条件都是正确的? I-能查一下反向关联吗? C-能用其他手段交叉检查一下结果吗? E-你是否可以强制错误条件发生? P-是否满足性能要求?