Jutrzejsze kolokwium zbliża się wielkimi krokami. Napotkałem mały problem. Przerobiłem większość przykładów z dziel i zwyc. jednak ten mnie totalnie zagiął a wydawał się taki prosty.
Program ma zliczać ile razy dana liczba wystąpiła w podanej tablicy, wykorzystując metodę dziel i zwyciężaj.
Niby wszystko ładnie i przy pewnych przykładach idzie super jednak w przypadku jak poniżej program wywala "5", a przecież dwójka powtórzyła się 4 razy. Co z tym zrobić?
c++:
#include <iostream>
#include <cstdlib>
using namespace std;
int tab[10]={2,2,3,2,2,7,8,6,5,4};
int liczba=0; //ile razy liczba wsytąpiła(wiem, że oznaczenia są pomieszane)
int ile_dziel(int start, int stop, int ile)
{
if (start==stop) return tab[start];
int p=(start+stop)/2; //wyznaczanie indeksu połówki
int i1=ile_dziel(start,p, ile);
int i2=ile_dziel(p+1,stop, ile);
if (i1==ile) liczba++;
if (i2==ile) liczba++;
return liczba;
}
int main()
{
int ile; //jaką liczbę program ma szukać
cout << ile_dziel(0,4,2);
system("pause");
return 0;
}