Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. // uloha-4-1.c -- Tyzden 4 - Uloha 1
  2. // Tomas Hodor, 17.10.2016 16:13:02
  3.  
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <stdlib.h>
  7.  
  8. // vlozi meno a hodnotu do prioritnej fronty
  9.  
  10. typedef struct zoznam{
  11. char meno[100];
  12. int heap;
  13. }zoznam;
  14.  
  15. zoznam prvok[10000];
  16. int velkost = 0;
  17.  
  18. void vloz(char *meno, int hodnota)
  19. {
  20. zoznam novy;
  21. novy.heap = hodnota;
  22. strcpy(novy.meno,meno);
  23.  
  24. int i = velkost++;
  25.  
  26. while(i &&(novy.heap > prvok[(i-1)/2].heap)){
  27. prvok[i].heap = prvok[(i-1)/2].heap;
  28. strcpy(prvok[i].meno,prvok[(i-1)/2].meno);
  29. i = (i-1)/2;
  30. }
  31. prvok[i] = novy;
  32.  
  33.  
  34. }
  35.  
  36. /// vrati meno, ktore bolo doteraz vlozene s najvyssou hodnotou a odstrani ho z prioritnej fronty
  37. void getmax(int pocet){
  38. int lavy = pocet * 2 + 1;
  39. int pravy = pocet * 2 + 2;
  40. zoznam pomoc;
  41. int velky;
  42.  
  43.  
  44. if ((lavy <= velkost) && (prvok[lavy].heap > prvok[pocet].heap)) {
  45. velky = lavy;
  46.  
  47. }
  48. else {
  49. velky = pocet;
  50.  
  51. }
  52. if ((pravy <= velkost) && (prvok[pravy].heap > prvok[pocet].heap)) {
  53. velky = pravy;
  54.  
  55. }
  56. if(velky != pocet){
  57.  
  58. pomoc = prvok[pocet];
  59. prvok[pocet] = prvok[velky];
  60. prvok[velky] = pomoc;
  61.  
  62. getmax(velky);
  63. }
  64. }
  65. char *vyber_najvyssie()
  66. {
  67. char *max_meno;
  68. max_meno = (char*)malloc(100*sizeof(char));
  69. while (velkost < 1){
  70. strcpy(max_meno,"");
  71. return max_meno;
  72. }
  73. strcpy(max_meno,prvok[0].meno);
  74.  
  75. velkost--;
  76. prvok[0].heap = prvok[velkost].heap;
  77. strcpy(prvok[0].meno,prvok[velkost].meno);
  78.  
  79.  
  80. getmax(0);
  81. return max_meno;
  82.  
  83. }
  84.  
  85.  
  86. int main()
  87. {
  88. // testuje zo vstupu
  89. char buf[100];
  90. int x;
  91.  
  92. while (scanf("%s", buf) > 0)
  93. {
  94. if (!strcmp(buf, "vyber"))
  95. printf("%s\n", vyber_najvyssie());
  96. else
  97. {
  98. scanf("%s %d", buf, &x);
  99. vloz(buf, x);
  100. }
  101. }
  102.  
  103. return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement