You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用if语句在Ada中返回3个浮点值的中位数(转为整数)

修正Ada中位数计算函数的逻辑错误

你的代码逻辑存在分支覆盖不全的问题,导致部分输入场景下会错误返回最大值或最小值,而非中位数。比如输入1.0, 5.0, 3.0时,第一个条件Fl3 >= Fl1成立,后续判断Fl1 >= Fl2不成立,直接返回Fl2(5.0),但实际中位数应为3.0。

修正后的代码

function Median(Fl1, Fl2, Fl3: in Float) return Integer is
begin
    -- 判断Fl1是否是中位数(处于Fl2和Fl3之间)
    if (Fl1 >= Fl2 and Fl1 <= Fl3) or (Fl1 <= Fl2 and Fl1 >= Fl3) then
        return Integer(Fl1);
    -- 判断Fl2是否是中位数(处于Fl1和Fl3之间)
    elsif (Fl2 >= Fl1 and Fl2 <= Fl3) or (Fl2 <= Fl1 and Fl2 >= Fl3) then
        return Integer(Fl2);
    -- 剩下的情况Fl3必然是中位数
    else
        return Integer(Fl3);
    end if;
end Median;

逻辑说明

  • 核心思路是验证每个数值是否处于另外两个数值之间(大于等于其中一个,同时小于等于另一个),满足该条件的数值即为中位数。
  • 这种写法覆盖了所有可能的数值大小组合,不会出现逻辑遗漏。

内容的提问来源于stack exchange,提问作者Zeptuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:25:25