PDA

View Full Version : ارایهای با طول متغییر



lord_viper
پنج شنبه 13 دی 1386, 08:35 صبح
با سلام
چطور میشه یه ارایه تعریف کرد که دارای طول متعیر باشه یعنی ابتداش رو بدیم ولی انتهاش متغییر باشه مثل a:array[0..max]of integer

rasool_brn
پنج شنبه 13 دی 1386, 09:40 صبح
MyArray:array of Integer;مقدار این نوع آرایه رو می تونی در زمان اجرا توسط تابع زیر تعیین کنی:
SetLength(MyArray,10);توسط عبارت زیر هم می تونی تعداد عناصر آرایه رو گسترش بدی:
Copy(MyArray,20);

lord_viper
پنج شنبه 13 دی 1386, 11:58 صبح
خب یعنی میتونیم اول اطلاعاتمون که مقدارش متغییره رو بشموریم وبریزیم داخل ارایه بعد طولشو اینجوری نسبت بدیم؟

A.Nemati
پنج شنبه 13 دی 1386, 13:55 عصر
به این نوع آرایه‌ها می‌گن آرایه دینامیک


خب یعنی میتونیم اول اطلاعاتمون که مقدارش متغییره رو بشموریم وبریزیم داخل ارایه بعد طولشو اینجوری نسبت بدیم؟
نه! اول باید طول آرایه‌ات رو مشخص کنی، بعد داخلش مقدار بریزی. مثلا اگه آرایه‌ات خونه شماره 3 نداشته باشه که نمی‌تونی داخلش مقدار بریزی.
اینم یک کد نمونه که مقادیر بزرگتر از 100 رو از یک لیست داخل آرایه دینامیک می‌ریزه


var
myIntArr: array of integer;
i, j: integer;
...
j:= 0;
for i:= 0 to List.Count - 1 do
if StrToInt(List[i]) > 100 then
begin
inc(j)
SetLength(myIntArr, j);
myIntArr[j - 1]:= StrToInt(List[i]);
end;

lord_viper
جمعه 14 دی 1386, 22:14 عصر
خب حالا توی ارایمون مقادیر رو وارد کردیم اگه بخوایم از وسطای ارایه یکی از مقادیر رو حذف کنیم چطور باید عمل کنیم؟(نه اینکه 0 بدیم )

rasool_brn
جمعه 14 دی 1386, 23:28 عصر
باید خانه های آرایه رو از محل حذف عنصر تا انتهای آرایه یکی به سمت ابتدای آرایه شیفت بدین.

vcldeveloper
دوشنبه 17 دی 1386, 14:29 عصر
میتونین بگین برای این کار از چه تابعی باید استفاده کنم؟
تابع آماده ایی که این کار را براتون انجام بده نداریم. باید خودتون پیاده سازیش کنید.