PDA

View Full Version : نحوه ی تعریف آرايه دوبعدي ؟؟!!!



gigil_Question
شنبه 11 آبان 1387, 14:41 عصر
سلام
يه سوال مبتديانه :خجالت::خجالت::خجالت:
آرايه دو بعدي چه جوري تعريف ميشه ؟:خجالت::خجالت::خجالت:

Salar Ashgi
شنبه 11 آبان 1387, 16:44 عصر
سلام ،


type [,] array name= new type[size1,size2]
Example : int [,] a = new int[4,5]
یک آرایه دو بعدی 4 در 5


موفق و پیروز باشید !!!

sokote_bi_payan
شنبه 11 آبان 1387, 16:55 عصر
به نام خدا

با سلام

بدین صورت :



int [,] a= new int[2,2];
a[0 ,0] = 12;
a[0, 1] = 21;
a[1, 0] = 31;
a[1,1] = 41;

gigil_Question
یک شنبه 12 آبان 1387, 15:03 عصر
خيلي ممنون
يه سوال ديگه :
آرايه دو بعدي پويا چه جوري تعريف كنم ؟

corona
یک شنبه 12 آبان 1387, 15:21 عصر
دوست عزیز تمام آرایه هایی که دوستان بالا تعریف کردن پویا هستن و از هیپ سیستم براشون فضا گرفته میشه ! اگه منظورت اینه که غقط تعداد سطر ها و ستون ها رو متغییر بگیری خوب آره میشه :تو مثال زیر تعداد سطرها وستون های آرایه رو از کاربر می گیرم :

file:///C:/DOCUME%7E1/Mohammad/LOCALS%7E1/Temp/moz-screenshot.jpg

static void Main(string[] args)
{
int ROW, Colum;
Console.WriteLine("Enter Number Of rows:");
ROW = int.Parse(Console.ReadLine());
Console.WriteLine("Enter number of columns:");
Colum = int.Parse(Console.ReadLine());

int [ , ] DynamicArray=new int[ROW,Colum] ; // defining dynamic array

}

Salar Ashgi
یک شنبه 12 آبان 1387, 18:29 عصر
خيلي ممنون
يه سوال ديگه :
آرايه دو بعدي پويا چه جوري تعريف كنم ؟

===================================

ببینید ، در زبانهایی مثل ++C آرایه ها به دو طریق پویا و ایستا ایجاد می شدند ، ولی در زبان

#C آرایه ها مستقیما پویا تعریف میشوند !!!!


C++ :
Dynamic :int * a = new int[n];
Static : int a[10];
-----------------------
C# :
Dynamic : int [] a = new int[n];


موفق و پیروز باشید !!!!

gigil_Question
یک شنبه 12 آبان 1387, 20:09 عصر
سلام
این چیزا رو میدونم
من یه آرایه لازم دارم که باید سراسری باشه
بُعد هاشم باید کاربر معرفی کنه
حالا موقع تعریف(بالای برنامه)بُعد مشخص نیست که
چی کار کنم ؟

Sajjad.Aghapour
یک شنبه 12 آبان 1387, 21:41 عصر
دوست عزیز شما چی می خواین.اگه می خوای سراسری باشه خوب داخل کلاس اصلی تعریفش کن.اگه می خوای بعدهاشو کاربر تعریف کنه خوب کدهای جناب corona این کار رو میکنه.

cherchil_hra
یک شنبه 12 آبان 1387, 22:59 عصر
آرایه ها از نوع ارجاعی هستند. یعنی آدرس اول خانه مربوط به خودشون (مربوط به حافظه Heap ) رو توی Stack نگه می دارند. شما با استفاده از خاصیت ارجاعی بودن می تونی کاری که خواستی رو انجام بدی، یعنی:

این آرایه سراسریت میشه که نمی دونی چقدر باید باشه.


int [,] arrMain=new int [1,1]



حالا توی یک تابعی که توی برنامه نوشتی و مسئول گرفتن تعداد سطر و ستون ها هست این کد رو بنویس. i و j پارامترهای تابع هستند که از کاربر گرفتی:



int [,] arrTemp= new arrTemp [i,j]
arrMain=arrTemp



اینجوری هر دو آرایه ها به یک قسمت از حافظه اشاره می کنند با این تفاوت که arrTemp چون محلی هستش با تمام شدن تابع از بین میره، ولی arrMain چون سراسری هست، آدرس اون قسمت از حافظه رو خواهد داشت و شما هم به مقادیرت دسترسی داری.

