W moim programie tworzę klase w której przechowuje 2 wartości- pomiar i krotność. Tworzę tablice obiektów klasy, do której wpisuje dane(pomiar, krotnosc), a potem sortuję dane od najwiekszego do najmniejszego, wypisując obok ich krotności. Do innej tablicy(pomiary) wpisuję po kolei pomiary które chce wyszukać. Zależy mi na tym, żeby za pomocą wyszukiwania binarnego wyszukać dane pomiary i wypisać ich krotność. Program jednak nie działa, a ja nie mam pojęcia co jest nie tak :x. Wklejam fragment kodu odpowiedzialny(a raczej nieodpowiedzialny :f) za wyszukiwanie binarne.
void sortowanie(Klasa Tablic[],int rozmiar)
{
for(int i=0;i<rozmiar-1;i++)
{
for(int j=i+1;j>0;j--)
{
if(Tablic[j].pomiar > Tablic[j-1].pomiar)
{
int h = Tablic[j].pomiar;
Tablic[j].pomiar = Tablic[j-1].pomiar;
Tablic[j-1].pomiar = h;
int c = Tablic[j].krotnosc;
Tablic[j].krotnosc= Tablic[j-1].krotnosc;
Tablic[j-1].krotnosc = c;
}
}
}
}
class Klasa
{
public:
unsigned int pomiar;
unsigned int krotnosc;
};
int szerokosc;
cin >> szerokosc;
tablica[i]=new Klasa[szerokosc];
for(int i=0;i<szerokosc;i++)
{
cout << "Liczba ";
cin>>tablica[i].pomiar;
cout << "Krotnosc ";
cin>>tablica[i].krotnosc;
}
}
unsigned int liczbapomiarow;
cout << "Ile krotnosci sprawdzic? ";
cin >> liczbapomiarow;
unsigned int *pomiary = new unsigned int[liczbapomiarow];
for(unsigned int k=0;k<liczbapomiarow;k++)
{
cout << "Czego krotnosc sprawdzic? ";
cin >> pomiary[k];
}
sortowanie(tablica,szerokosc);
for(int id=szerokosc-1;id>=0;id--)
{
if(tablica[id].krotnosc!=0)
{
cout<<tablica[id].pomiar<<" ";
cout<<tablica[id].krotnosc<<" ";
}
}
cout<<endl;
for(int i=0;i<liczbapomiarow;i++)
{
int low = 0;
int high = dlugosctablicy-1;
int mid=0;
while (low <= high)
{
mid=(low+high) / 2;
if(pomiary[i]==tablica[mid].pomiar)
{
cout<<tablica[mid].krotnosc<<" ";
break;
}
if (pomiary[i] > tablica[mid].pomiar)
{
low=mid+1;
}
else
{
high=mid-1;
}
}
}
W skrócie- chodzi mi to, że gdy wyszukiwanie natrafi na dany pomiar z tablicy "pomiary" i będzie on równy pomiarowi z tablicy "tablica", wypisuje coutem jego krotność. Wpisywanie i sortowanie działa na pewno dobrze, bo tablice posortowaną wyswietla mi dobrze.
Proszę o pomoc i wskazówki, z góry dziękuję :)