Pretraživanje liste

Sjedište: CARNET - Arhiva 2021 Loomen
E-kolegij: Informatika 3 PMG - Gimnazija Đakovo
Knjiga: Pretraživanje liste
Otisnuo/la: Gost (anonimni korisnik)
Datum: petak, 22. studenoga 2024., 12:30

1. Pretraživanje liste

Još smo u uvodnom zadatku postavili pitanje: koliko dana je temperatura bila ispod prosjeka?
Za rješavanje ovog problema potrebno je proći kroz listu i vrijednost svakog elementa usporediti s prosječnom temperaturom.
Ovaj postupak jedan je od najčešćih postupaka u programiranju i nazivamo ga pretraživanje.
Algoritmi pretraživanja, zajedno s algoritmima sortiranja pripadaju u najčešće korištene algoritme u programiranju. Razlikuju se prema složenosti, brzini i korištenju memorije. Za sada ćemo proučiti najjednostavniji način pretraživanja, ne vodeći računa o brzini i složenosti. To je, u ovom slučaju opravdano, zbog male količine podataka koje treba pretražiti.

I za pretraživanje niza koriste se programske petlje, ali ovaj puta u kombinaciji s naredbom grananja, jer je potrebno provjeriti zadovoljava li element niza zadani uvjet:

for i in range (broj) :
    if (uvjet):
        naredba

Na konkretnom primjeru:
broj=0
for i in range (dani):
    if jutarnja [i] < srednja:
        broj = broj + 1

Varijabla broj služi kao brojač koji se povećava za 1 svaki put kada program pronađe vrijednost temperature manju od prosječne. Na kraju će vrijednost varijable broj biti upravo ono što tražimo: ukupan broj dana s temperaturom manjom od prosječne.


1.1. Zadatci za vježbu

Zadatak 1. Bez korištenja računala odgovori na pitanje: Što će se ispisati nakon izvođenja sljedećeg programa, ako se upišu podaci:

a)

5

5, 2, 4, 5, 3

5

b)

4

1, 2, 3, 4

5

def upisi(a):
    for i in range (m):
        a[i]=int(input())
    return

def trazi(a,t):
    br=0
    for i in range (m):
        if a[i]==t:
            br=br+1
    return br

m=int(input('Unesi broj elemenata niza (<=10): '))
a=[0]*m
if 0<m<=10:
    print('Unesi elemente: ')
    upisi(a)
    t=int(input('Koji broj tražiš?'))
    b=trazi(a,t)
    if b==0:
        print('Broja ',t,'nema u zadanom nizu.')
    else:
        print('Broj',t,'se pojavljuje',b,'puta u zadanom nizu.')
else:
    print('Upisani broj nije u traženom rasponu.')

Zadatak 2. Napravi program kojim ćeš omogućiti učitavanje općeg uspjeha za n učenika, n<30. Program treba ispisati koliko u razredu ima odličnih, koliko vrlo dobrih, dobrih, dovoljnih i nedovoljnih učenika. Nakon toga treba izračunati i ispisati prosječnu ocjenu i broj učenika iznad prosjeka.

Zadatak 3. Napravi program koji će omogućiti unošenje n elemenata u jedan niz. Program treba izračunati i ispisati:

a) zbroj parnih i zbroj neparnih brojeva posebno

b) zbroj elemenata na parnim i zbroj elemenata na neparnim mjestima (ne indeksima) u nizu.

Zadatak 4. Napravi program kojim ćeš omogućiti unos elemenata niza od najviše 10 elemenata. Program treba pronaći i ispisati najveći element u učitanom nizu.

Napomena: Prilikom rješavanja ovog zadatka pokušaj primijeniti  algoritam koji smo koristili kada smo tražili najveći od tri unesena elementa.

Zadatak 5. Napravi program koji će tražiti unos prirodnog broja n (n≤50) i nakon toga n elemenata u jedan niz. Program treba ispisati na zaslon koliko od unesenih brojeva ima zbroj znamenki djeljiv s 5.