View Full Version : سوال در مورد نوشتن تابع و فراخوانی به وسیله مرجع در مورد آرایه ها
  
vahid-p
پنج شنبه 30 آذر 1391, 04:27 صبح
برای نوشتن یک تابع میخوام آرایه ای که به عنوان آرگومان گرفته میشه، کارهایی روش صورت بگیره و روی همون آرایه اعمال بشه. یعنی همون call by refrence
تابعی که میخوام بنویسم مرتب سازی حبابی هست. درست عمل میکنه ولی میخوام آرایه ای که میگیره و نامنظم هست رو به صورت منظم تحویل بده.
چیکار کنم؟
void bubble_sort(int a[],int n)
{
    int i,j,t;
    for(i=0;i<n;i++)
    {
                    for(j=0;j<n;j++)
                    {
                                    if(a[j+1]<a[j])
                                    {
                                              t=a[j];
                                              a[j]=a[j+1];
                                              a[j+1]=t;
                                    }
                    }
    }
   
}
vahid-p
پنج شنبه 30 آذر 1391, 16:29 عصر
کسی نبود راهنمایی کنه؟
H_G_G_I
پنج شنبه 30 آذر 1391, 21:13 عصر
خب شما همین الانم همون کاری که می خواستی رو انجام دادی دیگه !:قهقهه:
خودت نتیجه رو ببین !
درواقع 
bubble_sort(int a[],int n)
یعنی 
bubble_sort(int* a,int n)
mahak006
پنج شنبه 30 آذر 1391, 21:41 عصر
کسی نبود راهنمایی کنه؟
 آرایه ها به صورت پیش فرض call by refrence هستن و نیاز به انجام کار اضافه نداره . این یه چیز عادیه . چون اگه قرار باشه غیر این باشه  هر آرایه ی بزرگ وقتی به یه تابع داده می شه یکی دیگه از روش کپی می شه که هم سرعت کار برنامه میاد پایین و هم حافظه ی بیشتری می خواد .
aidinMC
پنج شنبه 30 آذر 1391, 21:42 عصر
بله همونطور که دوستمون گفت وقتی شما آرایه ای رو بعنوان آرگومان میفرستی آدرس اولین خونه آرایه به تابه ارسال میشه و به همین دلیل تغییرات تو رو خود آرایه اعمال میشه...
aidinMC
پنج شنبه 30 آذر 1391, 21:43 عصر
آرایه ها به صورت پیش فرض call by refrence هستن و نیاز به انجام کر اضافه نداره . این یه چیز عادیه . چون اگه قرار باشه غیر این باشه  هر آرایه ی بزرگ وقتی به یه تابع داده می شه یکی دیگه از روش ک\ی می شه که هم سرعت کار برنامه میاد \ایین و هم حافظه ی بیشتری می خواد .
فک کنم پست همزمان ارسال شد!
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.