Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.20 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. int parent(int i);
  4. int left(int i);
  5. int right(int i);
  6. void deklaracja_tablicy(int *A,int i);
  7. void kopiec_przywr(int *A,int i);
  8. void kopiec_buduj(int A);
  9. int main()
  10. {
  11. int *A=NULL;
  12. //int A[10]={16,14,10,8,7,9,3,2,3,1};
  13. //printf("%i",parent(9));
  14. int i;
  15. int hs;
  16. int lenghtA;
  17. deklaracja_tablicy(&A,&i);
  18. lenghtA=i;
  19. hs=i;
  20. //printf("%i",&A);
  21. for(i=0;i<lenghtA;i++)
  22. {
  23. //printf("dasdas");
  24. printf("%i",*(A+i));
  25. }
  26.  
  27. system("pause");
  28. }
  29. void deklaracja_tablicy(int *A,int *i)
  30. {
  31. int z;
  32. *i=0;
  33. A=NULL;
  34. while(1)
  35. {
  36. fflush(stdin);
  37. scanf_s("%i",&z);
  38. if(z==0)
  39. break;
  40. (*i)++;
  41. A=realloc(A,*i*sizeof(int));
  42. *(A+(*i)-1)=z;
  43. }
  44. //printf("%i",*A);
  45. }
  46. void kopiec_przywr(int *A,int i, int hs)
  47. {
  48. int l=left(i);
  49. int r=right(i);
  50. int max,temp;
  51. if(l<hs && A[l]>A[i])
  52. max=l;
  53. else max=i;
  54. if(r<hs && A[r]>A[max])
  55. max=r;
  56. if(max!=i)
  57. {
  58. A[i]=temp;
  59. A[i]=A[max];
  60. A[max]=temp;
  61. kopiec_przywr(A,max,hs);
  62. }
  63. }
  64. void kopiec_buduj(int A,int n)
  65. {
  66. int i;
  67. for(i=n/2;i>0;i--)
  68. kopiec_przywr(A,i,n);
  69. }
  70. int parent(int i)
  71. {
  72. return i/2;
  73. }
  74. int left(int i)
  75. {
  76. return 2*i;
  77.  
  78. }
  79. int right(int i)
  80. {
  81. return 2*i+1;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement