1.) Minimum i maksimum niza
niz=[0]*10 min=0 max=0 #unos podataka u niz for i in range (0,10): niz[i]=int(input("unesite %d. broj: " %(i+1))) #početna vrijednost minimuma i maksimuma min=max=niz[0] #razmislite zašto ovdje piše (1,10) a ne (0,10) #obratite pažlju na ispis, print("Niz:",end=" ") for i in range (1,10): if min>niz[i]: min=niz[i] elif max<niz[i]: max=niz[i] for i in range (0,10): print(niz[i],end=" ") print() print("Najveći broj u nizu:",max) print("Najmanji broj u nizu:",min) #Pokušajte rješiti koristeći while petlju
2.) pretvaranje iz dekadskog u binarni sustav
niz=[0]*8 u=int(input("unesite broj: ")) #provjera unosa if u>255 or u<0: print("Pogrešan unos") else: #preračunavanje iz dekadskog u binarni sustav i=7 while True: if u==0: break else: niz[i]=u%2 u=u//2 i=i-1 #ispis podataka for i in range(0,8): print(niz[i],end="") #razmislite zašto nije moguće pretvoriti 256 u binarni oblik #izmijenite kod tako da pretvara brojeve između 0 i 1023 u binarne #koristite for petlju umjesto while za pretvaranje u binarni sustav #Napredno odrediti potrebnu veličinu niza prema unesenom broju #napišite algoritam za pretvaranje iz dekadskog u oktalni sustav
3.) Pretvaranje iz binarnog u dekadski
''' koristimo samo input() iz razloga što unosimo znakovni niz binarne brojeve nije praktično unositi u brojevne nizove pokušajte unjeti binarni broj u brojevni niz kao i do sada npr. niz=[0]*8 pa će vam biti jasnije ''' bin=input("Unesite binarni broj: ") #fumkcija len() nam vraća veličinu niza #u prijevodu broj znakova koje smo unjeli velicina=len(bin)-1 potencija=0 broj=0 for i in range (velicina,-1,-1): #funkcija int() pretvara znakove u brojeve #drugi način je: #if bin[i]=="1" sada smo broj 1 pretvorili u znak "1"#na if int(bin[i])==1: broj=broj+2**potencija potencija=potencija+1 print("broj u dekadskom iznosi:",broj) #napišite algoritam pomoću while petlje #osmislite svoj algoritam
4.) Provjera palindroma
rijec=input("unesite riječ: ") duzina=len(rijec) provjera=1 i=0 j=duzina-1 while True: if rijec[i]!=rijec[j]: provjera=0 break elif i==j or i>j: break i=i+1 j=j-1 if provjera==1: print("Riječ je palindrom") else: print("Riječ nije palindrom") #napišite algoritam koristeći for petlju
5.) Računanje površine pravokutnika
niz=[0]*12 #označava redni broj pravokutnika br=1 #Unos stranica pravokutnika for i in range (0,12,3): print("Unesite stranice %d. pravokutnika"%br) niz[i]=int(input("Unesite stranicu a: ")) niz[i+1]=int(input("Unesite stranicu b: ")) niz[i+2]=niz[i]*niz[i+1] #razmislite o tome čemu služi ovaj uvjet if i<9: print("----------------------------------------") br=br+1 #početna vrijednost maksimuma max=niz[2] #razmislite o brojevima (2,12,3) u for petlji for i in range (2,12,3): if max<niz[i]: max=niz[i] #ispis površina pravokutnika print("========================================") print("Površine svih pravokutnika:",end=" ") for i in range (2,12,3): print(niz[i],end=" ") print() print("Najveća površina pravokutnika iznosi:",max) ''' 1. Izmijenite program na način da računa površine trokuta te ispisuje najveću površinu. 2. Izmijenite program tako da u niz unosite stranice pravokutnog trokuta a umjesto površine izračunajte duljinu hipotenuze. program treba ispisati najdužu i najkraću hipotenuzu. 3. Izmijenite kod iz 2. zadatka tako da korisnik unosi željeni broj trokuta sa time da taj broj mora biti između 1 i 30 a niz mora biti statičan niz=[0]*90 izračunati dijagonale, odrediti najdužu i najkraću dijagonalu te prosječnu duljinu dijagonale. '''
6.) Euklidov algoritam – najveća zajednička mjera
a=int(input("Unesite a: ")) b=int(input("Unesite b: ")) if a<b: temp=a a=b b=temp while b != 0: ostatak=a%b a=b b=ostatak print("Najveća zajednička mjera:",a) ''' Pokušajte implementirati pomoću nizova. Prvi niz dužine 10 koristi za unos parova brojeva niz1[n]=a niz1[n+1]=b dok se drugi niz duljine 5 koristi za pohranu zajedničkih djelitelja parova brojeva iz niza 1. '''
7.) Za napredne – Određivanje prostih brojeva
n=int(input("Unesite broj za provjeru: ")) #krećemo sa pretpostavkom da broj nije prost #varijablu test postavljamo na laž test=False test=False #brojevi 2 i 3 su sigurno prosti stoga test=True if n==2 or n==3: test=True #Brojevi 0 i 1 nisu prosti iz tog razloga ih preskačemo. #Zanimaju nas brojevi veći od 3. Također jedini parni #prosti broj je 2, ostali parni brojevi nas ne zanimaju. #Zato moramo provjeriti je li n>3 i je li n neparan broj. #Ukoliko su obje tvrdnje istinite, provjeravamo dalje. elif n>3 and n%2!=0: #postavljamo test na istina #petlja određuje je li naša pretpostavka ispravna. test=True ''' petlja kreće od 3 i povečava se za 2 (3,n,2) pošto smo izbacili parne brojeve nema smisla dijeliti sa njima i dodatno ih provjeravati n**0.5 daje korijen broja npr. 11**0.5=3.32 kada taj broj pretvorimo u cjelobrojni funkcija int() dobivamo int(3.32)=3 toome dodamo 1 što iznosi 4 znači naša petlja će se kretati u rasponu (3,4) također možemo koristiti (3,n//2+1,2) ali rješenje sa korijenom broja je preciznije ''' for i in range(3,int(n**0.5)+1,2): #ukoliko ne postoji ostatak dijeljenja n%i==0 #možemo sa sigurnošću tvrditi da broj nije prost if n%i==0: #postavljamo test na laž i izlazimo iz petlje test=False break #Na kraju provjeravamo varijablu test #ako je istina broj je prosti u suprotnom nije if test==True: print("%d je prosti broj" %n) else: print("%d nije prosti broj"%n) #Pokušajte osmisliti svoje rješenje
7.1.) Za napredne – Algoritam za određivanje prostih brojeva unutar niza
niz1=[0]*10 niz2=[0]*10 #unos podataka u niz for i in range (0,10): niz1[i]=int(input("unesite %d. broj: " %(i+1))) k=0 for i in range (0,10): n=niz1[i] test=False if n==2 or n==3: test=True elif n>3 and n%2!=0: test=True for j in range(3,int(n**0.5)+1,2): if n%j==0: test=False break if test==True: #unos podataka u drugi niz i povećanje brojača k niz2[k]=n k=k+1 #Ispis podataka print("Prosti brojevi: ",end="") for i in range (0,10): if niz2[i]==0: break else: print(niz2[i],end=" ") print() #ispravite nedostatak, ukoliko ne postoji niti jedan prosti broj, #program treba ispisati poruku za korisnike. #Modificirajte, usavršavajte, igrajte se...
8.) Pomoć pri izradi programa loto
import random for i in range(0,7): # Funkcija koja vraća nasumične brojeve između 1 i 39 print (random.randint(1, 39),end=" ")
9.) Loto – za one koje zanima
import random bubanj=[0]*7 listic=[0]*7 iznos=int(input("Unesite iznos dobitka: ")) i=0 while True: broj=random.randint(1,39) test=True j=0 while bubanj[j]!=0: if broj==bubanj[j]: test=False break j=j+1 if test==True: bubanj[i]=broj i=i+1 if i==7: break print("Unos listića") i=0 while True: unos=int(input("Unesite %d. broj: " %(i+1))) test=True if unos<1 or unos>39: test=False else: j=0 while listic[j]!=0: if unos==listic[j]: test=False break j=j+1 if test==True: listic[i]=unos i=i+1 else: print("Pogrešan unos!") if i==7: break pogodak=0 for i in range (0,7): for j in range (0,7): if bubanj[i]==listic[j]: pogodak=pogodak+1 break print() print ("Ispis rezultata:",bubanj) print ("Ispis vašeg listića:",listic) print ("Broj pogodaka:",pogodak,"od 7") if pogodak<4: print("Na žalost niste dobili ništa.") elif pogodak==4: print("Čestitamo, osvojili ste:",iznos*0.01,"Kn") elif pogodak==5: print("Čestitamo, osvojili ste:",iznos*0.1,"Kn") elif pogodak==6: print("Čestitamo, osvojili ste:",iznos*0.5,"Kn") elif pogodak==7: print("Čestitamo, osvojili ste:",iznos,"Kn") input()