2. vježbe

Primjer 2-1

Zadatak

Napišite program koji za argument ima listu od dva člana i vraća sortiranu listu — manji broje je ispred većeg.  Program prijavljuje grešku ako je duljinu liste različita od 2 — koristite funkciju Length za određivanje duljine liste.

Rješenje

In[1]:=

02vj-rijesene_1.gif

Testiranje

In[2]:=

02vj-rijesene_2.gif

Out[2]=

02vj-rijesene_3.gif

In[3]:=

02vj-rijesene_4.gif

Out[3]=

02vj-rijesene_5.gif

In[4]:=

02vj-rijesene_6.gif

Out[4]=

02vj-rijesene_7.gif

In[5]:=

02vj-rijesene_8.gif

02vj-rijesene_9.gif

Out[5]=

02vj-rijesene_10.gif

Primjer 2-2, za samostalni rad

Zadatak

Napišite program koji za argument ima listu od dva člana i vraća sortiranu listu — manji broje je ispred većeg.  Program prijavljuje grešku ako je duljinu liste različita od 2 — koristite funkciju Length za određivanje duljine liste. U programu koristite postupak zamjene vrijednosti dviju varijabli.

Napomena:
1. za zamjenu vrijednosti dviju varijabli treba koristiti pomoćnu varijalblu,
2. specifično za Mathematicu, argument programa NE smije biti na lijevoj strani jednakosti pa u rješenju zadatka treba uvesti dvije varijable a i b koje predstavljaju elemente liste x[[1]]  i x[[2]].

Rješenje

In[6]:=

02vj-rijesene_11.gif

Testiranje

In[7]:=

02vj-rijesene_12.gif

Out[7]=

02vj-rijesene_13.gif

In[8]:=

02vj-rijesene_14.gif

Out[8]=

02vj-rijesene_15.gif

In[9]:=

02vj-rijesene_16.gif

Out[9]=

02vj-rijesene_17.gif

In[10]:=

02vj-rijesene_18.gif

02vj-rijesene_19.gif

Out[10]=

02vj-rijesene_20.gif

Primjer 2-3

Napišite program koji će imati dva argumenta npr. x i y;  tip oba argumenta mora biti Real ili Integer.  Ako su oba pozitivna (tj. ako vrijedi x>0 i y>0) program vraća  ln(x) + ln(y), a u protivnom vraća  02vj-rijesene_21.gif+02vj-rijesene_22.gif.

Rješenje

In[11]:=

02vj-rijesene_23.gif

Testiranje

In[12]:=

02vj-rijesene_24.gif

Out[12]=

02vj-rijesene_25.gif

In[13]:=

02vj-rijesene_26.gif

Out[13]=

02vj-rijesene_27.gif

In[14]:=

02vj-rijesene_28.gif

Out[14]=

02vj-rijesene_29.gif

In[15]:=

02vj-rijesene_30.gif

Out[15]=

02vj-rijesene_31.gif

In[16]:=

02vj-rijesene_32.gif

Out[16]=

02vj-rijesene_33.gif

Primjer 2-4, za samostalni rad

Zadatak

Napišite program koji za argument ima listu od tri člana i vraća sortiranu listu — manji broj je ispred većeg. Program računa duljinu liste funkcijom Length. Napomena: za zamjenu vrijednosti treba koristiti pomoćnu varijablu.

Opis postupka

Obrazloženje algoritma (Bubble sort): polo\[ZHacek]aj "mjehurića" na početku

a
b
c
.

Krećemo odozdo (od trećeg do prvog retka), uspređujemo zadnji element i onaj ispred njega i zamjenjujemo ih (ako treba);  Dalje uspoređujemo prednzadnji element i onaj ispred njega i evelntulano ih zamjenimo. Kada smo došli do vrha tada se na vrhu nalazi najlakši "mjehurić".

Ponavljao operaciju od trećeg do drugog elementa; na kraju se na drugom mjestu nalazi  najlakši "mejhurić" među uspoređivanima

Primjer

Primjer postupka: Polazni raspored   

5
4
3
  (elementi koje promatramo na nekom koraku napisani su ovom bojom ).

Prvi prolaz (od zadnjeg do prvog elementa):  usporedba:

5
4
3
, zamjena:
5
3
4
,  usporedba:  
5
3
4
, zamjena:
3
5
4
  — na vrh je isplivao "najlakši" mjehurić.

Drugi prolaz (od zadnjeg do drugog elementa): usporedba:  

3
5
4
, zamjena:  
3
4
5
  — na drugom mjestu se nalazi najlakši "mjehurić" među usopređivanima.

Kraj sortiranja, rezultat je  

3
4
5
.

Primjer

Primjer postupka za listu od 4 člana: Polazni raspored:

6
4
5
3
  (elementi koje promatramo na nekom koraku napisani su ovom bojom).

Prvi prolaz ("idemo" od zadnjeg do drugog člana i uspoređujemo ih s elementom ispred;  ako treba zamjenjujemo ih): usporedba:

6
4
5
3
, zamjena:  
6
4
3
5
, uspredba:  
6
4
3
5
, zamjena:
6
3
4
5
, uspredba:
6
3
4
5
, zamjena:
3
6
4
5
  — kraj prvog prolaza, najlakši "mjehurić" je na vrhu.

Drugi prolaz ("idemo" od zadnjeg do trećeg člana i uspoređujemo ih s elementom ispred;  ako treba zamjenjujemo ih): uspredba:

3
6
4
5
, nema zamjene!:  
3
6
4
5
, uspredba:  
3
6
4
5
, zamjena:  
3
4
6
5
— kraj drugog prolaza

Treći prolaz (od zadnjeg do trećeg člana): uspredba  

3
4
6
5
, zamjena:
3
4
5
6
.

Kraj sortiranja, rezultat je

3
4
5
6
.

Rješenje

Napomena: kako je pokazano u drugom primjeru, zamjena vrijednosti dviju varijabli zahtjeva uvođenje pomoćne varijable. Program Mathematica ime neku vrstu izuzetka od navedenog pravila. Ako treba zamjeniti vrijednosti elemenata dvočlane liste {a, b} to možemo postići bez pomoćne varijable koristeći izraz
              {a, b} = {b, a};
nakon čega će a i b imati zamijenjene vrijednosti, npr.

In[17]:=

02vj-rijesene_34.gif

Out[18]=

02vj-rijesene_35.gif

Out[19]=

02vj-rijesene_36.gif

Slijedi tekst programa:

In[20]:=

02vj-rijesene_37.gif

Testiranje

In[21]:=

02vj-rijesene_38.gif

Out[21]=

02vj-rijesene_39.gif

Spikey Created with Wolfram Mathematica 7.0