ورود

View Full Version : آرایه دو بعدی پویا در پاسکال



alimooghashang
دوشنبه 11 آذر 1387, 21:35 عصر
نحوه تعریف آرایه دو بعدی پویا در پاسکال
ممنون و مرسی از دوستانی که جوابگو هستند
:قلب:

vcldeveloper
سه شنبه 12 آذر 1387, 00:26 صبح
TMyArray = array of array of integer;

shervin farzin
سه شنبه 12 آذر 1387, 00:31 صبح
سلام
تعريف آرايه پويا در پاسكال با تعريفش در دلفي فرق ميكنه .
در پاسكال شما ميتونين متغيير رو هم به عنوان اندازه در تعريف تابع به كار برين . مثلا

var
x1,x2,x3,x4 : integer;
Tmp : array [x1..x2,x3..x4] of integer;
كه به اين ترتيب شما يك آرايه پويا دو بعدي دارين .
اما اگر منظور شما از سوالتون تعريف اين نوع آرايه در دلفي بايد به ترتيب زير عمل كنيد .
اول بايد متغيير آرايه رو تعريف كنيد كه براي يك آرايه دو بعدي پويا به صورت زير خواهد بود :

var
2DArray : Array of Array Of Integer ;
با اين اعلان من يه متغيير به نام 2DArray رو از نوع دو بعدي ساختم .
حالا وارد كد برنامه ميشيم تا به سطر و ستونهاي اين آرايه اندازه بديم .
در مرحله اول من تعداد سطرها رو براي اين آرايه مشخص ميكنم كه به ترتيب زير بايد باشه :

Setlength ( 2Darray , 2 )
با اين خط ، تعداد سطرهاي آرايه من 2 در نظر گرفته ميشه و مثل گذشته Index گذاري اونها
از عدد 0 شروع ميشه .
حالا من مي خوام هر دو سطر اين آرايه 10 ستون داشته باشن :

SetLength ( 2Darray[0] , 10 )
SetLength ( 2Darray[1] , 10 )
به اين ترتيب من يك آرايه 2 بعدي پويا با ابعاد 2*10 ساختم .
نكته جالب اينه كه هيچ الزامي نداريد تا اندازه ستونها رو يكسان در نظر بگيرين ، يعني ميتونين
يك سطر رو با 10 ستون بسازين و سطر بعد رو با 20 ستون !!!

در كد زير من مثال بالا رو نوشتم و در آخر محتويات اين آرايه رو در يك ListBox نمايش دادم :

var
i,j:integer;
y:array of array of integer;
begin
setlength(y,2);
setlength(y[0],10);
setlength(y[1],10);
for i := 0 to 1 do
for j := 0 to 9 do
y[i][j]:=j*i;
for i := 0 to 1 do
for j := 0 to 9 do
ListBox1.Items.Add(inttostr(y[i][j]));


موفق باشيد .