ada - 如何在多维数组中使用for循环?

标签 ada

**(初学者问题)!我在我的数据类型 (Float_Type) 中使用了多维数组,我想知道如何遍历它们。我尝试使用“Put(A(I, I))”,但它不正确。我的代码:**

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

procedure Test is
type Float_Type is
 array (0 .. 4,1 ..3) of Float;   --Total float numbers: 15

A: Float_Type;
 begin
 Put(" Write in your float nums: ");
 for I in Float_Type'Range loop
  Get(A(I, I));     -- Not correct
end loop; Skip_Line;

Put(" Your float nums: ");
for I in Float_Type'Range loop
  Put(A(I, I));          --Not correct
end loop;
end Test;

最佳答案

所有数组都有一个维数 D。一个一维数组,例如 String,有 D = 1;一个二维数组,例如 Float_Type,有 D = 2;等等。数组的维度编号为 1 .. D,其中 1 指的是给定的第一个范围(对于您的情况为 0 .. 4),2 到第二个范围(对于您的情况为 1 ..3),依此类推。数组第 N 维的范围可以用 'range (N) 获得(for N in 1 .. D)。对于一维数组,'range 形式可以用作 'range (1) 的简写形式。

因此,正如 Drummond 所说,您需要两个嵌套循环:

for I in A'range (1) loop
   for J in A'range (2) loop
      Get (Item => A (I, J) );
   end loop;
end loop;

关于ada - 如何在多维数组中使用for循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64126968/

相关文章:

image - Ada 中的默认整数'image() 宽度

static - 动态链接libgnat

io - Ada.Text_IO.End_Of_File 缓冲副作用

sockets - 如何关闭等待服务器套接字监听的任务?

memory - 评估 GNAT 2012 中裸板的内存使用情况

艾达 Hello World 示例

exception - 如何在 Ada 中使用消息引发异常

Ada constraint error : Discriminant check failed. 什么意思?

c++ - 你能从 C++ 调用 Ada 函数吗?

ada - 前置条件和后置条件是否取代了函数验证?