anamarie (napisa): |
3.zadatak
http://web.math.pmf.unizg.hr/nastava/spa/kolokviji/2012/SPA%20-%202012%20-%20kolokvij1%20-%20zadaci.pdf |
Kod: |
void SetAndSort(List *L, int idprocesa, int prioritet){ position q, p, maks; for(q=LiFirst(*L); q!=LiEnd(*L); q=LiNext(q,*L)) if(LiRetrieve(q,*L).ident==idprocesa){ LiRetrieve(q,*L).prior=prioritet; break;} for(q=LiFirst(*L); q!=LiEnd(*L); q=LiNext(q,*L)){ maks=q; for(p=LiNext(q,*L); p!=LiEnd(*L); p=LiNext(p,*L)){ if(LiRetrieve(p,*L).prior > prioritet) maks=p;} if(maks!=q){ elementtype temp; temp=LiRetrieve(q,*L); LiDelete(q,L); LiInsert(LiRetrieve(maks,*L), q, L); LiInsert(temp, maks, L);} } } |
Shirohige (napisa): | ||
Hvala aangelinaaa ![]()
Ja sam dobio [tex] \omega_1 = 91 [/tex] tj. prvo ignoriraš ovu listu s oznakom [tex] \omega_1 [/tex] i gledaš samo ove ostale s konkretnim vrijednostima. (7, 10, 4, 16, 5) Poredaš ih po veličini: (4, 5, 7, 10, 16) i onda se gradi stablo Huffmanovim algoritmom: Tj. uzmemo dva čvora s najmanjim oznakama (4 i 5) i napravimo stablo tako da su 4 i 5 djeca, a roditelj tj. korijen je zbrog oznaka 4+5=9 sada imamo: 9 7 10 16 / \ 4 5 Opet uzmemo dva najmanja čvora (9 i 7) ... pa nam ostane 16, 10, 16, opet dva najmanja (10 i 16) pa nam ostaje : 26 i 16 i zadnji puta: 42 U zadatku kaže da je minimalni broj operacija 133 pa je [tex] \omega_1 = 91 [/tex]. Jel ide to tako ili ? |
nuclear (napisa): | ||
Iako mi se čini da uzalud tražim pomoć.....
Ovo je moj kod za 2. zadatak, ne mogu doista shvatiti gdje je greška, jer je sitna (ali ne manje bitna ![]() http://web.math.pmf.unizg.hr/nastava/spa/files/zadaci_za_vjezbu_kolokvij1.pdf
|
Kod: |
#define MAXLENGTH 100
typedef int position; typedef struct { int identifikator; int prioritet; char vlasnik[50]; char vrijeme[20]; } proces; typedef proces elementtype; typedef struct { elementtype elements[MAXLENGTH]; int last; } List; |
nuclear (napisa): |
...
Npr. , moja funkcija LiInsert: http://pastebin.com/XmPAzYMD |
Shirohige (napisa): | ||
nemoj mi uzet za zlo, ali mislim da ne smijemo mijenjati implementacije zbog neke funkcije tako da mislim da to nije ok, taj tvoj kod :O ...da još dodam, ne znam u čemu je bio točno problem pošto nisam kopirala s neke stranice, ali ispada da je bilo "nedozvoljenih znakova", dakle ok mi je kod, pardonček ![]() |
Kod: |
for(q=LiFirst(*L); q!=LiEnd(*L); q=LiNext(q,*L))
if(LiRetrieve(q,*L).identifikator==idprocesa){ LiRetrieve(q,*L).prioritet=prioritet; break;} |
Kod: |
LiRetrieve(q,*L).prioritet=prioritet; |
Kod: |
elementtype LiRetrieve(position P, List L) |
Kod: |
elementtype LiRetrieve(position P, List* L) |
Kod: |
elementtype LiRetrieve(position P, List* L) |
Kod: |
elementtype LiRetrieve(position P, List** L) |
Kod: |
void SetAndSort (List* listap, int idprocesa, int prioritet) |
Shirohige (napisa): | ||
Pa piše u skripti da je to jedna od "mogućih" implementacija, nas zanimaju samo funkcije same po sebi, a ne način na koji su implementirane, a ovise i o samom elementtype-u, recimo, ti imaš sljedeći kod:
... |
Shirohige (napisa): | ||
Hvala aangelinaaa ![]()
Ja sam dobio [tex] \omega_1 = 91 [/tex] tj. prvo ignoriraš ovu listu s oznakom [tex] \omega_1 [/tex] i gledaš samo ove ostale s konkretnim vrijednostima. (7, 10, 4, 16, 5) Poredaš ih po veličini: (4, 5, 7, 10, 16) i onda se gradi stablo Huffmanovim algoritmom: Tj. uzmemo dva čvora s najmanjim oznakama (4 i 5) i napravimo stablo tako da su 4 i 5 djeca, a roditelj tj. korijen je zbrog oznaka 4+5=9 sada imamo: 9 7 10 16 / \ 4 5 Opet uzmemo dva najmanja čvora (9 i 7) ... pa nam ostane 16, 10, 16, opet dva najmanja (10 i 16) pa nam ostaje : 26 i 16 i zadnji puta: 42 U zadatku kaže da je minimalni broj operacija 133 pa je [tex] \omega_1 = 91 [/tex]. Jel ide to tako ili ? |
ipeula (napisa): |
133 je ukupan broj operacija, pa onda ima ona formula suma(po Li) pi*wi, i onda pogađas, uzmes recimo w1=1 pa se dobije suma 101 ili tako nesto, i tako uzmimas dalje, recimo 10, pa je suma 129 i onda vidis da je tu negdje blizu, tako to ide, bar koliko sam ja skuzio ![]() |
frutabella (napisa): |
Moze ideja za prvi zadatak iz 2012.?
Kako ubacivati na dno stoga? |
Kod: |
void PushBottom (element x, Stack *S)
{ elementtype y; if(StEmpty(*S)==1) { StPush(x,S); return; } else { y=StTop(S); StPop(S); PushBottom(x,S); StPush(y,S); } return; } |
Kod: |
BTREE jedno (int n)
{ int i; node m, c, d, temp; labeltype l=1; Binary Tree T, TL; m=BiCreate(L,TL,LAMDA, &T); c=BiLeftChild(m, T); BiChangeLabel(l, c, &T); for(i=2; i<n; ++i) { d=BiInsertRightChild(l, c, &T); temp=d; c=temp; } return T; } |
Shirohige (napisa): |
Zamolio bih, ako je moguće, za upload prvog kolokvija. |
output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.