相关疑难解决方法(0)

动态数组大小在运行时在ada中确定

有可能有一个大小在运行时确定的数组,如此,

Procedure prog is
   type myArray is array(Integer range <>) of Float;
   arraySize : Integer := 0;
   theArray : myArray(0..arraySize);
Begin
   -- Get Array size from user.
   put_line("How big would you like the array?");
   get(arraySize);

   For I in 0..arraySize Loop
      theArray(I) := 1.2 * I;
   End Loop;
End prog;
Run Code Online (Sandbox Code Playgroud)

除了使用动态链接列表或其他类似结构之外,有没有办法实现此结果?或者是否有一个简单的内置数据结构比使用动态链接列表更简单?

ada dynamic-arrays

6
推荐指数
1
解决办法
9188
查看次数

Ada:包含可变大小数组的打包记录

我希望创建一个打包记录,可以容纳一个数组,长度从5-50元素不等.是否可以这样做,以便记录可以打包没有浪费的空间?我将在创建记录时知道阵列中有多少元素.

-- the range of the array
type Array_Range_T is Integer range 5 .. 50;

-- the array type
type Array_Type_T is array range (Array_Range_T) of Integer;

-- the record
type My_Record_T (Array_Length : Integer := 5) is
  record
    -- OTHER DATA HERE
    The_Array : Array_Type_T(Array_Length);
  end record;
-- Pack the record
for My_Record_T use
  record
    -- OTHER DATA
    The_Array at 10 range 0 .. Array_Length * 16;
  end record;

for My_Record_T'Size use 80 + (Array_Length * 16);
Run Code Online (Sandbox Code Playgroud)

这显然不会编译,但显示了我想要做的精神.如果可能的话,我想保持阵列的长度不在记录中.

谢谢!

arrays ada

1
推荐指数
1
解决办法
509
查看次数

标签 统计

ada ×2

arrays ×1

dynamic-arrays ×1