问题陈述
我有一个Real_Matrix,有一行和一列.我想评估第一列第一列上单个元素的值.当我尝试使用:Matrix(I,J)语法访问Matrix时,我收到错误.见下文:
码
with Ada.Numerics.Real_Arrays; use Ada.Numerics.Real_Arrays;
with Ada.Text_IO; use Ada.Text_IO;
procedure Matrix is
------------------------------------
-- Real_Matrix Division Operation --
------------------------------------
function "/" (Left : Real_Matrix;
Right : Real_Matrix) return Real_Matrix
is
begin
return Left * Inverse(Right);
end "/";
? : Real_Matrix := ( ( Integer'First => 1.0 ),
( Integer'First => 2.0 ) );
? : Real_Matrix := ( ( Integer'First => 3.0 ),
( Integer'First => 4.0 ) );
begin
-- This operation returns an matrix with one …Run Code Online (Sandbox Code Playgroud) 问题陈述
我想迭代矩阵中的每个元素并显示:
下面的代码给出了以下输出:
(-2147483648, -2147483648) = 1.00000E+00
(-2147483648, -2147483647) = 2.00000E+00
(-2147483648, -2147483646) = 3.00000E+00
(-2147483647, -2147483648) = 4.00000E+00
(-2147483647, -2147483647) = 5.00000E+00
(-2147483647, -2147483646) = 6.00000E+00
Run Code Online (Sandbox Code Playgroud)
我希望看到1而不是-2147483648和2而不是-2147483647.
示例代码
with Ada.Numerics.Real_Arrays; use Ada.Numerics.Real_Arrays;
with Ada.Text_IO; use Ada.Text_IO;
procedure Index is
Matrix : Real_Matrix := (( 1.0, 2.0, 3.0 ),
( 4.0, 5.0, 6.0 ));
begin
for I in Matrix'Range(1) loop
for J in Matrix'Range(2) loop
Put_Line("(" & Integer'Image(I) & ", " &
Integer'Image(J) & ") = " & …Run Code Online (Sandbox Code Playgroud) 我希望这段代码能够生成约束错误或打印正数.为什么这段代码也没有?
WITH ADA.TEXT_IO;
USE ADA.TEXT_IO;
PROCEDURE OVERFLOW IS
PROCEDURE P (I: POSITIVE) IS
X: INTEGER := INTEGER'LAST;
BEGIN
X := (X + I) / 2;
PUT_LINE (INTEGER'IMAGE (X) & " SHOULD BE POSITIVE");
END;
BEGIN
P(10);
END;
Run Code Online (Sandbox Code Playgroud)