Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void buduj(INT rozmiar)
- {
- INT i;
- FOR (i=rozmiar; i>1; i--)
- {
- INT zamiana=0;
- INT j=0;
- FOR (j=i/2; j>0; j--)
- {
- IF (2*j==rozmiar || 2*j==rozmiar+1) //jeden potomek
- {
- {
- INT ktory=porownaj(tablica[2*j], tablica[j]);
- IF (ktory==1)
- {
- zamien(2*j, j);
- zamiana=1;
- }
- }
- }
- ELSE IF (2*j<rozmiar)
- {
- INT ktory=porownaj(tablica[2*j], tablica[j]);
- IF (ktory<2) //lewy syn wiekszy, teraz z prawym
- {
- ktory=porownaj(tablica[2*j], tablica[2*j+1]);
- IF (ktory<2) //lewy >=
- {
- zamien(2*j, j);
- zamiana=1;
- }
- ELSE IF (ktory==2) //prawy wiekszy
- {
- zamien(2*j+1, j);
- zamiana=1;
- }
- }
- ELSE IF (ktory==2) //lewy mniejszy, a moze prawy?
- {
- ktory=porownaj(tablica[2*j+1], tablica[j]);
- IF (ktory==1)
- {
- zamien(2*j+1, j);
- zamiana=1;
- }
- }
- }
- }
- i+=zamiana;
- IF (zamiana==0)
- i=0;
- }
- FOR(i=1; i<rozmiar+1; i++)
- {
- printf("%llu+%llu/%llu ",tablica[i]->calkowita,tablica[i]->licznik,tablica[i]->mianownik);
- }
- printf("\n");
- //wpisanie poprawnej wartosci
- STRUCT liczba *nowy;
- nowy=malloc (SIZEOF(STRUCT liczba));
- nowy->licznik=0;
- nowy->mianownik=0;
- nowy->calkowita=0;
- posortowane[rozmiar]=tablica[1];
- zamien(1,rozmiar);
- tablica[rozmiar]=nowy;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement