線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1560
推到 Plurk!
推到 Facebook!

動態二維數組賦值的問題?

答題得分者是:deity
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-18 15:37:21 IP:218.64.xxx.xxx 未訂閱
procedure TForm1.weights(w: D2Array; n, m: integer);
var
   i,j:integer;
begin       {setlength(w,m);
   for i:=low(w) to high(w) do
   setlength(w[i],n);} 这一段必须可以省去吗?       for i:=0 to m do
   for j:=0 to n do
   w[i,j]:=n m;
end;
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-18 17:26:24 IP:218.15.xxx.xxx 未訂閱
引言:
小丫123您好:
procedure TForm1.weights(w: D2Array; n, m: integer);
var
   i,j:integer;
begin       {setlength(w,m);
   for i:=low(w) to high(w) do
   setlength(w[i],n);} 这一段必须可以省去吗?
作用:初始化数组,定义数组为m*n阵列方式
Setlength两次,第一次设行,第二次设列:
var a: array of array of Integer;
SetLength(a,10);
SetLength(a[2],5);
这种方式每一行的列数可以不一样
如上您可以访问a[2][0]到a[2][4]的数据; 
或者直接这样
SetLength(a,10,5)
这种方式每一行的列数一样
所以上段不能省去;当然也可以直接改为:
SetLength(w,m,n);       for i:=0 to m-1 do //应-1 不然超出您所定义的数组范围
   for j:=0 to n-1 do
   w[i,j]:=n m;
end;
找了两篇关于数组的介绍,参考看看:
http://www.puiching.edu.hk/~wtchung/trace/CPP/cpp15_c.htm
http://imil.au.edu.tw/~hsichcl/TurboC/C_Unit10.htm
试试看
    < face="Verdana, Arial, Helvetica">    ——行径窄处,留一步与人行——

        
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-18 18:58:59 IP:218.64.xxx.xxx 未訂閱
deity您好,很感谢你的回答! 如果{setlength(w,m); for i:=low(w) to high(w) do setlength(w[i],n);} 这一段不可以省的话,也就是说,在给动态数组赋值之前,必须知道数组的宽度吗?
系統時間:2024-06-29 23:05:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!