5. vježbe

Primjer 5-1

Zadatak

Napišite program koji kao argument ima vektor (jednodimenzionalnu listu) te koristeći petlju While vraća vektor čiji su elementi navedeni u obrnutom poretku od elemenata argumenta.
Znači, ako je argument jednak {3, -1, 5} rezultat treba biti {5, -1, 3}.

Znamo: 
1.) Naredba  ArrayDepth[lista] vraća kao kao rezultat broj indeksa potrebnih da se odredi elemnent liste. Za vektor taj rezultat mora biti jednak 1, a za matricu rezultat mora biti jednak 2.
2.) Predložak oblika
      uzorak /; uvjet
zadovljava svaki izraz koji zadovoljava navedni uzorak uz zahtjev da zadovoljava i navedeni uvjet.  Tako, predložak
       x_List/;ArrayDepth[x]==1
zadovoljavaju svi izrazi koji su lista i kojima, za dostup do elemenata, treba 1 indeks. Drugim riječima x mora biti vektor.
3.) Ako je x vektor tada je njegov i-ti element dobije sa
                        x[[i]].
 npr. x[[3]] je treći element ektora x. 
4.) Naredbom
               Append[lista,element] 
listi dodajemo element.
 5.) Ako je x vektor tada naredba
                 Dimensions[x]
 vraća jednočlanu listu koja sadrži broj elementata od x.
 
 Postupak: 
počevši od kraja do početka izdvajati ćemo elemente argumenta i dodavati ih rezultatu.

Izrada

obrnuto[x_List /; ArrayDepth[x]==1 ]:= Module[{i, rez={}},
(*
 i je brojač
rez je rezultirajući vektor
*)
{i}=Dimensions[x];
While[i>0,
rez=Append[rez, x[[i]] ];
i=i-1;
];
Return[rez];
];

Testiranje

a={-2, 3, -7, 8}; 
obrnuto[a]

Primjer 5-2

Zadatak

Napišite program koji će učitavati prirodne brojeve, jedan po jedan koristeći naredbu Input i odrediti će koliko je upisano prostih brojeva. Postupak učitavanja brojeva se prekida kada se učita broj 0.

U programu ćemo koristiti funkciju
             PrimeQ[broj]
koja vraća True (tj. istina) ako je broj prost i  False (tj. neistina) u protivnom slučaju.  Npr.

PrimeQ[7]
PrimeQ[8]

Izrada

brojp := Module[{x, rez=0},
(* 
 x je učitani prirodan broj
rez je rezultat
*)
x=Input["Upišite prirodan broj"];
While[x≠0, 
If[PrimeQ[x], rez=rez+1];
x=Input["Upišite prirodan broj"];
];
Return[rez];
];

Testiranje

brojp