Witam podpowiedział by mi ktoś jak przekształcić funkcję wyszukiwanie binarne aby ZWRACAŁA ona wszystkie indexy wystąpienia danego elementu w posortowanej tablicy??A oto kod.Napisałem po mojemu więc może zawierać błędy:p
#include<stdio.h>
void sortuj(int tab[],int n);
int szukanie_binarne(int tab[],int n,int x);
int main(void)
{
int tab[40];
int n,i,x;
puts("Podaj ilosc elementow w tablicy\n");
scanf("%d",&n);
puts("Podaj elementy tablicy");
for(i=0;i<n;i++)
{
scanf("%d",&tab[i]);
}
sortuj(tab,n);
for(i=0;i<n;i++)
{
printf("%d",tab[i]);
}
puts("Podaj jakiego elementu szukasz\n");
scanf("%d",&x);
printf("Index szukanego elementu to %d\n",szukanie_binarne(tab,n,x));
return 0;
}
void sortuj(int tab[],int n)
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(tab[i]>tab[j])
{
temp=tab[j];
tab[j]=tab[i];
tab[i]=temp;
}
}
}
int szukanie_binarne(int tab[],int n,int x)
{
int left,right,mid;
left=0;
right=n-1;
while(left<=right)
{
mid=(left+right)/2;
if(tab[mid]==x)
{
return mid;
}
else
if(x<tab[mid])
right=mid-1;
else
left=mid+1;
}
return -1;
}