Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

objasnjenje zadatka
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
dalmacija-more-ja-i-
ti

Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 02. 2016. (13:37:47)
Postovi: (10)16
Spol: zombi
Sarma = la pohva - posuda
= 7 - 2

PostPostano: 23:23 sri, 17. 2. 2016    Naslov: Citirajte i odgovorite

: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:
Zuti skakucuci hello 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 Zlatni zub

Added after 30 minutes:

Ovo je moj kod pa nek netko vidi jel to valja Ja to stvarno ne znam Tuzni pa-pa...

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;
} Tuzni pa-pa... Tuzni pa-pa... Tuzni pa-pa... Tuzni pa-pa... Very sad Very sad


[Vrh]
Korisnički profil Pošaljite privatnu poruku
luka_m
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 10. 2012. (14:09:25)
Postovi: (62)16
Sarma = la pohva - posuda
14 = 15 - 1
Lokacija: Zagreb

PostPostano: 10:56 čet, 18. 2. 2016    Naslov: Citirajte i odgovorite

Obično se ulazno polje ostavi nepromijenjeno, pa bi ova for petlja koja kopira mogla doći na početak, i kasnije se ne spominjati polje a.

Za dobiti jedinstvenu listu iz sortirane, algoritam bi mogao biti ovako nešto:
[code:1]
s = 0
za i iz [1, n>:
ako b[i] != b[s]:
++s
b[s] = b[i]
vrati s + 1
[/code:1]
Obično se ulazno polje ostavi nepromijenjeno, pa bi ova for petlja koja kopira mogla doći na početak, i kasnije se ne spominjati polje a.

Za dobiti jedinstvenu listu iz sortirane, algoritam bi mogao biti ovako nešto:
Kod:

s = 0
za i iz [1, n>:
  ako b[i] != b[s]:
    ++s
    b[s] = b[i]
vrati s + 1


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
mdoko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 30. 11. 2002. (22:17:12)
Postovi: (71A)16
Spol: muško
Sarma = la pohva - posuda
199 = 237 - 38
Lokacija: Heriot-Watt University, Edinburgh

PostPostano: 11:16 čet, 18. 2. 2016    Naslov: Citirajte i odgovorite

[quote="luka_m"]Obično se ulazno polje ostavi nepromijenjeno[/quote]

To je dobra programerska praksa, no taj zahtjev nije naveden u zadatku, tako da je najjednostavnije rješenje prvo sortirati [tt]a[/tt], pa onda [tt]a[/tt] kopirati u [tt]b[/tt] uz preskakanje duplikata.
luka_m (napisa):
Obično se ulazno polje ostavi nepromijenjeno


To je dobra programerska praksa, no taj zahtjev nije naveden u zadatku, tako da je najjednostavnije rješenje prvo sortirati a, pa onda a kopirati u b uz preskakanje duplikata.



_________________
Extraordinary claims require extraordinary evidence. – Carl Sagan
[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (355F)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 15:00 čet, 18. 2. 2016    Naslov: Citirajte i odgovorite

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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
dalmacija-more-ja-i-
ti

Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 02. 2016. (13:37:47)
Postovi: (10)16
Spol: zombi
Sarma = la pohva - posuda
= 7 - 2

PostPostano: 16:57 čet, 18. 2. 2016    Naslov: Citirajte i odgovorite

[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 Yet another 'Thank you' sign

Added after 58 minutes:

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].


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (355F)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 18:07 čet, 18. 2. 2016    Naslov: Citirajte i odgovorite

[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.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan