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

如何用Ada编写返回3个浮点值中最大值的子程序?

Ada子程序求三个浮点数最大值的问题修正

原代码中的错误点:

  • 主程序未命名:Ada语法要求所有程序单元必须有名称,原代码procedure is不符合规范,需为主程序指定名称。
  • 缺少输入输出包依赖:使用Put/Get处理浮点数时,必须导入Ada.Text_IO及Ada.Text_IO.Float_IO包,否则无法识别这些输入输出操作。
  • 错误的取整逻辑:函数返回Float'Ceiling(X)会把最大值向上取整,违背了“返回原始最大值”的需求,应直接返回X。
  • 程序结构不完整:主程序末尾缺少对应的end语句,导致代码无法正常编译。
  • 转义字符问题:代码中的&lt;是HTML转义字符,实际编写Ada代码时需替换为原生的<=运算符。

修正后的完整代码:

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Text_IO.Float_IO; use Ada.Text_IO.Float_IO;

procedure Find_Largest is

   function Biggest(A, B, C: in Float) return Float is 
      X: Float; -- Greatest value
   begin
      X := Float'Max(B, C);
      if A > X then
         X := A;
      end if;         
      return X; 
   end Biggest;

A, B, C: Float;
begin 
   Put("Mata in tre flyttal: ");
   Get(A);
   Get(B);
   Get(C);
   Put("Det största av dessa värden är: ");
   Put(Biggest(A,B,C), Fore=>0, Aft=>2, Exp=>0); -- 保留两位小数示例,可按需调整Aft参数
end Find_Largest;

补充说明:

  • 导入Ada.Text_IO.Float_IO包后,才能正确处理Float类型的Get和Put操作。
  • 简化了最大值判断逻辑:当A大于当前最大值X时直接赋值,否则无需操作,去掉冗余的null分支。
  • 输出时调整了Aft参数为2,用于保留两位小数,若需要整数输出可设为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:05:19