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

Ada实现返回两个浮点数最大值的function子过程及调用优化

优化方案

现存问题梳理

  • 自定义Value函数存在逻辑漏洞:当两个浮点数相等时无返回值,会触发运行时异常
  • 主程序重复实现了比较逻辑,未调用预先定义的Value函数,不符合需求且代码冗余

优化后完整代码

with Ada.Text_IO;       use Ada.Text_IO;   
with Ada.Float_Text_IO; use Ada.Float_Text_IO;
 
procedure Test is
   
    function Max_Value(Float_1, Float_2 : in Float) return Float is
    begin  
        -- 覆盖所有情况:大于返回前者,小于等于返回后者
        if Float_1 > Float_2 then
            return Float_1;
        else
            return Float_2;
        end if;
    end Max_Value;
   
    Float_1, Float_2 : Float;
   
begin
    Put("Type in two numbers: ");
    Get(Float_1);
    Get(Float_2);
    Put("The greatest value was: ");
    -- 直接调用自定义函数获取最大值,删除重复的比较逻辑
    Put(Max_Value(Float_1, Float_2), Fore => 0, Aft => 2, Exp => 0);
end Test;

优化说明

  1. 函数重命名为Max_Value,语义更清晰,避免和内置关键字混淆
  2. 修复了原函数的边界问题:两数相等时直接返回第二个值,覆盖所有输入场景,不会出现无返回值的错误
  3. 主程序直接调用自定义函数获取结果,冗余逻辑完全删除,符合任务要求的子过程调用规则
  4. 输出格式和要求完全一致,输入-13.12 2时会输出2.00,和需求匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:24:05