将值转换为切换语句案例

时间:2015-09-27 21:50:21

标签: c++ switch-statement range statements

对于编程类,我必须将一系列值转换为switch语句,而不使用if / else ifs。以下是我需要转换为案例的值:

0到149 ............. 10.00美元
150至299 ......... 15.00美元
300到449 ......... 25.00美元
550至749 .......... $ 40.00
750至1199 ........ $ 65.00
2000及以上..... $ 85.00

我很难找到分离值的方法,因为它们的数量非常接近(例如149到150)。

我已经使用了大量算法,例如将输入除以2000,然后将其乘以10得到一个整数,但它们彼此太靠近以创建一个新的情况。

1 个答案:

答案 0 :(得分:1)

要做的第一件事是弄清楚你的粒度。看起来在你的情况下,你不会处理小于50的增量。

接下来,将每个范围转换为由数字除以​​增量(即50)得到的整数范围。在你的情况下,这意味着

0, 1, 2 --> 10
3, 4, 5 --> 15
6, 7, 8 --> 25
... // And so on

这映射到一个非常简单的switch语句。

注意:这也会映射到一个值数组,如下所示:

10, 10, 10, 15, 15, 15, 25, 25, 25, ...

现在,您可以通过执行array[n/50]来获得结果。