http://www.phy.hr/~npaar/teaching/teaching.html ili pod “nastavnim materijalima” na www.phy.

hr

GENERATOR SLUČAJNIH BROJEVA
 

rand funkcija
32767)

•  Učitati <stdlib.h>
•  i = rand();

•  daje “slučajni" broj između 0 and RAND_MAX (barem

•  Pseudoslučajni brojevi
 

skaliranje

• dobiveni niz slučajnih brojeva sa rand funkcijom • isti niz brojeva dobije se u svakom pozivu funkcije
•  1 + ( rand() % n )

•  Da bi dobili slučajni broj između 1 i n:
• rand() % n daje broj između 0 and n - 1 • dodati 1 da se dobije slučajni broj između 1 i n
•  1 + ( rand() % 6) → Daje broj između 1 and 6

GENERATOR SLUČAJNIH BROJEVA
 

srand funkcija

•  <stdlib.h>
• 

•  Uzima cijelobrojni skup i skače na danu lokaciju u
slučajnom nizu
srand( seed ); srand( time( NULL ) );/*treba ucitati <time.h> */ •  time( NULL )

• Daje vrijeme u sekundama u kojem je program
kompajliran

• Na ovaj način je dobiven slučajni niz brojeva (za
razliku od pseudoslučajnog niza)

PRIMJENA GENERATORA SLUČAJNIH BROJEVA .

PRIMJENA GENERATORA SLUČAJNIH BROJEVA Output programa 6 5 6 6 6 1 6 2 5 1 2 3 5 5 4 4 6 3 2 1 .

PRIMJENA GENERATORA SLUČAJNIH BROJEVA .

PRIMJENA GENERATORA SLUČAJNIH BROJEVA .

PRIMJENA GENERATORA SLUČAJNIH BROJEVA Ispis programa Ishod 1 2 3 4 5 6 Frekvencija 1003 1017 983 994 1004 999 .

PRIMJENA GENERATORA SLUČAJNIH BROJEVA .

PRIMJENA GENERATORA SLUČAJNIH BROJEVA Output programa Unesite seed broj: 67 6 1 1 6 Unesite seed broj: 867 2 4 1 1 Unesite seed broj: 67 6 1 1 6 4 1 6 3 4 1 6 6 1 6 6 6 2 4 6 2 2 4 .

y.POHRANJIVANJE VARIJABLI I FUNKCIJA U MEMORIJU   Automatsko pohranjivanje •  Objekt stvoren i obrisan unutar svojeg bloka •  auto: predefiniran (“default”) za lokalne varijable • auto double x. . •  register: pokušava postaviti varijable u registre velike brzine • Može se koristiti samo za automatski pohranjene varijable • register int counter = 1.

POHRANJIVANJE VARIJABLI I FUNKCIJA U MEMORIJU   Statičko pohranjivanje •  Varijable postoje za čitavo vrijeme izvršavanja programa •  Predefinirana (“default”) vrijednost je nula •  static: lokalne varijable definirane u funkcijama • Zadržava vrijednost nakon što završava izvođenje •  extern: “default” za globalne varijable i funkcije • poznate u svakoj funkciji funkcije • Varijabla je poznata samo u svojoj vlastitoj funkciji .

DEFINIRANJE VARIJABLI PO BLOKOVIMA   Blokovi programa izdvojeni su vitičastim zagradama •  Varijable mogu biti definirane lokalno unutar bloka •  Vanjski blokovi su “skriveni” za unutrašnje blokove ako postoji varijabla istog imena u unutrašnjem bloku .

GLOBALNE I LOKALNE VARIJABLE .

GLOBALNE I LOKALNE VARIJABLE .

GLOBALNE I LOKALNE VARIJABLE .

GLOBALNE I LOKALNE VARIJABLE lokalni x u vanjskom bloku main je 5 lokalni x u unutrasnjem bloku main je 7 lokalni x u vanjskom bloku main je 5 lokalni x je 25 nakon ulaska a lokalni x je 26 prije izlaska a lokalni staticki x je 50 na ulasku b lokalni staticki x je 51 na izlasku b globalni x je 1 na ulasku c globalni x je 10 na izlasku c lokalni x je 25 nakon ulaska a lokalni x je 26 prije izlaska a lokalni staticki x je 51 na ulasku b lokalni staticki x je 52 na izlasku b globalni x je 10 na ulasku c globalni x je 100 na izlasku c lokalni x u main je 5 Output programa .

