zoukankan      html  css  js  c++  java
  • 软件工程随堂小作业——最优惠价钱(C++)

    一、设计思路

    前提,没有买重复书的情况是最优惠的。
    总共买n本书,可以分解成5k+(n-5k),k=0,1,2,...
    1、如果k=0,n本不重复的价钱是最优惠的;
    2、如果k=1,算出每一种情况的折扣并比较,最后挑选出折扣最大的;
    3、如果k>1,最后的(n-5k)再按照第二种情况进行计算。

    二、源代码

     1 // 最优价钱.cpp : Defines the entry point for the console application.
     2 //
     3 
     4 #include "stdafx.h"
     5 #include "iostream.h"
     6 #define PRICE 8
     7 double discount[5]={0,0.05,0.1,0.2,0.25};
     8 
     9 double Caculate(int num1,int num2)        //计算该情况的价钱
    10 {
    11     double money,money1,money2;
    12     money1=(PRICE-PRICE*discount[num1-1])*num1;
    13     money2=(PRICE-PRICE*discount[num2-1])*num2;
    14     money=money1+money2;
    15     return money;
    16 }
    17 double Discount(int num)            //分情况讨论价钱
    18 {
    19     int k,yushu;
    20     double money1,money2,min;
    21     k=num/5;                    //取整
    22     yushu=num%5;                //取余
    23     min=num*PRICE;
    24     switch(k)
    25     {
    26         case 0:
    27             money1=(PRICE-PRICE*discount[num-1])*num;
    28             break;
    29         default:
    30             if(yushu==0)
    31             {
    32                 money1=(PRICE-PRICE*discount[4])*num;
    33                 return money1;
    34             }
    35             for(int i=1;i<(yushu+5);i++)
    36             {
    37                 money1=Caculate(i,(yushu+5)-i);
    38                 if(money1<min)
    39                     min=money1;
    40             }
    41             if(num>9)
    42                 money2=(k-1)*5*(PRICE-PRICE*discount[4]);
    43             else
    44                 money2=0;
    45             return min+money2;
    46     }
    47     return money1;
    48 }
    49 int main(int argc, char* argv[])
    50 {
    51     int booknum;
    52     double money;
    53     cout<<"请输入购买书籍的数量:";
    54     cin>>booknum;
    55     money=Discount(booknum);
    56     cout<<"最优惠的价格是"<<money<<""<<endl;
    57     return 0;
    58 }

    三、运行截图

    四、心得体会

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

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

  • 相关阅读:
    python基础-包
    python基础-模块
    python基础-面向过程与函数式
    python基础-二分法
    python基础-函数递归
    python基础-生成器
    QFNU-ACM 2020.11.6 Trating
    ACM 实验室2020.11.01天梯赛练习*4
    QFNU-ACM 2020.10.30 Trating
    QFNU-ACM 2020.10.23 Trating
  • 原文地址:https://www.cnblogs.com/JJJanepp/p/4427308.html
Copyright © 2011-2022 走看看