PDA

View Full Version : محاسبه سایز یک آرایه



rasool1110
پنج شنبه 03 دی 1388, 22:34 عصر
با سلام به همه دوستان
راستش من یه سوال داشتم:
ما می خایم یه تعریف آرایه با سینتکس پاسکال رو از یه فایل بخونیم و سایز کل اونرو محاسبه کنیم با این شرطها :
اول حداکثر ابعاد آرایه 4 تاست یعنی از یک تا 4 بعدی
هر آرایه میتونه از جنس یه آرایه تعریف شده از قبل باشه یا از جنس یک متغیر معتبر در پاسکال
مثلا :
a=array[1..4,2..5,3..6,-5..-1] of array[-5..0,2..6] of array[0..8] of integer;
دوستان اگهمیتونن منو راهنمایی کنند
ممنون

mortezamsp
پنج شنبه 03 دی 1388, 23:38 عصر
خوب عبارت a= aray[2...4,1..5,6..7] رو میشه با پردازش رشته ای به آرایه تبدیلش کرد.
مثلا اینجا رشته "int a=aray[2...5,1...4,-1...-5]"رو به آرایه تبدیل کردم (البته با خطای بالا مثلا عدد منفی و چندرقمی رو حساب نکردم)فایل اینجاست :

ولی شما بگید این of که بین آرایه ها میاد یعنی چی؟

rasool1110
یک شنبه 06 دی 1388, 09:05 صبح
خوب عبارت a= aray[2...4,1..5,6..7] رو میشه با پردازش رشته ای به آرایه تبدیلش کرد.
مثلا اینجا رشته "int a=aray[2...5,1...4,-1...-5]"رو به آرایه تبدیل کردم (البته با خطای بالا مثلا عدد منفی و چندرقمی رو حساب نکردم)فایل اینجاست :

ولی شما بگید این of که بین آرایه ها میاد یعنی چی؟
با سلام
کلمه of به معنای اینه که مثلا آرایه اول خودش از جنس یک آرایه دیگه و اون آرایه خودش از جنس یک آرایه ی دیگه هست که اون آرایه خودش از جنس integer هست. حالا ما به ترتیب سایز آرایه اول رو باید بدست بیاریم،سایز اون دو آرایه دیگه روهم بدست بیاریم و در سایز integer که دو بایت هست ضرب کنیم. با این کار سایز کل آرایه بدست میاد.
مشکل من در محاسبه سایز آرایه هست که طبق برنامه خواسته شده از من حداکثر ده آرایه ی 4 بعدی در یک خط تعریف میشه، بعبارت دیگه در یک خط از تعریف متغیر ما میتونیم حداکثر 9 آرایه و یک متغیر integer که آرایه ها از جنس اون هستن رو شامل بشه.
به نظر شما چطور میشه آرایه رو پردازش کرد ، ابعاد اون رو بدست آورد ، به نظر خودم باید یک counterگذاشت و سایز هر آرایه رو محاسبه کرد و در counterضرب کرد .
نظر شما چیه ؟

mortezamsp
یک شنبه 06 دی 1388, 10:12 صبح
نظر شما چیه ؟
نظر من رو که دیدی ! تو همون برنامه هه ، متغیر boad تعداد ابعاد رو داشت و در هربار اجرای حلقه مقدار en-sn+1 طول اون بعد رو نشون میداد . پس باید یه متغیر size رو تعریف کنی و در آخر هر حلقه مقدار en-sn+1 رو بهش اظافه کنی درنهایت در اندازه بایت هم ضربش کن میشه سایز کل ارایه .