. . •  Faktorijela se može računati rekurzivno •  Prvo treba definirati temeljni slučaj (1! = 0! = 1) i onda krenuti dalje: •  2! = 2 * 1! = 2 * 1 = 2..REKURZIVNE FUNKCIJE   Rekurzivne funkcije •  Funkcije koje pozivaju same sebe Primjer: faktorijela   •  5! = 5 * 4 * 3 * 2 * 1 •  Treba primjetiti •  5! = 5 * 4! •  4! = 4 * 3! . •  3! = 3 * 2! = 3 * 2 = 6.

REKURZIVNE FUNKCIJE .

REKURZIVNE FUNKCIJE Output programa 1! 2! 3! 4! 5! 6! 7! 8! 9! 10! = = = = = = = = = = 1 2 6 24 120 720 5040 40320 362880 3628800 .

3. 2.REKURZIVNE FUNKCIJE – FIBONACCI NIZ   Fibonacci niz: 0. 8.1) + fibonacci( n – 2 ). 1. 5.. •  Svaki broj niza je suma prethodna dva broja •  Može se riješiti rekurzivno: •  fib( n ) = fib( n .. else return fibonacci( n .1 ) + fib( n – 2 ) •  Kod za fibonacci funkciju: long fibonacci( long n ) { if (n == 0 || n == 1) // temeljni slucaj return n. 1. } .

REKURZIVNE FUNKCIJE – FIBONACCI NIZ   Skup rekurzivnih poziva funkcije fibonacci f( 3 ) return f( 2 ) + f( 1 ) return f( 1 ) + f( 0 ) return 1 return 1 return 0 .

REKURZIVNE FUNKCIJE – FIBONACCI NIZ .

REKURZIVNE FUNKCIJE – FIBONACCI NIZ Unesite cijeli broj: 0 Fibonacci( 0 ) = 0 Unesite cijeli broj: 1 Fibonacci( 1 ) = 1 Unesite cijeli broj: 2 Fibonacci( 2 ) = 1 Unesite cijeli broj: 3 Fibonacci( 3 ) = 2 Unesite cijeli broj: 4 Fibonacci( 4 ) = 3 .

PRIMJENA POLJA U C-u .

UVOD U POLJA   Polja (array) •  Strukture niza podataka koji su međusobno povezani •  Statičke strukture – ista veličina kroz cijeli program .

.. c c) c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8] -45 6 0 72 1543 -89 0 62 -3 1 6453 78   Format: c[9] c[10] c[11] •  Prvi element je na položaju 0 •  n-ti element polja nazvanog c: Broj koji definira Position number of the element within Položaj elementa array c Unutar polja c .UVOD U POLJA   Polje (Array)   Za baratanje određenim elementom treba specificirati •  Niz uzastopnih memorijskih lokacija •  Isto ime i tip za svaki element •  Ime polja •  Broj koji definira položaj u polju •  Imepolja[ broj_polozaja ] •  c[ 0 ].c[ n – 1 ] Name of svi Ime polja.array (Note that all elements of elementi polja imaju this array have the same name. isto ime. c[ 1 ].

•  c[ 5 . • Mogu se izvoditi operacije unutar uglatih zagrada. c[ 0 ] ). ako je x jednak 3.UVOD U POLJA   Elementi polja koriste se kao normalne varijable •  •  c[ 0 ] = 3. printf( "%d".2 ] == c[ 3 ] == c[ x ] .

. x[ 27 ]. •  int b[ 100 ]. •  float mojePolje[ 3284 ].   Definiranje više polja istoga tipa: •  Format je sličan kao kod običnih varijabli •  Npr.DEFINIRANJE POLJA   Kod definiranja polja treba zadati→ •  Ime •  Tip polja •  Broj elemenata •  Primjeri: •  tipPolja imePolja[ brojElemenata ]. •  int c[ 10 ].

4. 2.PRIMJERI KORIŠTENJA POLJA   Inicijaliziranje vrijednosti polja •  Ako nema dovoljno vrijednosti za inicijalizaciju. 2. 4. 3. nedefinirani elementi s desna postaju 0 •  int n[ 5 ] = { 1. 5 }. niz za inicijalizaciju je definira: •  5 vrijednosti za inicijalizaciju → polje od 5 elemenata •  int n[ ] = { 1. . dobije se greška u sintaksi   svi elementi su postavljeni na 0 Ako je veličina polja izostavljena. •  int n[ 5 ] = { 0 } •  Ako je previše vrijednosti za inicijalizaciju. 5 }. 3.

PRIMJERI KORIŠTENJA POLJA .

PRIMJERI KORIŠTENJA POLJA Output programa Element 0 1 2 3 4 5 6 7 8 9 Vrijednost 0 0 0 0 0 0 0 0 0 0 .

Sign up to vote on this title
UsefulNot useful