Advertisement
Guest User

Untitled

a guest
Dec 21st, 2014
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int maxsize = 5;
  7. int currsize = 0;
  8. int maxsizemin = 5;
  9. int currsizemin = 0;
  10.  
  11. struct element {
  12. int waga;
  13. int numer;
  14. };
  15.  
  16. void double_sizemax (element *tab[]) {
  17. int j = ::maxsize;
  18. element *old_tab = *tab;
  19. ::maxsize += 5;
  20. *tab = new element [::maxsize];
  21. for (int i = 0; i < j; i++) {
  22. (*tab)[i] = old_tab[i];
  23. }
  24. }
  25.  
  26. void double_sizemin (element *tab[]) {
  27. int j = ::maxsizemin;
  28. element *old_tab = *tab;
  29. ::maxsizemin += 5;
  30. *tab = new element [::maxsizemin];
  31. for (int i = 0; i < j; i++) {
  32. (*tab)[i] = old_tab[i];
  33. }
  34. }
  35.  
  36. void wyswietl (element min[], element max[]) {
  37. cout << "----------------" << endl;
  38. for (int i = 0; i < ::currsize; i++)
  39. cout << max[i].waga << " ";
  40. cout << endl;
  41. for (int i = 0; i < ::currsizemin; i++)
  42. cout << min[i].waga << " ";
  43. cout << endl;
  44. cout << "----------------" << endl;
  45. }
  46.  
  47. void push_max(int numer, int waga, element **ptrmax) {
  48. if (::currsize == ::maxsize)
  49. double_sizemax(ptrmax);
  50. element *max = *ptrmax;
  51. int i = ::currsize;
  52. max[i].waga = waga;
  53. max[i].numer = numer;
  54. int j = (::currsize - 1) / 2;
  55. for (; i > 0;) {
  56. if (waga <= max[j].waga)
  57. break;
  58. swap(max[i], max[j]);
  59. i = j;
  60. j = (i - 1) / 2;
  61. }
  62. ::currsize++;
  63. }
  64.  
  65. void push_min(int numer, int waga, element **ptrmin) {
  66. if (::currsizemin == ::maxsizemin) {
  67. double_sizemin(ptrmin);
  68. }
  69. element *min = *ptrmin;
  70.  
  71. int i = ::currsizemin;
  72. min[i].waga = waga;
  73. min[i].numer = numer;
  74. int j = (::currsizemin - 1) / 2;
  75. for (; i > 0;) {
  76. if (waga >= min[j].waga)
  77. break;
  78. swap(min[i], min[j]);
  79. i = j;
  80. j = (i - 1) / 2;
  81. }
  82. ::currsizemin++;
  83. }
  84.  
  85. void pop_max (element max[]) {
  86. ::currsize--;
  87. max[0] = max[::currsize];
  88. for (int j = 0, i = 0; j < ::currsize; i = j, j = (i * 2) + 1) {
  89. if (max[j + 1].waga > max[j].waga && j + 1 < ::currsize)
  90. j++;
  91. if (max[j].waga > max[i].waga)
  92. swap(max[j], max[i]);
  93. else
  94. break;
  95. }
  96. }
  97.  
  98. void pop_min (element min[]) {
  99. ::currsizemin--;
  100. min[0] = min[::currsize];
  101. for (int j = 0, i = 0; j < ::currsizemin; i = j, j = (i * 2) + 1) {
  102. if (min[j + 1].waga < min[j].waga && j + 1 < ::currsizemin)
  103. j++;
  104. if (min[j].waga < min[i].waga)
  105. swap(min[j], min[i]);
  106. else
  107. break;
  108. }
  109. }
  110.  
  111. int main () {
  112. element *max = new element [5];
  113. element *min = new element [5];
  114. for (int i = 0; i < 10; i++) {
  115. push_max(i, i, &max);
  116. push_min(i, i, &min);
  117. wyswietl(min, max);
  118. }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement