Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // uloha-4-1.c -- Tyzden 4 - Uloha 1
- // Tomas Hodor, 17.10.2016 16:13:02
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- // vlozi meno a hodnotu do prioritnej fronty
- typedef struct zoznam{
- char meno[100];
- int heap;
- }zoznam;
- zoznam prvok[10000];
- int velkost = 0;
- void vloz(char *meno, int hodnota)
- {
- zoznam novy;
- novy.heap = hodnota;
- strcpy(novy.meno,meno);
- int i = velkost++;
- while(i &&(novy.heap > prvok[(i-1)/2].heap)){
- prvok[i].heap = prvok[(i-1)/2].heap;
- strcpy(prvok[i].meno,prvok[(i-1)/2].meno);
- i = (i-1)/2;
- }
- prvok[i] = novy;
- }
- /// vrati meno, ktore bolo doteraz vlozene s najvyssou hodnotou a odstrani ho z prioritnej fronty
- void getmax(int pocet){
- int lavy = pocet * 2 + 1;
- int pravy = pocet * 2 + 2;
- zoznam pomoc;
- int velky;
- if ((lavy <= velkost) && (prvok[lavy].heap > prvok[pocet].heap)) {
- velky = lavy;
- }
- else {
- velky = pocet;
- }
- if ((pravy <= velkost) && (prvok[pravy].heap > prvok[pocet].heap)) {
- velky = pravy;
- }
- if(velky != pocet){
- pomoc = prvok[pocet];
- prvok[pocet] = prvok[velky];
- prvok[velky] = pomoc;
- getmax(velky);
- }
- }
- char *vyber_najvyssie()
- {
- char *max_meno;
- max_meno = (char*)malloc(100*sizeof(char));
- while (velkost < 1){
- strcpy(max_meno,"");
- return max_meno;
- }
- strcpy(max_meno,prvok[0].meno);
- velkost--;
- prvok[0].heap = prvok[velkost].heap;
- strcpy(prvok[0].meno,prvok[velkost].meno);
- getmax(0);
- return max_meno;
- }
- int main()
- {
- // testuje zo vstupu
- char buf[100];
- int x;
- while (scanf("%s", buf) > 0)
- {
- if (!strcmp(buf, "vyber"))
- printf("%s\n", vyber_najvyssie());
- else
- {
- scanf("%s %d", buf, &x);
- vloz(buf, x);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement