Prošlogodišnji kolokvij
Select messages from
# through # FAQ
[/[Print]\]
Idite na 1, 2  Sljedeće  :| |:
Forum@DeGiorgi -> Osnove algoritama

#1: Prošlogodišnji kolokvij Autor/ica: lost_soul PostPostano: 23:13 ned, 4. 11. 2012
    —
Imam dva pitanja vezana uz prošlogodišnji kolokvij:
1. U prvom zadatku, pod c) treba zapisati binarni "decimalni" broj kao razlomak. Da li se to radi obrnutim postupkom od onog opisanog u skripti (razlomak smo pretvarali u binarni decimalni) ili nekako drugačije?

2. U trećoj grupi sedmi zadatak glasi:
Citat:
Napišite program koji učitava cijele brojeve sve dok se ne učita nula.
Program treba ispisati najmanji parni i najveći neparni od učitanih brojeva
(osim nule). Ako nije učitan niti jedan parni ili neparni broj, treba ispisati
poruku o tome.

Imam problem jer ne znam kako dobiti najmanji parni. Dobro mi ispisuje za najveći neparni i slučajeve kad nisu učitani ni neparni ni parni pa čak i za neke slučajeve najmanjeg parnog. No uvijek se nađe neki primjer kad ne ispisuje dobro. Npr. za ulaz: 1 8 11 4 13 16 8 10 7 85 0, ispisuje: 1 i 85. Ovdje je i moj kod:
Kod:
n=input()
brp=0
brn=0
mip=n
mxn=0
while(n!=0):
    if(n%2==0):
        brp=brp+1
        if(n<mip): mip=n
    else:
        brn=brn+1
        if(n>mxn): mxn=n
    n=input()
if(brp==0): print "Nije ucitan niti jedan paran broj!", mxn
elif(brn==0): print mip, "Nije ucitan niti jedan neparan broj!"
else:print mip, mxn


Znam da je vjerojatno problem u inicijalizaciji varijable ili tom dijelu programa, ali ne znam kako promijeniti Confused

#2: Re: Prošlogodišnji kolokvij Autor/ica: vinkoLokacija: PMF-MO 214 PostPostano: 23:42 ned, 4. 11. 2012
    —
lost_soul (napisa):
Imam dva pitanja vezana uz prošlogodišnji kolokvij:
1. U prvom zadatku, pod c) treba zapisati binarni "decimalni" broj kao razlomak. Da li se to radi obrnutim postupkom od onog opisanog u skripti (razlomak smo pretvarali u binarni decimalni) ili nekako drugačije?

Pa isto kao s normalnim brojevima. Npr. prva grupa: (101.1101)_2 =
1*2^2 + 1*2^0 prije točke, a iza nje 1*2^-1 + 1*2^-2 + 1*2^-4, ili vam je lakše razumijeti da ćete ovo iza decimalne točke gledati kao normalni binarni broj (1101)_2 pa to podijeliti sa 2^4.

lost_soul (napisa):
2. U trećoj grupi sedmi zadatak glasi:
Citat:
Napišite program koji učitava cijele brojeve sve dok se ne učita nula.
Program treba ispisati najmanji parni i najveći neparni od učitanih brojeva
(osim nule). Ako nije učitan niti jedan parni ili neparni broj, treba ispisati
poruku o tome.

Imam problem jer ne znam kako dobiti najmanji parni. Dobro mi ispisuje za najveći neparni i slučajeve kad nisu učitani ni neparni ni parni pa čak i za neke slučajeve najmanjeg parnog. No uvijek se nađe neki primjer kad ne ispisuje dobro. Npr. za ulaz: 1 8 11 4 13 16 8 10 7 85 0, ispisuje: 1 i 85. Ovdje je i moj kod:
Kod:
n=input()
brp=0
brn=0
mip=n
mxn=0
while(n!=0):
    if(n%2==0):
        brp=brp+1
        if(n<mip): mip=n
    else:
        brn=brn+1
        if(n>mxn): mxn=n
    n=input()
if(brp==0): print "Nije ucitan niti jedan paran broj!", mxn
elif(brn==0): print mip, "Nije ucitan niti jedan neparan broj!"
else:print mip, mxn


Znam da je vjerojatno problem u inicijalizaciji varijable ili tom dijelu programa, ali ne znam kako promijeniti Confused

Pa imate više grešaka, za poečtak, niste dobro inicijalizirali varijable za najmanju i najveću, a i ispis na kraju ne pokriva sve moguće slučajeve, ostalo je manje-više OK. Ja bih to napisao ovako:
Kod:
n=input()
brp=0
brn=0
while(n!=0):
    if(n%2==0):
        brp=brp+1
        if(brp==1 or n<mip): mip=n
    else:
        brn=brn+1
        if(brn==1 or n>mxn): mxn=n
    n=input()
if(brp==0): print "Nije ucitan niti jedan paran broj!"
else: print "Najmanji paran je ", mip
if(brn==0): print "Nije ucitan niti jedan neparan broj!"
else: print "Najveci neparni je ", mxn

#3: Re: Prošlogodišnji kolokvij Autor/ica: goransta PostPostano: 12:30 pon, 5. 11. 2012
    —
[quote="vinko"]
lost_soul (napisa):
Imam dva pitanja vezana uz prošlogodišnji kolokvij:
1. U prvom zadatku, pod c) treba zapisati binarni "decimalni" broj kao razlomak. Da li se to radi obrnutim postupkom od onog opisanog u skripti (razlomak smo pretvarali u binarni decimalni) ili nekako drugačije?

Pa isto kao s normalnim brojevima. Npr. prva grupa: (101.1101)_2 =
1*2^2 + 1*2^0 prije točke, a iza nje 1*2^-1 + 1*2^-2 + 1*2^-4, ili vam je lakše razumijeti da ćete ovo iza decimalne točke gledati kao normalni binarni broj (1101)_2 pa to podijeliti sa 2^4.

Da li to znači da je rješenje tog zadatka 80/13 u bazi 10 za jednu grupu odnosno 96/11 u bazi 10 za drugu grupu?? Ili sam ja to nešto krivo izračunao?

Hvala.

#4: Re: Prošlogodišnji kolokvij Autor/ica: vinkoLokacija: PMF-MO 214 PostPostano: 14:53 pon, 5. 11. 2012
    —
[quote="goransta"]
vinko (napisa):
lost_soul (napisa):
Imam dva pitanja vezana uz prošlogodišnji kolokvij:
1. U prvom zadatku, pod c) treba zapisati binarni "decimalni" broj kao razlomak. Da li se to radi obrnutim postupkom od onog opisanog u skripti (razlomak smo pretvarali u binarni decimalni) ili nekako drugačije?

Pa isto kao s normalnim brojevima. Npr. prva grupa: (101.1101)_2 =
1*2^2 + 1*2^0 prije točke, a iza nje 1*2^-1 + 1*2^-2 + 1*2^-4, ili vam je lakše razumijeti da ćete ovo iza decimalne točke gledati kao normalni binarni broj (1101)_2 pa to podijeliti sa 2^4.

Da li to znači da je rješenje tog zadatka 80/13 u bazi 10 za jednu grupu odnosno 96/11 u bazi 10 za drugu grupu?? Ili sam ja to nešto krivo izračunao?

Hvala.

Ne. Pa ono prije decimalne točke je 5, a iza 13/16, znači ukupno bi bilo 93/16.

#5:  Autor/ica: Spectre PostPostano: 20:51 uto, 13. 11. 2012
    —
Može pomoć oko 7. zadatka iz prve grupe prošlogodišnjeg kolokvija?

Napišite program koji učitava realne brojeve sve dok se ne učita nula. Program treba ispisati najmanji pozitivni i najveći negativni od učitanih brojeva. Ako nije učitan niti jedan pozitivni ili negativni broj, treba ispisati poruku o tome.

Moje rješenje je:
Kod:
učitaj x
poz <- 999999999999
neg <- -999999999999
ako je x>0 onda
  poz <- x
ako je x<0 onda
  neg <- x

dok je x!=0 radi
  ako je (x>0) i (x<poz) onda
    poz <- x
  ako je (x<0) i (x>neg) onda
    neg <- x
  učitaj x

ako je poz=999999999999 onda
  ispiši "Nije učitan niti jedan pozitivan broj."
inače
  ispiši "Najmanji učitani pozitivni broj je poz."

ako je neg=-999999999999 onda
  ispiši "Nije učitan niti jedan negativan broj."
inače
  ispiši "Najveći učitani negativni broj je neg."


Problem je, očito, u inicijalizaciji varijabli poz (najmanji pozitivini) i neg (najveći negativni). Kako bi se ovaj zadatak mogao riješiti na elegantniji način, no bez dodavanja dodatnih provjera u glavnoj petlji?

#6:  Autor/ica: krcko PostPostano: 21:38 uto, 13. 11. 2012
    —
Inicijaliziras neg i poz na nulu. U petlji radis ovo:
Kod:
ako je x>0 onda
   ako je poz=0 ili x<poz onda poz<-x
inace
   ako je neg=0 ili x>neg onda neg<-x

Na kraju ti je poz=0 ako nije bilo pozitivnih, a neg=0 ako nije bilo negativnih.

#7:  Autor/ica: Spectre PostPostano: 21:43 uto, 13. 11. 2012
    —
Jednostavno, uz dodatnu provjeru prilikom svakog ulaska u petlju. OK, hvala. Smile

#8:  Autor/ica: lost_soul PostPostano: 18:37 sri, 14. 11. 2012
    —
Nije zadatak od prošle godine, nego iz 2010/2011, ali da ne otvaram novu temu:
Citat:
4. Napišite program koji učitava prirodan broj n i ispisuje znamenke od n u sustavu s bazom 5. Opišite rad programa za ulaz n = 190.


Zanima me da li je dobro rješenje ako nam program za ulaz 190 ispisuje redom 0 3 2 1 (znači od zadnje prema prvoj znamenki) ili bi trebao ispisivati 1 2 3 0, kako i je stvaran zapis?

#9:  Autor/ica: Principessa PostPostano: 20:47 sri, 14. 11. 2012
    —
8 zadatak iz 4 grupe
Napi·site program koji u·citava dva prirodna broja m, n te ispisuje
najmanji prost broj koji dijeli m i n. Ako takav broj ne postoji, program treba
ispisati 1.

kako bi glasilo riješenje tog zadatka? da li prvi dio zadatka ide euklidovim algoritmom a drugim rastavom na proste faktore?
nemogu dobit da mi program ispisuje 1 broj, ili ispisuje sve proste faktore ili ide u beskonačno. molim pomozite Smile

#10:  Autor/ica: Spectre PostPostano: 9:24 čet, 15. 11. 2012
    —
Probaj prvo Euklidov algoritam pa potom rastav na proste faktore, no u njega ubaci neki kôd kojim će rastav (i ispis) prestati kada se nađe prvi (najmanji) prosti faktor.

Npr.

Kod:

ako je m=1 onda
  ispiši "1"
inače
  d <- 2
  prvi <- 0
  dok je prvi=0 radi
    ako je m mod d = 0 onda
       ispiši "Traženi prost broj je d."
       prvi <- prvi + 1
    d <- d + 1
  ako je (prvi=0) onda
  ispiši "1"


Napomena: Euklidov algoritam postavi m kao NZD, stoga je u rastavu na proste faktore (iz skripte) potrebno promijeniti n u m.

#11:  Autor/ica: lost_soul PostPostano: 11:52 čet, 15. 11. 2012
    —
Zanima me u 7. zadatku iz d grupe, kolokvij 2010/2011:
Citat:
Napišite program koji učitava prirodan broj n i ispisuje sve
djelitelje od n koji su kvadrati. Ako ne postoji niti jedan takav djelitelj,
treba ispisati poruku o tome.


Da li treba ispisivati i 1 ili ne?

#12:  Autor/ica: Spectre PostPostano: 12:02 čet, 15. 11. 2012
    —
1 je siguno djelitelj od n, a također vrijedi . Tako da sam prilično siguran kako je odgovor - da. Wink

#13:  Autor/ica: lost_soul PostPostano: 12:21 čet, 15. 11. 2012
    —
Da, znam da je Very Happy
Znači onda bi dobro ispisivalo i za npr. učitan broj 13, ako ispisuje 1?
Tj. u kojem bi onda slučaju trebalo ispisivati poruku da ne postoji takav djelitelj?

