PDA

View Full Version : سوال: حذف عضوی از آرایه



hafez1
دوشنبه 13 آذر 1391, 16:52 عصر
چطور می شه یه عضو از ارایه رو حذف کرد؟
با دیلیت یا دستور خاصی داره؟

مسعود اقدسی فام
دوشنبه 13 آذر 1391, 17:52 عصر
باید مقادیر بعدی آرایه رو یه عنصر به چپ شیفت بدید. نمی‌شه یه عنضر از آرایه رو به معنی فیزیکی از حافظه حذف کرد. باید مقدارش رو با جابجا کردن عناصر بعدی پاک کنید.

fati63
دوشنبه 13 آذر 1391, 18:05 عصر
شیفت عناصر رو هم با دستور انتساب میتونید انجام بدی

H_G_G_I
دوشنبه 13 آذر 1391, 18:12 عصر
delete دقیقا معدل new هست . شما هر چند تا که new استفاده کردی باید دقیقا همون قدر delete استفاده کنی .
اگه منظورت ابنه که ارایت اشاره گره که با همون دیلیت یکی رو پاک می کنی خب .

int* pintArrays[8];
pintArrays[0] = new int(123);
delete pintArrays[0];


بقیه رو هم که دوستان گفتن.

aidinMC
دوشنبه 13 آذر 1391, 21:36 عصر
فرض کن شما یه آرایه 5 عضوی داری و میخوای عضو 2 این آرایه رو حذف کنی میتونی با روش زیر این کارو انجام بدی

int i;
for (i = 1 ; i <5 ; i++)
a[i] = a[i+1];

a[i] = NULL;

مصطفی ساتکی
دوشنبه 13 آذر 1391, 22:15 عصر
توی C از ()memmove استفاده کنید.
size_t arrSize = 5;
int arr[5] = {1, 2, 3, 4, 5};

// حذف عنصر سوم
memmove(arr + 2, arr + 3, (arrSize - 3) * sizeof(int));
arrSize--;

و توی C++‎‎‎‎ بهتر بجای آرایه از std::vector استفاده کنید.
std::vector<int> arr;
//حذف عنصر سوم
arr.erase(arr.begin() + 2);

برای اطلاعات بیشتر این پست (http://www.7khatcode.com/2659/%D8%AD%D8%B0%D9%81-%DA%86%D9%86%D8%AF-%D8%B9%D9%86%D8%B5%D8%B1-%D9%BE%D8%B4%D8%AA-%D8%B3%D8%B1-%D9%87%D9%85-%D8%A7%D8%B2-%D8%A2%D8%B1%D8%A7%DB%8C%D9%87)را مطالعه کنید.

mahnaz.d
دوشنبه 07 اردیبهشت 1394, 02:25 صبح
مثلاً یه آرایه داریم که 64 تا عضو ( که به صورت اسم هستن) داره. حالا می خوایم 32 تا از این 16 آرایه رو با انتخالب کار بر حذف کنیم. باید چه طری این کارو کرد؟
مثال:
مریم
زهرا
حسین
علی
شروین
صابر

میگن بین مریم و زهرا یکی زو انتخاب کنید.
بعد بین حسین علی و........

در مرحله ی دوم فرضاً مریم امتخاب شد علی... حالا باز بین اینا ( به انتخاب کاربر) یکی رو انتخاب کنید. در اصل یه کاربر حذف میشه!

خب برنامشو چه جوری باید نوشت؟:متفکر:

amirtork
دوشنبه 07 اردیبهشت 1394, 20:02 عصر
اگر کاربر هست، و هرکودوم اطلاعاتی به غیر از اسم دارن، که بهتره همشون یک جا باشن، \یشنهاد میکنم به جای استفاده از آرایه، از لیست های پیوندی استفاده کنید.

chikar
سه شنبه 08 اردیبهشت 1394, 10:08 صبح
delete دقیقا معدل new هست . شما هر چند تا که new استفاده کردی باید دقیقا همون قدر delete استفاده کنی .
اگه منظورت ابنه که ارایت اشاره گره که با همون دیلیت یکی رو پاک می کنی خب .

int* pintArrays[8];
pintArrays[0] = new int(123);
delete pintArrays[0];


بقیه رو هم که دوستان گفتن.

کد شما، یک عنصر از آرایه رو حذف نمی کنه، بلکه شما آرایه ای از اشاره گر ها ساختید(می شه گفت یک آرایه دو بعدی ساختید!) و با دستور delete یکی از همین آرایه های کامل حذف می شه، نه یک عضو خاص از یک آرایه!!
به نظزم بهترین روش، همون روش هایی که گفته شد، یعنی حذف با جابه جا کردن عناصر و استفاده از وکتور

modirforoosh
چهارشنبه 04 بهمن 1396, 18:24 عصر
به جای آرایه از آرایه نوع لیست استفاده میکنیم . در این نوع آرایه اعضا به راحتی حذف میشن ( arraylist)


ArrayList a = new ArrayList();

mraliAi
چهارشنبه 01 فروردین 1397, 22:49 عصر
این کد ها برای حذف یه ارایه رشته ای در یه ارایه رشته ای دیگس اگه یه مقدارم بدی بهش قبول میکنه فقط با کمی تغییر میتونی اعداد صحیح تبدیلش کنی

public static void main(String[] args)
{
String numberarr[]= {"3","1","2"};
String numberarr1[]= {"5","5","3","1","2"};


for(String a:(cutinArr(numberarr1,numberarr)))
{
System.out.println(a);
}
}
public static int isPosition(String arr[], String Pos)
{
for(int i= 0; i< arr.length ; i++)
if(arr[i] == Pos)
return i;


return -1;
}
public static String[] cutinArr(String arr[], String Str[])
{


int len = arr.length-1,count=0;


for(String item:Str)
if(isPosition(arr,item)!= -1)
{
arr[isPosition(arr,item)] = arr[len];
arr[len] =null;
len--;
count++;
}
String arrTemp[] = new String[arr.length-count];
for(int i= 0; i<arrTemp.length;i++)
{
arrTemp[i] = arr[i];
}
return arrTemp;
}