我需要创建一些处理任意大小矩阵的函数。我熟悉使用的declare
语法here,但这是针对大学任务的,我的教授告诉我,使用'声明'有矫枉过正。我无法在网上找到任何相关信息,有什么帮助吗?
基本上我想通过键盘获取矩阵大小,然后使用生成的矩阵,我被declare
困住了
目前我有:
type myMatrix is array (Natural range <>, Natural range <>) of Integer;
type myVector is array (Natural range <>) of Integer;
我用它作为:
procedure Lab1 is
begin
declare A, B: myVector(1..5):=
(3, 14, 15, 92, 6);
不允许在运行时指定大小,并且:
declare
int1:Integer:=generate_random_number(50)+2;
int3:Integer:=generate_random_number(50)+2; -- +2 so we don't get length/size 0 or 1
X, Y:myVector(1..int1):=(others=>generate_random_number(20));
MT:myMatrix(1..int1, 1..int3):=(others =>(others=>generate_random_number(10))); -- 'others' used for all the unmentioned elements, http://rosettacode.org/wiki/Array_Initialization
MS:myMatrix(1..int3, 1..int1):=(others =>(others=>generate_random_number(10)));
F3_result:myMatrix(1..int1, 1..int1);
begin
F3_result:=F3(X, Y, MT, MS);
end;
使用declare
块。我可能需要稍后使用生成的数组,据我所知,F3是一个局部变量,因此无法重用?
还有其他方法吗?
答案 0 :(得分:6)
我同意您的老师的意见,在newfilename.txt
之后放置一个declare
一般会显示begin
块是不需要的(我能想到的唯一例外是因为你想要的处理可能作为封闭子程序中变量声明的一部分而出现的异常。)
因此,您可以在子程序开头删除declare
和begin
,这应该是相同的。