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. |
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 |
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? |
lost_soul (napisa): | ||||
2. U trećoj grupi sedmi zadatak glasi:
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:
Znam da je vjerojatno problem u inicijalizaciji varijable ili tom dijelu programa, ali ne znam kako promijeniti |
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 |
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? |
vinko (napisa): | ||
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. |
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." |
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 |
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. |
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" |
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. |
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.
Napomena: Euklidov algoritam postavi m kao NZD, stoga je u rastavu na proste faktore (iz skripte) potrebno promijeniti n u m. |
Spectre (napisa): |
Možda se radilo o previdu ili trik pitanju pa su studenti morali shvatiti da uvijek moraju ispisati 1.
Jer, po mom shvaćanju ovog zadatka, ne postoji slučaj kada ne postoji takav djelitelj. |
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. |
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 |
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 |
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 |
lost_soul (napisa): | ||
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? |
Spectre (napisa): |
Možda se radilo o previdu ili trik pitanju pa su studenti morali shvatiti da uvijek moraju ispisati 1.
Jer, po mom shvaćanju ovog zadatka, ne postoji slučaj kada ne postoji takav djelitelj. |
Spectre (napisa): |
Sjećaš li se možda njegovog rješenja? Ako je bitno različito od mog? |
sys_ (napisa): |
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" |
Kod: |
n=1
mini=-1 while (n!=0): n=input() if n%3!=0: mini=n break while (n!=0): n=input() if n%3!=0 and n<mini: mini=n if mini==-1: print("svi brojevi su djeljivi s 3") else: print mini |
Kod: |
n=input() while (n!=0 and n%3==0): n=input() if (n!=0): mini=n |
Kod: |
učitaj n br=0 za 1,..n/2 radi d<--i*i ako je (n mod d = 0) i (d>1)onda ispiši i br<--br+1 ako je br =0 onda ispiši 'nema traženog djelitelja' |
Spectre (napisa): |
Sjećaš li se možda njegovog rješenja? Ako je bitno različito od mog? |
Kod: |
m=input()
n=input() a=[input() for i in range(m)] b=[input() for i in range(n)] a=[0 for i in range(m,m+n)] b=[0 for i in range(n,m+n)] c=[0 for i in range(m+n)] for i in range(m+n): for j in range(i): c[i]=c[i]+a[j]*b[i-j] for i in range (m+n): print c[i] |
Kod: |
a=[0]*(m+n)
for i in range(m): a[i]=input() |
Kod: |
a=[input() for i in range(m)]
a=a+[0]*n |
vsego (napisa): |
Cemu sluzi produljivanje ta dva niza? Nije li lakse da i i j "trce" po a, odnosno b, a umjesto c[i] se racuna c[i+j]? |
Kod: |
m=input()
a=[input() for i in range(m+1)] n=input() b=[input() for i in range(n+1)] c=[0]*(m+n+1) for i in range(m+1): for j in range(n+1): c[i+j]=c[i+j]+a[i]*b[j] print c |
Kod: |
ucitaj n
za i=1,...,n radi ucitaj a[i] tranz=1 za i=1,..,n radi: za j=1,..,n radi: ako je r[i][j]==1 za k=1,..,n radi ako je r[j][i]==1 i r[i][k]==0 onda tranz=0 ako je (tranz) onda ispiši "relacija je tranzitivna" inače ispiši"relacija nije tranzitivna" |
Spoiler : |
output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.