PDA

View Full Version : مشکل در تابع بازگشتی



behzad74
جمعه 13 آذر 1394, 17:17 عصر
سلام
توی این تابع که جستجوی دودویی هست توی قسمتی که عنصر وسط آرایه (mid) با جستجوی سرچ شده مقایسه میشه ارور میده
این هم کد برنامه


int binsearch(int ar[],int l,int h,int skey)
{
int mid;

if(l>h) return -1;
mid=(l+h)/2;
if(skey<ar[mid])
return binsearch(ar,l,mid-1,skey);
else if(skey>ar[mid])
return binsearch(ar,mid+1,h,skey);
else
return mid;
}

در این قسمت skey<ar[mid] ارور می ده و میگهCannot Apply Indexing with[] to an expression of type 'int'

مشکل کجاست اساتید برنامه نویس؟

ژیار رحیمی
جمعه 13 آذر 1394, 17:36 عصر
int binsearch(int ar[],int l,int h,int skey)
{
int mid;

if(l>h) return -1;
mid=(l+h)/2;
if(skey==ar[mid]) return ++mid; //مکان عنصر در آرایه
if(skey<ar[mid])
return binsearch(ar,l,mid-1,skey);
else if(skey>ar[mid])
return binsearch(ar,mid+1,h,skey);

}

behzad74
جمعه 13 آذر 1394, 19:12 عصر
int binsearch(int ar[],int l,int h,int skey)
{
int mid;

if(l>h) return -1;
mid=(l+h)/2;
if(skey==ar[mid]) return ++mid; //مکان عنصر در آرایه
if(skey<ar[mid])
return binsearch(ar,l,mid-1,skey);
else if(skey>ar[mid])
return binsearch(ar,mid+1,h,skey);

}


تشکر از پاسختون ولی شما فقط نحوه نوشتن شرط رو عوض کردید
ویژوال استودیو میگه که نمیشه در اندیس یک آرایه یک عدد با نوع int قرار داد

Mahmoud.Afrad
شنبه 14 آذر 1394, 00:42 صبح
یکی از پارامترها رو به صورت int ar[] تعریف کردی که اشتباست. باید به صورت int[] ar تعریف کنی.