算法-小美的外卖订单

题目:

小美正在设计美团外卖的定价信息。已知外卖定价的规则如下:

1.每道菜有折扣价和原价。折扣价不能超过原价。

2.订单有满x元减y元的优惠。当购买的菜的价格总和不小于x元时,总价格可以减y元。“减” 的价格不能超过“满”的价格。

3.满减优惠和折扣价是互斥的,当且仅当每个菜都选择了原价才可以触发满减。

4.系统会自动为客户计算最低价格的方案。 在设计定价时,原价、折扣价和满减的价格都必须是正实数。如果设计的定价发生问题,则会提示数据错误。

请使用等价划分法设计测试用例,来测试该系统的功能。 

输入描述: 第一行输入一个正整数n,代表菜的总数。

接下来的行,每行输入两个实数a和b,代表每道菜的原价是a,折扣价是b,

最后一行输入两个实数x和y,代表满x元可以减y元。 

思路:

直接模拟,但是要注意错误值的判断:

1. a,b,x,y都要大于0

2. a ≥ b, x ≥ y

此外还要注意,输出是只保留小数点后两位

代码:

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    double a, b, x ,y,origin = 0, count = 0;;
    double minPrice = INT_MAX;

    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> a >> b;
        if(a <= 0 || b <= 0 || a < b){
            cout<< "error";
            return 0;
        }

        origin += a;
        count += b;
    }

    cin >> x >> y;
    if(x <= 0 || y <= 0 || x < y){
        cout << "error"; return 0;
    }

    minPrice = min(origin >= x ? origin - y: origin, count);

    cout << fixed << setprecision(2) << minPrice;

    return 0;
}

测试用例设计:

有效等价类无效等价类
折扣价和原价折扣价小于等于原价且都为正整数折扣价小于等于0
原价小于等于0
折扣价大于原价
满减价满减价大于优惠且都为正整数满减价小于等于0
优惠小于等于0
优惠大于满减价
用例编号原价a折扣价b满减价x优惠y预计输出
1108837
2151010310
3-1010103error
410-1103error
5108-53error
61085-1error
7101151error
810789error

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_62364940

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值