Chcę zliczyć metodą dziel i zwyciężaj ilości występowania elementu w tablicy
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int tab[n];
for(int i=0;i<n;++i)
{
cin>>tab[i];
}
int licznik = 0;
int pytanie = 0;
cin>>pytanie;
int poczatek=0;
int koniec =n-1;
int srodek = n/2;
while(poczatek<koniec)
{
srodek= (poczatek + koniec +1)/2;
cout<<"poczatek: "<<poczatek<<"srodek: "<<srodek <<"koniec: "<<koniec<<"licznik : "<<licznik<< endl;
if(tab[srodek] >= pytanie)
{
if(tab[srodek]==pytanie) licznik++;
koniec = srodek-1;
}
else
{
poczatek = srodek;
}
}
cout<<licznik<<endl;
return 0;
}
Jednak dla danych:
5
1 1 2 4 5
1
1
Wypisuje 1 zamiast 2. Wydaje mi się że jest problem z pętlą while, ale nwm co zrobić. Dzięki za pomoc!