Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
dalmacija-more-ja-i- ti Forumaš(ica)
Pridružen/a: 09. 02. 2016. (13:37:47) Postovi: (10)16
Spol:
|
Postano: 23:23 sri, 17. 2. 2016 Naslov: |
|
|
:yellowhello: Moze li mi netko dati ideju kako rijesiti ovaj zadatak iz popravnog kolokvija 2012./2013.
Napisite funkciju int sort1(int n, int a[], int b[]); koja prima polje cijelih brojeva a, duljine n. Funkcija treba u polje b spremiti sve brojeve koji se pojavljuju u polju a, tako da polje b bude u silaznom poretku i da se svaki broj u b pojavljuje tocno jednom, tj. nema ponavljanja onih brojeva koji se vise puta pojavljuju u polju a. Izlazna vrijednost funkcije je broj elemenata u tako dobivenom polju b. Pretpostavljamo da je polje b dovoljno dugacko.
Hvala :zlatnizub:
[size=9][color=#999999]Added after 30 minutes:[/color][/size]
Ovo je moj kod pa nek netko vidi jel to valja :neznam: :sadbye:
int sort1(int n,int a[],int b[])
{
int i,j,k,l;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(k=0;k<n;k++)
b[k]=a[k];
for(l=0;l<n;l++)
{
if(b[l]==b[l+1])
continue;
if(l<n)
{
while(l+1<n)
{
b[l]=b[l+1];
++l;
}
--n;
}
}
return n;
} :sadbye: :sadbye: :sadbye: :sadbye: :bigcry: :bigcry:
Moze li mi netko dati ideju kako rijesiti ovaj zadatak iz popravnog kolokvija 2012./2013.
Napisite funkciju int sort1(int n, int a[], int b[]); koja prima polje cijelih brojeva a, duljine n. Funkcija treba u polje b spremiti sve brojeve koji se pojavljuju u polju a, tako da polje b bude u silaznom poretku i da se svaki broj u b pojavljuje tocno jednom, tj. nema ponavljanja onih brojeva koji se vise puta pojavljuju u polju a. Izlazna vrijednost funkcije je broj elemenata u tako dobivenom polju b. Pretpostavljamo da je polje b dovoljno dugacko.
Hvala
Added after 30 minutes:
Ovo je moj kod pa nek netko vidi jel to valja
int sort1(int n,int a[],int b[])
{
int i,j,k,l;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(k=0;k<n;k++)
b[k]=a[k];
for(l=0;l<n;l++)
{
if(b[l]==b[l+1])
continue;
if(l<n)
{
while(l+1<n)
{
b[l]=b[l+1];
++l;
}
–n;
}
}
return n;
}
|
|
[Vrh] |
|
luka_m Forumaš(ica)
Pridružen/a: 07. 10. 2012. (14:09:25) Postovi: (62)16
Lokacija: Zagreb
|
|
[Vrh] |
|
mdoko Forumaš(ica)
Pridružen/a: 30. 11. 2002. (22:17:12) Postovi: (71A)16
Spol:
Lokacija: Heriot-Watt University, Edinburgh
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 15:00 čet, 18. 2. 2016 Naslov: |
|
|
Prilozeni kod ne citam jer nije citljiv, no evo skice rjesenja bez mijenjanja niza [tt]a[/tt], na nacin koji nije optimalan ali je jednostavan za razumijeti i napisati:
[code:1]m = min(a) /* for petlja */
b[0] = m
k = 1
ponavljaj dok ide
mm = min(x u a takav da je x > m) /* opet for petlja */
ako je mm nadjen
m = mm
b[k++] = m
inace
kraj[/code:1]
Provjera je li drugi [tt]min[/tt] uspio moze se obaviti preko flag varijable ([tt]nadjen = 0|1[/tt] <=> nije|je nadjen) ili se moze naci najveci element niza [tt]a[/tt] (kad se trazi prvi [tt]min[/tt]) i onda jednostavno "ponavljaj dok ide" postaje "ponavljaj dok je m < max(a)".
mdoko je u pravu da ako ne pise da izmjena niza nije dozvoljena, onda ga se smije mijenjati. No, ovdje je rijec o ucenju i pripremi za kolokvij na kojem se ovakav ili slican zadatak moze pojaviti s takvom zabranom, pa smatram da je korisno razmotriti i rjesenje koje ne mijenja [tt]a[/tt].
Prilozeni kod ne citam jer nije citljiv, no evo skice rjesenja bez mijenjanja niza a, na nacin koji nije optimalan ali je jednostavan za razumijeti i napisati:
Kod: | m = min(a) /* for petlja */
b[0] = m
k = 1
ponavljaj dok ide
mm = min(x u a takav da je x > m) /* opet for petlja */
ako je mm nadjen
m = mm
b[k++] = m
inace
kraj |
Provjera je li drugi min uspio moze se obaviti preko flag varijable (nadjen = 0|1 ⇔ nije|je nadjen) ili se moze naci najveci element niza a (kad se trazi prvi min) i onda jednostavno "ponavljaj dok ide" postaje "ponavljaj dok je m < max(a)".
mdoko je u pravu da ako ne pise da izmjena niza nije dozvoljena, onda ga se smije mijenjati. No, ovdje je rijec o ucenju i pripremi za kolokvij na kojem se ovakav ili slican zadatak moze pojaviti s takvom zabranom, pa smatram da je korisno razmotriti i rjesenje koje ne mijenja a.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
|
|
[Vrh] |
|
dalmacija-more-ja-i- ti Forumaš(ica)
Pridružen/a: 09. 02. 2016. (13:37:47) Postovi: (10)16
Spol:
|
Postano: 16:57 čet, 18. 2. 2016 Naslov: |
|
|
[code:1]
int sort1(int n,int a[],int b[])
{
int i,j,k,l;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(k=0;k<n;k++)
b[k]=a[k];
for(l=0;l<n;l++)
{
if(b[l]==b[l+1])
continue;
if(l<n)
{
while(l+1<n)
{
b[l]=b[l+1];
++l;
}
--n;
}
}
return n;
}
[/code:1]
Evo citljivog koda. Mozete li mi sad reci je li ovo tocno?
I hvala na odgovorima :thankyou2:
[size=9][color=#999999]Added after 58 minutes:[/color][/size]
E da, moze jos i ovaj zadatak iz istog kolokvija? :wink: :wink:
Napisite funkciju koja prima prirodni broj n i niz realnih brojeva a, tipa double, duljine 2n. Funkcija treba Hornerovim algoritmom izracunati i vratiti vrijednost polinoma
a[1]·x^(n−1) +(a[2] + a[3])·x^(n−2)
+(a[4] +···+ a[7])·x^(n−3)
+··· +(a[2n−2] +···+ a[2n−1 −1])·x
+a[2n−1] +···+ a[2n −1]
u tocki x = a[0].
Kod: |
int sort1(int n,int a[],int b[])
{
int i,j,k,l;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]<a[j])
{
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(k=0;k<n;k++)
b[k]=a[k];
for(l=0;l<n;l++)
{
if(b[l]==b[l+1])
continue;
if(l<n)
{
while(l+1<n)
{
b[l]=b[l+1];
++l;
}
--n;
}
}
return n;
}
|
Evo citljivog koda. Mozete li mi sad reci je li ovo tocno?
I hvala na odgovorima
Added after 58 minutes:
E da, moze jos i ovaj zadatak iz istog kolokvija?
Napisite funkciju koja prima prirodni broj n i niz realnih brojeva a, tipa double, duljine 2n. Funkcija treba Hornerovim algoritmom izracunati i vratiti vrijednost polinoma
a[1]·x^(n−1) +(a[2] + a[3])·x^(n−2)
+(a[4] +···+ a[7])·x^(n−3)
+··· +(a[2n−2] +···+ a[2n−1 −1])·x
+a[2n−1] +···+ a[2n −1]
u tocki x = a[0].
|
|
[Vrh] |
|
vsego Site Admin
Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3560)16
Spol:
Lokacija: /sbin/init
|
Postano: 18:07 čet, 18. 2. 2016 Naslov: |
|
|
[quote="dalmacija-more-ja-i-ti"]Evo citljivog koda. Mozete li mi sad reci je li ovo tocno?[/quote]
Nije. Zato i radite na racunalu da mozete isprobati. Ja sam bezveze ulupao niz s ponavljanjima i dobio da ne radi. U mom primjeru je niz
[tt]{17, 19, 17, 13, 17, 11, 17, 23}[/tt]
dao
[tt]{19, 17, 17, 17, 17, 13, 11}[/tt].
Primijeti da je nestao broj 23 koji u originalnom nizu uopce nije dupliciran.
[quote="dalmacija-more-ja-i-ti"]Napisite funkciju koja prima prirodni broj n i niz realnih brojeva a, tipa double, duljine 2n. Funkcija treba Hornerovim algoritmom izracunati i vratiti vrijednost polinoma
a[1]·x^(n−1) +(a[2] + a[3])·x^(n−2)
+(a[4] +···+ a[7])·x^(n−3)
+··· +(a[2n−2] +···+ a[2n−1 −1])·x
+a[2n−1] +···+ a[2n −1]
u tocki x = a[0].[/quote]
U skripti je Hornerov algoritam dosta opsirno raspisan. Znamo da je [tex]x = a_0[/tex] i da su koeficijenti polinoma [tex]b_k = \sum_{i=2^k}^{2^{k+1}-1} a_i[/tex]. Dalje ide prema skripti.
Stvar se moze sloziti elegantnije od koristenja mojih [tt]b[i][/tt]-jeva, ali i ovo je dobar pocetak.
dalmacija-more-ja-i-ti (napisa): | Evo citljivog koda. Mozete li mi sad reci je li ovo tocno? |
Nije. Zato i radite na racunalu da mozete isprobati. Ja sam bezveze ulupao niz s ponavljanjima i dobio da ne radi. U mom primjeru je niz
{17, 19, 17, 13, 17, 11, 17, 23}
dao
{19, 17, 17, 17, 17, 13, 11}.
Primijeti da je nestao broj 23 koji u originalnom nizu uopce nije dupliciran.
dalmacija-more-ja-i-ti (napisa): | Napisite funkciju koja prima prirodni broj n i niz realnih brojeva a, tipa double, duljine 2n. Funkcija treba Hornerovim algoritmom izracunati i vratiti vrijednost polinoma
a[1]·x^(n−1) +(a[2] + a[3])·x^(n−2)
+(a[4] +···+ a[7])·x^(n−3)
+··· +(a[2n−2] +···+ a[2n−1 −1])·x
+a[2n−1] +···+ a[2n −1]
u tocki x = a[0]. |
U skripti je Hornerov algoritam dosta opsirno raspisan. Znamo da je [tex]x = a_0[/tex] i da su koeficijenti polinoma [tex]b_k = \sum_{i=2^k}^{2^{k+1}-1} a_i[/tex]. Dalje ide prema skripti.
Stvar se moze sloziti elegantnije od koristenja mojih b[i]-jeva, ali i ovo je dobar pocetak.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
|
|
[Vrh] |
|
|