آرایه دندانه دار
آرایه دندانه دار یا jagged array آرایهای چند بعدی است که دارای سطرهای با طول متغیر میباشد. نمونه سادهای از آرایههای چند بعدی، آرایههای مستطیلی است که تعداد ستونهای سطرهای آنها برابر است. اما آرایههای دندانه دار دارای سطرهایی با طول متفاوت میباشند. بنابر این آرایههای دندانه دار را میتوان آرایهای از آرایهها فرض کرد. دستور نوشتن این نوع آرایهها به صورت زیر است :
datatype[][] arrayName;
ابتدا datatype که نوع آرایه است و سپس چهار کروشه باز و بسته و بعد از آن نام آرایه را مینویسیم. مقداردهی به این آرایهها کمی گیج کننده است. به مثال زیر توجه کنید :
int[][] myArrays = new int[3][]; myArrays[0] = new int[3]; myArrays[1] = new int[5]; myArrays[2] = new int[2];
ابتدا با استفاده از کلمه کلیدی new سطرهای آرایه را مشخص میکنیم. بعد از کلمه کلیدی new نوع آرایه و سپس در اولین کروشه باز و بسته تعداد سطرها را مینویسیم. سپس تعداد ستونهای هر سطر را با استفاده از اندیس هر سطر به صورت بالا مشخص میکنیم. سپس بعد از تعریف ستونها به صورت زیر میتوان با استفاده از آکولاد مقادیر هر سطر را مشخص کرد :
int[][] myArrays = new int[3][]; myArrays[0] = new int[3] { 1, 2, 3 }; myArrays[1] = new int[5] { 5, 4, 3, 2, 1 }; myArrays[2] = new int[2] { 11, 22 };
یک روش بهتر برای مقدار دهی آرایههای دندانه دار به صورت زیر است :
int[][] myArrays = new int[3][] { new int[3] { 1, 2, 3 }, new int[5] { 5, 4, 3, 2, 1 }, new int[2] { 11, 22 } };
میتوان طول سطرها را هم مشخص نکرد :
int[][] myArrays = new int[][] { new int[] { 1, 2, 3 }, new int[] { 5, 4, 3, 2, 1 }, new int[] { 11, 22 } };
کد بالا را به صورت سادهتر زیر هم میتوان نوشت :
int[][] myArrays = { new int[] { 1, 2, 3 }, new int[] { 5, 4, 3, 2, 1 }, new int[] { 11, 22 } };
برای دسترسی به مقدار عناصر یک آرایه دندانه دار باید اندیس سطر و ستون آن را در اختیار داشته باشیم :
array[row][column] Console.WriteLine(myArrays[1][2]);
نمیتوان از حلقه foreach برای دسترسی به عناصر آرایه دندانه دار استفاده کرد :
foreach(int array in myArrays) { Console.WriteLine(array); }
اگر از حلقه foreach استفاده کنیم با خطا مواجه میشویم چون عناصر این نوع آرایهها، آرایه هستند نه عدد یا رشته یا… . برای حل این مشکل باید نوع متغیر موقتی (array) را تغییر داده و از حلقه foreach دیگری برای دسترسی به مقادیر استفاده کرد.
foreach(int[] array in myArrays) { foreach(int number in array) { Console.WriteLine(number); } }
همچنین میتوان از یک حلقه for تو در تو به صورت زیر استفاده کرد :
for (int row = 0; row < myArrays.Length; row++) { for (int col = 0; col < myArrays[row].Length; col++) { Console.WriteLine(myArrays[row][col]); } }
در اولین حلقه از خاصیت Length برای به دست آوردن تعداد سطرها (که همان آرایههای یک بعدی هستند) و در دومین حلقه از خاصیت Length برای به دست آوردن عناصر سطر جاری استفاده میشود.
وای خیلی خوبه ساییتون
سلام.وبسایتتون خیلی خوب و مفیده.به کارتون ادامه بدین
سلام.خواستم بابت وبسایت خوبتون
ازتون تشکر کنم و امیدوارم باعث
ایجاد انگیزه براتون بشه
سلام چطوری با for مقدار را از کاربر دریافت کنیم و بعد داخل ارایه دندانه دار ذخیره کنیم ممنون میشم جواب بدین
سلامريال سوالتونو تو بخش پرسش و پاسخ مطرح بفرمایید. لینک زیر:
w3-farsi.com/forum
سلام
از مطالب بسیار مفید شما خیلی ممنونم.
ببخشید من می خواهم به یک آرایه دندانه دار، عنصر اضافه کنم. شبیه اضافه کردن عنصر به یک آرایه یک بعدی که با استفاده از list و سپس add انجام می شود، آیا برای آرایه دندانه دار هم add کاربرد دارد؟
سلام، مرسی
ممنون میشم سوالتونو تو بخش پرسش و پاسخ مطرح بفرمایید تا دوستان راهنماییتون کنن
w3-farsi.com/forum
ممنونم از شما چشم
آرایه رو تعریف کرده بودم اما بدون درج مقدار
در حقیقت از این روش برای تمرین درس قبل که کارنامه دانش آموزان بود خواستم استفاده کنم ولی نتونستم شما می تونید راهنماییم کنید؟
ممنون میشم از این به بعد سوالاتتونو تو بخش پرسش و پاس سایت مطرح بفرمایید
سلام
من از این روش
استفاده کردم و خطا گرفتم شما اینو تست کردین؟
سلام، بله بنده همه کدها رو تست شده گذاشتم تو سایت. شما احتمالا آرایه رو ننوشتین و با خطا مواجه شدین. کد رو باید به صورت زیر بنیوسین