检查输入是否在c ++中的指定范围内

时间:2014-03-24 09:30:44

标签: c++ position range

我要求输入,我希望输出取决于输入范围内的范围。

示例

  • 我接受0.3 0.55等输入

  • 范围是0.0到1.

  • “步骤”为0.1。意思是有10个位置/检查站。

  • 如果输入为0.3,因为它是“步”的三倍,它应返回“位置3”,如果它小于0.3但大于0.2则应返回“位置2和3之间”等

问题:

  • 这可以在没有明确的if语句或切换案例的情况下完成所有可能的位置吗?

1 个答案:

答案 0 :(得分:1)

根据(input-range_min)/(range_max-range_min)* 10的值,编写这样的函数很容易。

struct Position
{
    int positionLow;
    bool inBetween;
};

Position WhereInRange(float input, float minScale, float maxScale, int numPositions)
{
    Position res;
    float fPlace = (input-minScale)/(maxScale-minScale)*numPositions;
    res.positionLow = int(floor(fPlace));
    res.inBetween = res.positionLow != fPlace;

}