Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
bozidarsevo Forumaš(ica)
Pridružen/a: 17. 09. 2008. (10:15:01) Postovi: (1D1)16
Spol:
Lokacija: Samobor
|
Postano: 16:34 sub, 26. 12. 2009 Naslov: zadatak iz kolokvija, 13.2.2009. 2. zadatak |
|
|
zadatak:
Napissite funkciju SET komplement(SET S) koja prima skup S (implementiran pomocu nesortiranog polja), a vraca
njegov komplement (skup svih elemenata koji nisu u S). Pretpostavite da elementi skupa (tj. tip elementtype) mogu
biti mala slova od 'a' do 'z'. Funkcija treba biti ovisna o implementaciji atp SET. Ako zelite koristiti (nije nuzno)
operacije INSERT, MEMBER, DELETE, EMPTY i MAKE_NULL iz atp SET, morate napisati i njihovu implementaciju.
malo sam sad razmišljao kako bi se mogao rješiti(ali bez ovih fja INSERT, MEMBER, DELETE, EMPTY i MAKE_NULL iz atp SET),ali nikako da mi sine ideja....
zadatak:
Napissite funkciju SET komplement(SET S) koja prima skup S (implementiran pomocu nesortiranog polja), a vraca
njegov komplement (skup svih elemenata koji nisu u S). Pretpostavite da elementi skupa (tj. tip elementtype) mogu
biti mala slova od 'a' do 'z'. Funkcija treba biti ovisna o implementaciji atp SET. Ako zelite koristiti (nije nuzno)
operacije INSERT, MEMBER, DELETE, EMPTY i MAKE_NULL iz atp SET, morate napisati i njihovu implementaciju.
malo sam sad razmišljao kako bi se mogao rješiti(ali bez ovih fja INSERT, MEMBER, DELETE, EMPTY i MAKE_NULL iz atp SET),ali nikako da mi sine ideja....
|
|
[Vrh] |
|
Gino Forumaš(ica)
Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
|
[Vrh] |
|
bozidarsevo Forumaš(ica)
Pridružen/a: 17. 09. 2008. (10:15:01) Postovi: (1D1)16
Spol:
Lokacija: Samobor
|
|
[Vrh] |
|
Gino Forumaš(ica)
Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
Postano: 17:06 sub, 26. 12. 2009 Naslov: |
|
|
pa pise ti da je funkcija bude ovisna o implementaciji koristis neki tmp, tamo spremis, premjestis pointer i freeas ono??
u cemu je problem??
[size=9][color=#999999]Added after 4 minutes:[/color][/size]
aha pomocu polja je....
onda je jos lakse, bas su dobri :D
i izbacivanje je dosta lako... mozes samo zadnjeg prepisat preko onog kojeg trebas izbrisat, i smanjit duljinu, a ako moras izbrisat zadnjeg, samo skratis duljinu
pa pise ti da je funkcija bude ovisna o implementaciji koristis neki tmp, tamo spremis, premjestis pointer i freeas ono??
u cemu je problem??
Added after 4 minutes:
aha pomocu polja je....
onda je jos lakse, bas su dobri
i izbacivanje je dosta lako... mozes samo zadnjeg prepisat preko onog kojeg trebas izbrisat, i smanjit duljinu, a ako moras izbrisat zadnjeg, samo skratis duljinu
_________________ Mario Berljafa
|
|
[Vrh] |
|
bozidarsevo Forumaš(ica)
Pridružen/a: 17. 09. 2008. (10:15:01) Postovi: (1D1)16
Spol:
Lokacija: Samobor
|
|
[Vrh] |
|
Gino Forumaš(ica)
Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
|
[Vrh] |
|
bozidarsevo Forumaš(ica)
Pridružen/a: 17. 09. 2008. (10:15:01) Postovi: (1D1)16
Spol:
Lokacija: Samobor
|
|
[Vrh] |
|
Gino Forumaš(ica)
Pridružen/a: 11. 09. 2008. (10:54:06) Postovi: (370)16
Lokacija: Pula
|
Postano: 17:05 pon, 28. 12. 2009 Naslov: |
|
|
[quote="bozidarsevo"]mislim da ova druga petlja u funkciji komplement nije baš kak treba...tj. nije mi baš jasna...[/quote]
to je dvje razlicite stvari :lol:
al su me potakle na nest malo razmisljanja, s obzirom na
[quote="bozidarsevo"]i skužio onu petlju!! :idea2: [/quote]
sam malo odustao... ali onda i ja :idea2:
i skuzio da sam glup :oops: i da je ono krivo
sad mislim da je ovo stavrno ok, ak mislis iz bilo kakvih razloga da nije, reci, mislim razlike
[code:1]#define MAX 26
#include <stdio.h>
#include <stdlib.h>
typedef char elementtype;
typedef struct {
elementtype polje[MAX];
int last; //pokazuje na zadnjeg
}SET;
SET komplement(SET S){
int i,j=0;
SET C;
for(i=0;i<MAX;i++)
C.polje[i]='a'+i;
C.last=MAX-1;
for(i=0;i<=S.last;i++)
if(S.polje[i]-'a'>C.last){
while(C.polje[j++]!=C.polje[S.polje[i]-'a']);
C.polje[--j]=C.polje[C.last--];
j=0;
}
else
C.polje[S.polje[i]-'a']=C.polje[C.last--];
return C;
}
int main(){
SET S,C;
S.last=11;
S.polje[0]='a';
S.polje[1]='z';
S.polje[2]='g';
S.polje[3]='c';
S.polje[4]='f';
S.polje[5]='r';
S.polje[6]='s';
S.polje[7]='t';
S.polje[8]='e';
S.polje[9]='j';
S.polje[10]='q';
S.polje[11]='p';
C=komplement(S);
int i;
for(i=0;i<=C.last;i++)
printf("%c\t",C.polje[i]);
system("pause");
return 0;
}
[/code:1]
bozidarsevo (napisa): | mislim da ova druga petlja u funkciji komplement nije baš kak treba...tj. nije mi baš jasna... |
to je dvje razlicite stvari
al su me potakle na nest malo razmisljanja, s obzirom na
bozidarsevo (napisa): | i skužio onu petlju!! |
sam malo odustao... ali onda i ja
i skuzio da sam glup i da je ono krivo
sad mislim da je ovo stavrno ok, ak mislis iz bilo kakvih razloga da nije, reci, mislim razlike
Kod: | #define MAX 26
#include <stdio.h>
#include <stdlib.h>
typedef char elementtype;
typedef struct {
elementtype polje[MAX];
int last; //pokazuje na zadnjeg
}SET;
SET komplement(SET S){
int i,j=0;
SET C;
for(i=0;i<MAX;i++)
C.polje[i]='a'+i;
C.last=MAX-1;
for(i=0;i<=S.last;i++)
if(S.polje[i]-'a'>C.last){
while(C.polje[j++]!=C.polje[S.polje[i]-'a']);
C.polje[--j]=C.polje[C.last--];
j=0;
}
else
C.polje[S.polje[i]-'a']=C.polje[C.last--];
return C;
}
int main(){
SET S,C;
S.last=11;
S.polje[0]='a';
S.polje[1]='z';
S.polje[2]='g';
S.polje[3]='c';
S.polje[4]='f';
S.polje[5]='r';
S.polje[6]='s';
S.polje[7]='t';
S.polje[8]='e';
S.polje[9]='j';
S.polje[10]='q';
S.polje[11]='p';
C=komplement(S);
int i;
for(i=0;i<=C.last;i++)
printf("%c\t",C.polje[i]);
system("pause");
return 0;
}
|
_________________ Mario Berljafa
|
|
[Vrh] |
|
|