dziura w binarnym wyszukiwaniu liczb

0
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <fstream.h>
# define MAX 20
using namespace std;
int binarne(int poczatek, int koniec,int tab[], int szukany)
{ if(poczatek<=koniec)
{ int srodek = (poczatek +koniec)/2;
if(tab[srodek]==szukany)
return srodek;
if(tab[srodek]>szukany)
return binarne(poczatek,srodek,tab,szukany);
else
return binarne(srodek+1,koniec,tab,szukany);
}
return -1;
}
int main(void)
{
    int tab[MAX];
    int i,j;
    srand((unsigned) time(NULL));
    i=0;
    do{ j=rand()%100;
 if(j%2==0) {tab[i]=j;
    cout<<tab[i]<<" ";
    i++;}}
    while(i<MAX);
    cout<<endl;
    int liczba;
    i=0;
    while(i<MAX) {
                 liczba=tab[i];
                 j=i-1;
                 
    while(j>=0 && tab[j]>liczba) {
              tab[j+1]=tab[j];
              j--;
              }
               tab[j+1]=liczba;
               i++;}
               cout<<endl;
               ofstream plik("j:\\program100procent.txt");
               for(int a=0;a<MAX;a++)
               {       
                       cout<<tab[a]<<" ";
                       plik<<tab[a]<<" ";
                       }
                       plik.close();
int szuk;
cout<<endl<<"podaj liczbe jaka chcesz znalezc ";
 cin>>szuk;
 if(binarne(0,MAX,tab,szuk)==-1)

cout<<"elementu nie ma w tablicy"<< endl;
else
cout<<"element jest w tablicy na pozycji: "<< binarne(0,MAX,tab,szuk)+1<< endl;

cin.ignore();
  getchar();
  return 0;			
}

// Ogólnie to program działa ok tylko przy wyszukiwaniu binarnym gdy podajemy liczbe której nie ma w tablicy program automatycznie się zawiesza , a powinien wyswietic komunikat ze "elementu nie ma w tablivy". Próbowałem już to zmieniac na rózne sposoby , ale problem nadal jest i bardzo prosze o pomoc w tym problemie. Dziekuje

0

nie przeglądałem dokładnie, ale wydaje mi się że wystarczy zmienić odpowiednią linię na:

   if(poczatek<koniec)

1 użytkowników online, w tym zalogowanych: 0, gości: 1