# Native Code > برنامه نویسی با C > برنامه نویسی با زبان C و ++C > سوال: حذف عضوی از آرایه

## hafez1

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

----------


## مسعود اقدسی فام

باید مقادیر بعدی آرایه رو یه عنصر به چپ شیفت بدید. نمی‌شه یه عنضر از آرایه رو به معنی فیزیکی از حافظه حذف کرد. باید مقدارش رو با جابجا کردن عناصر بعدی پاک کنید.

----------


## fati63

شیفت عناصر رو هم  با  دستور انتساب میتونید انجام بدی

----------


## H_G_G_I

delete دقیقا معدل new هست . شما هر چند تا که new استفاده کردی باید دقیقا همون قدر delete استفاده کنی .
اگه منظورت ابنه که ارایت اشاره گره که با همون دیلیت یکی رو پاک می کنی خب .

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


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

----------


## aidinMC

فرض کن شما یه آرایه 5 عضوی داری و میخوای عضو 2 این آرایه رو حذف کنی میتونی با روش زیر این کارو انجام بدی

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

a[i] = NULL;

----------


## مصطفی ساتکی

توی 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);

برای اطلاعات بیشتر این پست را مطالعه کنید.

----------


## mahnaz.d

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

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

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

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

----------


## amirtork

اگر کاربر هست، و هرکودوم اطلاعاتی به غیر از اسم دارن، که بهتره همشون یک جا باشن، \یشنهاد میکنم به جای استفاده از آرایه، از لیست های پیوندی استفاده کنید.

----------


## chikar

> delete دقیقا معدل new هست . شما هر چند تا که new استفاده کردی باید دقیقا همون قدر delete استفاده کنی .
> اگه منظورت ابنه که ارایت اشاره گره که با همون دیلیت یکی رو پاک می کنی خب .
> 
>     int* pintArrays[8];
>     pintArrays[0] = new int(123);
>     delete pintArrays[0];
> 
> 
> بقیه رو هم که دوستان گفتن.


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

----------


## modirforoosh

به جای آرایه از آرایه نوع لیست استفاده میکنیم .  در این نوع آرایه اعضا به راحتی حذف میشن ( arraylist)


                ArrayList a = new ArrayList();

----------


## mraliAi

این کد ها برای حذف یه ارایه رشته ای در یه ارایه رشته ای دیگس اگه یه مقدارم بدی بهش قبول میکنه  فقط با کمی تغییر میتونی اعداد صحیح تبدیلش کنی 

    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;
    }

----------

