تالار گفتمان مانشت
سوال در مورد آرایه (ساختمان داده) - نسخه‌ی قابل چاپ

سوال در مورد آرایه (ساختمان داده) - negar76 - 15 دى ۱۳۹۶ ۰۳:۵۵ ب.ظ

سلام
کسی میتونه راهنمایی کنه سوال زیر با چه روش و فرمولی به دست میاد

یک آرایه ی سه بعدی با اندازه دلخواه تعریف کنید و برای آن مشخص کنید که اندیس یک عنصر خاص به شکل خطی چند خواهد بود؟

آرایه و عنصری که در نظر میگیریم دلخواهه
حالا اگه بخوایم ذخیره اش کنیم اندیس اون خونه توی حافظه که عنصر مورد نظرمون در اون ذخیره میشه چنده؟
و بر عکسش رو هم باید حساب کنیم
یعنی اگر اندیس اون خونه توی حافظه رو داشته باشیم چه جوری باید i و j و k رو حساب کنیم


RE: سوال در مورد آرایه (ساختمان داده) - AreF95 - 15 دى ۱۳۹۶ ۱۰:۳۷ ب.ظ

تا حالا همچین سوالی ندیده بودم ولی خوب اگه یک آرایه سه بعدی برا خودتون میکشید و اندیس چندتا خونه رو می نوشتید به یه رابطه جالب برخورد میکردید...
فرضا آرایه سه بعدی را با سه صفحه و سه سط و سه ستون در نظر بگیرید مانند :
int[][][] a = new int[3][3][3] ;
حالا به طور مثال a000 یا a001 یا a333 رو مجسم کنید :
۲۷ تا خونه خواهد داشت آرایه ای که تعریف کردیم (خانه های ۰ تا ۲۶) شما بعلاوه یک آنها را در نظر بگیرید یعنی ۱ تا ۲۷ :
خونه ۲۷ --> a333 --> که ۲ + ۷ = ۳ + ۳ + ۳
خونه ۲۶ --> a332 --> که ۲ + ۶ = ۲ + ۳ + ۳
الی آخر ...
از همین سر نخ برا حالت اول استفاده کنید .

در این مثالی که زدم هر صفحه ۹ تا عنصر هر سطر ۳ تا عنصر و هر ستون ۳ تا عنصر داره :
۲۵ مثلا ۹ + ۹ + ۷ که یعنی دو تا صفحه رو پر کرده رفته صفحه سوم عنصر ۷ ، باز ۷ هم میشه ۳ + ۳ + ۱ که یعنی دو تا سطر رو پر کرده رفته سطر سوم ۱ هم که میشه ستون اول
از همین سرنخی که گفتم هم برا حالت دوم استفاده کنید ...