احمد سامعی
جمعه 24 آبان 1387, 19:33 عصر
آرایه ها از نوع ارجاعی هستند. یعنی آدرس اول خانه مربوط به خودشون (مربوط به حافظه Heap ) رو توی Stack نگه می دارند. شما با استفاده از خاصیت ارجاعی بودن می تونی کاری که خواستی رو انجام بدی، یعنی:

این آرایه سراسریت میشه که نمی دونی چقدر باید باشه.


int [,] arrMain=new int [1,1]



حالا توی یک تابعی که توی برنامه نوشتی و مسئول گرفتن تعداد سطر و ستون ها هست این کد رو بنویس. i و j پارامترهای تابع هستند که از کاربر گرفتی:



int [,] arrTemp= new arrTemp [i,j]
arrMain=arrTemp



اینجوری هر دو آرایه ها به یک قسمت از حافظه اشاره می کنند با این تفاوت که arrTemp چون محلی هستش با تمام شدن تابع از بین میره، ولی arrMain چون سراسری هست، آدرس اون قسمت از حافظه رو خواهد داشت و شما هم به مقادیرت دسترسی داری.

من يك آرايه دوبعدي تو برنام تعريف كردم كه بسته به درخواست كاربر ممكن انديس X و Y تغيير كنه
اما وفتي مي خوام به اون مفدار بدم خطا مي ده اينم كدم


int[,] arry;
arry[0,2]=int.Pass(textbox.Text);


چطور بايد تعريف كنم

Salar Ashgi
جمعه 24 آبان 1387, 21:26 عصر
من يك آرايه دوبعدي تو برنام تعريف كردم كه بسته به درخواست كاربر ممكن انديس X و Y تغيير كنه
اما وفتي مي خوام به اون مفدار بدم خطا مي ده اينم كدم



int[,] arry;
arry[0,2]=int.Pass(textbox.Text);

چطور بايد تعريف كنم

سلام . در زبانهایی مثل سی پلاس پلاس و سی شارپ شما در ابتدای تعریف آرایه باید تعداد بعد

های آن و اینکه هر بعد چند خانه حافظه را اشغال میکند (تعداد خانه های آن) را مشخص کنید !!!!

موفق و پیروز باشید !!!!

mehdi3000
چهارشنبه 21 دی 1390, 21:35 عصر
با سلام به دوستان
روش به دست آوردن length برای هر یک از دو بعد مربوط به آرایه دوبعدی چگونه است؟

majid821
چهارشنبه 21 دی 1390, 21:55 عصر
من يك آرايه دوبعدي تو برنام تعريف كردم كه بسته به درخواست كاربر ممكن انديس X و Y تغيير كنه
اما وفتي مي خوام به اون مفدار بدم خطا مي ده اينم كدم


int[,] arry;
arry[0,2]=int.Pass(textbox.Text);


چطور بايد تعريف كنم

دوست عزیز شما توی دستوراتتون فقط یه متغیر تعریف کردید ولی اون رو نساختید!! باید اول با دستور new اون رو ایجاد کنید بعد مقداردهی کنید

majid821
چهارشنبه 21 دی 1390, 22:10 عصر
نوع دیگه ای از متغیرهای آرایه ای هستند به نام jugged array.این نوع آرایه تعداد سطرهای مشخصی داره ولی میتونین برای هر سطر تعداد ستونهای مختلف براش تعریف کنین.مثال

int[][] a=new int[5][]; 1
for(int i=0;i<5;i++) 2
a[i]=new int[i+1]; 3

تو این مثال سطر اول آرایه دارای 1 ستون, سطر دوم 2 ستون, سطر سوم 3 ستون و ... هستن
میتونین تعداد فیلدها رو برای هر ستون از کاربر بگیرید

majid821
چهارشنبه 21 دی 1390, 22:18 عصر
با سلام به دوستان
روش به دست آوردن length برای هر یک از دو بعد مربوط به آرایه دوبعدی چگونه است؟

مهدی جان برای آرایه های معمولی چون طول تمام ابعاد باهم برابرند فقط طول کل آرایه رو میتونی بدست بیاری با متد Length
ولی برای آرایه های jugged array که توضیحش رو بالا دادم میتونی دستور زیر رو استفاده کنی
a[i].length
این دستور تعداد ستونهای سطر iام رو برمیگردونه

majidrezaei2007
پنج شنبه 22 دی 1390, 03:27 صبح
شما تعریف آرایه رو به این صورت در قسمت class برنامه تعریف کنید که به صورت global باشه
int[,] array;
سپس تو برنامه و جایی که سطر و سطون ها رو از کاربر میگیرین آرایه رو با عناصر جدید ایجاد کنید به این شکل :
array = new int[row,col];

امیدوارم منظورتون همین باشه