Witam mam problem z wykryciem miejsca w który występuje uszkodzenie sterty.
Ma to być program sortujący ułamki zwykłe z użyciem merge sorta i struktur. Z góry dzięki za pomoc.
#include <iostream>
using namespace std;
struct ulamki
{
int licznik;
int mianownik;
double wynik;
};
void merge(ulamki *tablica,int start,int srodek,int koniec)
{
ulamki *tab=new ulamki[(koniec-start)];
int i=start, j=(srodek+1),k=0;
while(i <=srodek && j<=koniec)
{
if(tablica[j].wynik<tablica[i].wynik)
{
tab[k]=tablica[j];
j++;
}
else
{
tab[k]=tablica[i];
i++;
}
k++;
}
if(i<=srodek)
{
while(i<=srodek)
{
tab[k]=tablica[i];
i++;
k++;
}
}
else
{
while(j<=koniec)
{
tab[k]=tablica[j];
j++;
k++;
}
}
for(i=0;i<=(koniec-start);i++)
{
tablica[start+i]=tab[i];
}
delete [] tab;
}
void merge_sort(ulamki *tablica,int start,int koniec)
{
int srodek;
if(start!=koniec)
{
srodek=((start+koniec)/2);
merge_sort(tablica, start, srodek);
merge_sort(tablica, srodek+1, koniec);
merge(tablica, start, srodek, koniec);
}
}
int main()
{
int k;
cin>>k;
ulamki *tablica =new ulamki [k];
for(int i=0;i<k;i++)
{
int licznik;
int mianownik;
char znak;
cin>>licznik>>znak>>mianownik;
tablica[i].licznik=licznik;
tablica[i].mianownik=mianownik;
tablica[i].wynik=((double)licznik/(double)mianownik);
}
merge_sort(tablica,0,k-1);
for(int i=0;i<k;i++)
{
cout<<tablica[i].licznik<<"/"<<tablica[i].mianownik<<endl;
}
delete [] tablica;
return 0;
}