gpt4 book ai didi

ada - 我的简单 Ada 程序无法执行下一个命令,但在构建和运行过程中这无关紧要

转载 作者:行者123 更新时间:2023-12-05 08:49:02 25 4
gpt4 key购买 nike

抱歉,我想问的是 Ada 语言。首先,我想说明一下,我是第一次学习 Ada 语言和我正在尝试制作一个像我附加的那样的简单程序 -> https://pastebin.com/Z1CWUSQv

with Ada.Text_IO;
use Ada.Text_IO;

procedure Main is
Name : STRING (1..50);

begin
Put("Hallo, whats your name?");
Get(Name);

if (Name = "William") then
Put_Line ("Hai william");
elsif (Name = "Erick") then
Put_Line ("Hai erick");
else
Put_Line ("i dont know, who are you!");
end if;
end Main;

/image/1fTLR.png所以,我的问题是:当我写完代码后,我进行了构建,它是成功的,之后我做了运行程序,输出如下所示:

  • 你好,你叫什么名字? (这是输出)
  • 埃里克(这是我的输入)

完成后我按下了回车键,之后什么都没有发生就像程序不执行下一个命令(我做了一个 if/else 命令)

我正在使用 Gnat Studio IDE 或在线编译器 --> https://www.tutorialspoint.com/compile_ada_online.php ,那么我的程序有什么问题呢?有没有我需要安装的工具等等?请知道我很难找到关于这个问题的引用资料。我希望所有阅读本文的人都可以帮助我。(抱歉我的英文不好)

~谢谢

最佳答案

Ada 的新手很难掌握字符串。在这种情况下,问题是 Name 的长度为 50 个字符,因此

  • 当您调用 Get 时,它想要读取 50 个字符,它将继续读取直到它获得 50 个字符(或到达输入末尾)。这就是您的程序似乎卡住了的原因。
  • “William” 的长度不足 50 个字符,因此它不可能等于 Name

您可以使用过程 Get_Line ( ARM A.10.7(18) ),如下所示:

with Ada.Text_IO;
use Ada.Text_IO;

procedure Main is
Name : STRING (1..50);
Last : Natural;
begin
Put("Hallo, whats your name?");
Get_Line (Name, Last);

if (Name (1 .. Last) = "William") then
Put_Line ("Hai william");
elsif (Name (1 .. Last) = "Erick") then
Put_Line ("Hai erick");
else
Put_Line ("i dont know, who are you!");
end if;
end Main;

关于ada - 我的简单 Ada 程序无法执行下一个命令,但在构建和运行过程中这无关紧要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65215323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com