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

Ada编程:使用S'Length实现字符串处理时输出内容异常问题求助

调整方案

你当前代码的问题是输出语句仅打印了String_Length函数返回的长度整数,没有输出原字符串本身。同时要满足题目要求的「主程序输出时必须调用该字符串的长度值」,我们可以用函数返回的长度作为字符串切片的上界,输出完整原字符串即可。

修改后的完整代码

with Ada.Text_IO;         use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

procedure String_Program is

    function String_Length (S : in String) return Integer is
    begin
        return S'Length;
    end String_Length;
     
    S : String (1 .. 3);

begin
    Put("Type a string containing 3 letters: ");
    Get(S);
    Put("You typed the string: ");
    -- 用长度函数返回值做切片上界,既调用了要求的函数,又输出原字符串
    Put(S(1 .. String_Length(S)));

end String_Program;

调整说明

  • 完全保留了所有题目要求的规则:String_Length子程序仅接收字符串参数,内部用S'Length获取长度返回整数值,主程序输出时调用了该长度值用来指定字符串切片范围。
  • 输出的切片S(1 .. String_Length(S))就是你输入的完整原字符串,符合预期运行效果。
  • 原代码里String_Length函数中的临时变量Res是冗余的,这里做了简化,如果你需要保留可以自行加回去不影响功能。

内容的提问来源于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 05:45:08