#14:  Autor/ica: Spectre PostPostano: 12:30 čet, 15. 11. 2012
    —
Možda se radilo o previdu ili trik pitanju pa su studenti morali shvatiti da uvijek moraju ispisati 1. Confused

Jer, po mom shvaćanju ovog zadatka, ne postoji slučaj kada ne postoji takav djelitelj.

#15:  Autor/ica: Principessa PostPostano: 13:43 čet, 15. 11. 2012
    —
jesam tako s euklidom mučio me ovaj drugi dio zadatka kad trazim najmanjeg prostog, ali je profeson na konzultacijama to lijepo objasnio Smile


Spectre (napisa):
Probaj prvo Euklidov algoritam pa potom rastav na proste faktore, no u njega ubaci neki kôd kojim će rastav (i ispis) prestati kada se nađe prvi (najmanji) prosti faktor.

Npr.

Kod:

ako je m=1 onda
  ispiši "1"
inače
  d <- 2
  prvi <- 0
  dok je prvi=0 radi
    ako je m mod d = 0 onda
       ispiši "Traženi prost broj je d."
       prvi <- prvi + 1
    d <- d + 1
  ako je (prvi=0) onda
  ispiši "1"


Napomena: Euklidov algoritam postavi m kao NZD, stoga je u rastavu na proste faktore (iz skripte) potrebno promijeniti n u m.

#16:  Autor/ica: Spectre PostPostano: 13:52 čet, 15. 11. 2012
    —
Sjećaš li se možda njegovog rješenja? Ako je bitno različito od mog? Smile

#17:  Autor/ica: lost_soul PostPostano: 14:27 čet, 15. 11. 2012
    —
Spectre (napisa):
Možda se radilo o previdu ili trik pitanju pa su studenti morali shvatiti da uvijek moraju ispisati 1. Confused

Jer, po mom shvaćanju ovog zadatka, ne postoji slučaj kada ne postoji takav djelitelj.


Da, tak sam i ja shvatila.. A dobro, za takve stvari se može pitati asistenta ili profesora na kolokviju..
Nego imam još jedno pitanje vezano uz 4. zadatak:
Citat:
4. Napišite program koji učitava prirodan broj n i ispisuje znamenke od n u sustavu s bazom 5. Opišite rad programa za ulaz n = 190.


Da li je uredu ako ispisuje 0 3 2 1 ili treba ispisivati baš točno od prve znamenke, znači 1 2 3 0? Confused

#18:  Autor/ica: sys_ PostPostano: 15:23 čet, 15. 11. 2012
    —
imam pitanje što se tiče pisanja programa, da li je sljedeće napisano isto:
(evo ispravljeno, greške kod pisanja, hvala na primjedbi)
1. :
Kod:
učitaj n
s← 0
za i = 1,...,n radi
   učitaj k
   ako je (k mod 2) = 0 onda
       s <-- s+k
ispiši s


2:
Kod:
učitaj n
s← 0
za i = 1,...,n radi
   učitaj k
   ako je (k mod 2) = 0 onda s<-- s+k
ispiši s


Zadnja promjena: sys_; 15:36 čet, 15. 11. 2012; ukupno mijenjano 3 put/a.

#19:  Autor/ica: Spectre PostPostano: 15:26 čet, 15. 11. 2012
    —
Koji je tekst zadatka? Učitaj n, pa potom učitaj n brojeva te ispiši zbroj parnih?

P.S. Za pisanje kôda koristi Code taggove, tj. na početak kôda napiši [ code ], a na kraj kôda stavi [ /code ]. Naravno, bez razmaka unutar [zagrada].

#20:  Autor/ica: sys_ PostPostano: 15:30 čet, 15. 11. 2012
    —
da to je taj zadatak, nije mi bitan sam tekst zadatka...uzela sam bezveze taj primjer...zanima me je li isto ako nakon onda nastavim pisat u istom redu ili moram onako u novi i to "označit" Ehm?



Forum@DeGiorgi -> Osnove algoritama


output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.

Idite na 1, 2  Sljedeće  :| |:
Stranica 1 / 2.

Powered by phpBB © 2001,2002 phpBB Group
Theme created by Vjacheslav Trushkin