ورود

View Full Version : سوال: سوال در مورد مبحث آرایه ها در ساختمان داده ها



Sina.iRoid
چهارشنبه 19 آذر 1393, 00:46 صبح
سلام.
من در مبحث ساختمان داده ها به مشکلی بر خوردم. سوال به صورت زیر هست:

آرایه دو بعدی به صورت زیر

A[3..10,1..20]

موجود است که در آدرس H حافظه قرار دارد و از نوع Integer می باشد. آدرس عنصر دارای اندیس (6,10) به روش سطری کدام است؟

حل:
(6-3)*20+(10-1+1)=3*20+10=70
پس A[6,10] به روش سطری هفتادمین عنصر است.حال باتوجه به اینکه از نوع Integer می باشد، آدرس عنصر 70ام چنین بدست می آید:


H+(n-1)*2 ==>H+(70-1)*2=H+69*2

اگر امکانش هست یه توضیح مختصر در موردش بدین. اینکه اصلا H چی هست. ممنون.

rahnema1
پنج شنبه 20 آذر 1393, 08:09 صبح
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
3 [F][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][L]
4 [S][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
5 [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
6 [ ][ ][ ][ ][ ][ ][ ][ ][ ] [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
7 [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
8 [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
9 [ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]
10[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]

سلام
آرایه در یک قسمت حافظه ذخیره شده که آدرس شروع آرایه H هست. مثلا H یک عدد مثل 23344554 هست. بنابراین خانه با سطر 3 و ستون 1 که با F علامت گذاشتم ، آدرسش برابر با H هست
اینجا اندازه Integer را برابر با 2 بایت در نظر گرفته در نتیجه هر کدوم از خونه ها 2 بایت اشغال می کنند
چند تا سطر داریم؟ تعداد سطر میشه 1+3-10 یعنی 8 تا
چند تا ستون داریم؟ تعداد ستون میشه 1+1-20 یعنی 20 تا
حالا کل آرایه چقدر جا اشغال می کنه؟ با احتساب اینکه هر خونه دو بایت جا اشغال می کنه میشه 8*20*2
اگرچه آرایه دو بعدی هست اما این آرایه جوری در حافظه ذخیره میشه که سطرها به ترتیب پشت سر هم قرار می گیرند مثلا وقتی که خانه با سطر 3 و ستون 20 یعنی خانه L در حافظه ذخیره شد به دنبالش خانه با سطر 4 و ستون 1 یعنی خانه S قرار می گیره
آدرس L میشه 2*19+H
آدرس S میشه 2*20+H
حالا خونه ای که ستاره داره که سطر 6 و ستون 10 هست
بالای اون سه تا سطر داریم هر سطر شامل 20 خونه و هر خونه شامل 2 بایت
2*20*3
9 تا خونه هم قبل از خونه مورد نظر قرار داره
2*20*3+2*9
فاکتور بگیریم میشه
2*(9+3*20)
69*2
گفتیم که آدرس خانه اول H هست پس H را با اون جمع می کنیم
H+69*2

H+(tedade_sottonha * (satr-satre_shoroo) + (sotoon - sotoon_shoroo))*Integer_size