Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

Opis programa i analiza

U ovom program bi trebali napraviti program za unos jednog broja, a zatim izraunati faktorijel
tog broja, tako to emo koristiti funkciju koja e to da uradi za nas. A nakon izraunavanja
faktorijela po formuli (n! = 1 * 2 * 3 * * n), trebamo rezultat ispisan na zaslon monitora.
Prvo to emo uraditi jeste deklarisati potrebne headere, a potrebni su nam headeri za upis i ispis
podataka na zaslon monitora. Header koji emo ukljuiti je:
#include <stdio.h>
Sada kada smo ukljuili header stdio, moemo koristiti osnovne naredbe u C-u, a to su printf,
scanf. ili ispis i upis podataka. Poto se od programa trai da radimo preko funkcija tako emo i
raditi, i prvo to emo uraditi jested a emo deklarisati neku funkciju imenom Faktorijel, tipa
int (integer) tj. cjelobrojni broj, jer radimo s cjelobrojnim brojevima.
int Faktorijel(int broj)
{
}
Kao to moemo vidjeti, u funkciju faktorijel, dodali smo parameter, a parametar e predstavljati
broj koji e biti unesen od strane korisnika, sada kada imamo parametar ili da kaemo broj koji je
korisnik unio, moemo nastaviti raunanje faktorijela tog broja, a za to emo koristiti rekruzivnu
funkciju, tj. funkcija koja e se odvijati kao for petlja, bez zavretka, tj. beskonana petlja, ali to
emo rijeiti kasnje, tako to emo postaviti neki uslov kada se petlja zavrava.
int Faktorijel(int broj)
{
return broj * Faktorijel(broj-1);
}

Sada ta smo ovdje uradili, kao to moete vidjeti, vraamo stalno istu funkciju, tj pozivamo je
stalno u istoj funkciji, ali zato broj koji je korisnik unio smanjivamo svaki put za 1, tako da naa
funkcija to radi od najveeg ka najmanjem, i ide u beskonanost, a mi emo to rijeiti tako to
emo postaviti jedan uslov koji provjerava dali je broj tj. parametar koji se stalno smanjiva
jednak 1, ako je jednak 1, znai das mo doli do razultata i nemamo potrebe da rezultat mnoimo
ponovno s 1, i vratiemo rezultat.
int Faktorijel(int broj)
{
if (broj == 1) return broj;
return broj * Faktorijel(broj-1);
}
Sada je pitanje ta ako korisnik unese broj 0 ili manji broj, za takvo ta, da nebi napravili
beskonanu petlju, napravit emo uslov, i vratit emo 1, kao rezultat:
int Faktorijel(int broj)
{
if (broj == 0) return 1;
if (broj == 1) return broj;
return broj * Faktorijel(broj-1);
}
Sada kada smo napravili nau funkciju, sada moemo prei na pravljenje glavnog programa, tj.
pisanje u main petlji, te traenje unosa jednog broja, a zatim izraunavanja te ispis rezultata.
Prvo to emo uraditi jeste deklarisati main petlju:
int main()
{
}

Sada kada smo deklarisali nau glavnu funkciju main, i postavili njen poetak i kraj, moemo da
piemo kod unutar nje, kao prvo trebamo deklarisati varijable koje su nam potrebne za dalji rad
programa, a u naem sluaju dovoljna je jedna varijabla, i to broj koji e biti unesen od strane
korisnika, i moemo da je deklariemo int tipom, jer radimo s cjelobrojnim brojevima, i u sluaju
ako korisnik unese decimalan broj on e biti pretvoren u cjelobrojni, tj. zaokruen.
int main()
{
int Korisnik_Unos;
}
Sada kada imamo varijablu koja e sadravati na unos, moramo i da unesemo taj unos, za to
emo prvo posjetiti korisnika da treba unjeti neto, pa tek onda zahtjevati unos broja:
int main()
{
int Korisnik_Unos;
printf(Unesi broj: );
scanf(%d, &Korisnik_Unos);
}
Objanjenje za kod povi, prvo smo isprintali korisniku na ekran Unesi broj: , iako mu nismo
naglasili kojeg je to tipa, dali je to cjelobrojni broj, ili decimalni, na program e to razumiti, i
ako se unese neki decimalan broj, bit e zaokruen na cjelobrojnu vrijednost. Odmah poslje
naredbe printf, korstili smo scanf, tj. ekamo da korisnik unese neki broj, i naglasili smo u scanf
pod navodnicima da je to broj cjelobrojne vrijednosti, a zatim smo postavili & ispred varijable
Korisnik_Unos, to znai da e broj koji korisnik unese biti postavljen na adresu varijable
Korisnik_Unos. Sada kada smo odradili sve moemo jednostavno da ispiemo korisniku na
zaslon rezultat.

int main()
{
int Korisnik_Unos;
printf(Unesi broj: );
scanf(%d, &Korisnik_Unos);
printf("Faktorijel broja '%d' je: %d", br, Faktorijel(br));
}
Eh sada smo ured zavrili program, tako to smo prvo ispisali korisniku Faktorije broja te broj,
a zatim i rezultat, poto je funkcija Faktorijel cjelobrojnog tipa, postavili smo %d unutar printf
naredbe, da je ispiemo. Sada samo imamo jo jedan dio koji bismo trebali da dodamo, tj.
omoguimo korisniku da moe proitati na rezultat, jer sada u ovom sluaju rezultat e se
pojaviti, ali program e se zatvoriti u milisekundama, jer nemamo nekog zaustavljanja, a to emo
postaviti s getchar naredbom, i vratiti 0 jer je glavna funkcija int tipa.
int main()
{
int Korisnik_Unos;
printf(Unesi broj: );
scanf(%d, &Korisnik_Unos);
printf("Faktorijel broja '%d' je: %d", br, Faktorijel(br));
getchar();
return 0;
}

S ovim smo zavrili na program, koji e ispisati faktorijel broja koji e biti unjeti od strane
korisnika. Cjelokupan kod izgleda ovako:
#include <stdio.h>
int Faktorijel(int broj)
{
if (broj == 0) return 1;
if (broj == 1) return broj;
return broj * Faktorijel(broj-1);
}
int main()
{
int Korisnik_Unos;
printf("Unesi broj: ");
scanf("%d", &Korisnik_Unos);
printf("Faktorijel broja '%d' je: %d", Korisnik_Unos, Faktorijel(Korisnik_Unos));
getchar();
getchar();
return 0;
}

You might also like