Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.91 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void kopiec_BUDUJ(int *tab, int roz);
  5. void kopiec_PRZYWR(int *tab,int i, int n);
  6. void kopiec_wypelnij( int *tab, int roz);
  7. void kopiec_WSTAW(int *tab, int wartosc);
  8. void kopiec_WYSWIETL(int *tab, int roz);
  9. int LEFT(int i);
  10. int RIGHT(int i);
  11. int PARENT(int i);
  12.  
  13. int main()
  14. {
  15.     int rozmiar;
  16.     int*A;
  17.     char akcja;
  18.    
  19.     // TWORZENIE TABLICY
  20.     printf("Podaj rozmiar tablicy: ");
  21.     fflush(stdin);
  22.     scanf("%d", &rozmiar);
  23.     A=(int* )malloc(sizeof(int)*rozmiar);
  24.    
  25.     //ROZPOCZECIE AKCJI
  26.     while(1)
  27.     {
  28.     printf("Co chcesz zrobic?\n b - BUDUJ KOPIERC \n w - WYPELNIJ TABLICE \n s - WYSWIETL KOPIEC \n");
  29.     fflush(stdin);
  30.     scanf("%c", &akcja);
  31.     switch(akcja)
  32.     {
  33.    
  34.         case 'b':
  35.             kopiec_BUDUJ(A, rozmiar);
  36.             break;
  37.            
  38.         case 'w':
  39.             kopiec_wypelnij(A, rozmiar);
  40.             break;
  41.  
  42.         case 's':
  43.             kopiec_WYSWIETL(A, rozmiar);
  44.             break;
  45.         case 'q':
  46.             return;
  47.     }
  48.     }
  49.  
  50.     return 0;
  51. }
  52.  
  53. void kopiec_wypelnij(int*tab, int roz)
  54. {
  55.     int i;
  56.     for(i=0; i<roz; i++)
  57.         {
  58.             printf("\n Podaj wartosc dla elementu: ");
  59.             fflush(stdin);
  60.             scanf("%d", &tab[i]);
  61.         }
  62.  
  63. }
  64.  
  65. void kopiec_WYSWIETL(int *tab, int roz)
  66. {
  67.     int i;
  68.     for(i=0;i<roz;i++)
  69.     {
  70.         printf("%d ", tab[i]);
  71.     }
  72. }
  73. int PARENT(int i)
  74. {
  75.     return (i-1)/2;
  76. }
  77.  
  78. int RIGHT(int i)
  79. {
  80.     return 2*i +2;
  81. }
  82.  
  83. int LEFT(int i)
  84. {
  85.     return 2*i+1;
  86. }
  87.  
  88. void kopiec_PRZYWR(int *tab, int i, int n)
  89. {
  90.     int l=LEFT(i);
  91.     int r=RIGHT(i);
  92.     int najwiekszy;
  93.     int temp;
  94.     if(l < n && tab[l]>tab[i])
  95.     {
  96.         najwiekszy=l;
  97.     }
  98.     else
  99.     {
  100.         najwiekszy=i;
  101.     }
  102.     if(r < n && tab[r] > tab[najwiekszy])
  103.     {
  104.         najwiekszy=r;
  105.     }
  106.     if(najwiekszy!=i)
  107.     {
  108.         temp = tab[i];
  109.         tab[i]=tab[najwiekszy];
  110.         tab[najwiekszy]=temp;
  111.  
  112.         kopiec_PRZYWR(tab, najwiekszy, n);
  113.     }
  114. }  
  115.  
  116. void kopiec_BUDUJ(int *tab, int roz)
  117. {
  118.     int n = roz;
  119.     int i;
  120.     for(i = n/2; i>=0; i--)
  121.     {
  122.         kopiec_PRZYWR(tab, i, n);
  123.     }
  124. }
  125.  
  126. void kopiec_WSTAW(int *tab, int wartosc)
  127. {
  128.    
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement