Programski jezik C

Слични документи
Funkcije predavač: Nadežda Jakšić

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Uvod u računarstvo 2+2

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Funkcije predavač: Nadežda Jakšić

Uvod u računarstvo 2+2

070-ALIP2-udzbenik.indb

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Programski jezik C

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Tutoring System for Distance Learning of Java Programming Language

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Uvod u računarstvo 2+2

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Microsoft PowerPoint - C-4-1

Tutoring System for Distance Learning of Java Programming Language

Uvod u računarstvo 2+2

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Programiranje za UNIX Okruženje unix procesa

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

07_PJISP_II_Predavanja

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

Microsoft Word - 11 Pokazivaci

Grananje u programu predavač: Nadežda Jakšić

Datoteke predavač: Nadežda Jakšić

Tutoring System for Distance Learning of Java Programming Language

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Računarski praktikum I - Vježbe 01 - Uvod

Strukture predavač: Nadežda Jakšić

PowerPoint Presentation

P11.2 Izbor instrukcija, IBURG

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Logicko projektovanje racunarskih sistema I

P11.3 Analiza zivotnog veka, Graf smetnji

PowerPoint Presentation

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Inženjering informacionih sistema

PowerPoint Presentation

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

PowerPoint Presentation

PROMENLJIVE, TIPOVI PROMENLJIVIH

PowerPoint Presentation

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Dijagrami sekvenci

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Računarski praktikum I - Vježbe 09 - this, static

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Osnovni programiranja I

Microsoft Word - CAD sistemi

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

P1.3 Projektovanje makroasemblera

Uvod u takmičarsko programiranje

Програмирај!

Programski jezici i strukture podataka

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

MJEŠOVITA SREDNJA TEHNIČKA ŠKOLA TRAVNIK PROGRAMIRANJE I PROGRAMSKI JEZICI PROGRAMSKI JEZIK C -SKRIPTA ZA INTERNU UPOTREBU-

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Algoritmi i arhitekture DSP I

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U

P3.2 Paralelno programiranje 2

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

Microsoft Word - Lekcija 11.doc

Teorija skupova - blog.sake.ba

Tutoring System for Distance Learning of Java Programming Language

Sveucilište u Zagrebu

Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71

Pojačavači

Microsoft Word - 02 Elementi programskog jezika Pascal

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature opti

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

P2.1 Formalne gramatike

Математика основни ниво 1. Одреди елементе скупова A, B, C: a) б) A = B = C = 2. Запиши елементе скупова A, B, C на основу слике: A = B = C = 3. Броје

P9.1 Dodela resursa, Bojenje grafa

PASCAL UVOD 2 II razred gimnazije

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

Slide 1

Microsoft Word - MySQL_3.doc

Slide 1

Математика 1. Посматрај слику и одреди елементе скуупова: а) б) в) средњи ниво А={ } B={ } А B={ } А B={ } А B={ } B А={ } А={ } B={ } А B={ } А B={ }

Рачунарска интелигенција

Programiranje 1 3. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/1

Računarski praktikum I - Vježbe 11 - Funktori

Upitni jezik SQL

Microsoft PowerPoint - DAC.ppt [Compatibility Mode]

Транскрипт:

Pojam funkcije Deklaracija i definicija funcije Poziv funkcije Memorijske klase promjenljivih Primjeri. Za kompajliranje koda koristen DEV-C++ 4.9.9.2 Compiler!!!! Moze is koristiti I bilo koji drugi standardni C kompajler SPR, C, 2019, R. Stojanovic

... Šta je funkcija? Segment programa koji ima tačno definisan zadatak. Funkcija ima jedinstveno ime. Koristi argumente. Izvršava naredbe definisane kodom //Ilustracija funkcija #include <stdio.h> #define PI 3.14 // funkcija za izracunavanje povrsine kruga float povrsina_kruga(float d) { float r,p; r=d/2; p=r*r*pi; return p; // main funkcija int main() { float pr, pov; printf("\nunesi precnik kruga: "); scanf("%f", &pr); // pov= PI*(pr/2)*(pr/2) //Preko funkcija pov=povrsina_kruga(pr); printf("\npovrsina kruga je %f\n", pov); getchar(); getchar(); return 0;

... Prednosti programa sa funkcijama Jednostavnije rešavanje programskog zadatka. Jednostavnije pisanje i održavanje programa. Piše se jednom, a poziva potreban broj puta. Moguće je kreirati biblioteke funkcija. Veći nivo abstrakcije i razumijevanja samog programa. Mogućnost jednostavnijeg ispravljanja, dopuna i izmjena. Jednostavno, program bez funkcija nije dobar program.

... Deklaracija (prototip) funkcije tip ime( lista_argumenata) ; tip ime( tip1, tip2, ) ; tip ime( tip1 ime1, tip2 ime2, ) ; tip tip povratne vrijednosti od funkcije, bilo koji tip. ime bilo koji C identifikator. lista_argumenata lista tipova (eventualno i formalnih imena podataka koje koristi funkcija)

... Definicija funkcije tip ime( lista_argumenata) // Deklaracija bez znaka ; na kraju { ; ; // Tijelo funkcije, samo naredbe U tijelu funkcije mogu biti različite naredbe

... Argumenti i povratne vrijednosti. Način razmjene podataka. Argumenata može biti više (0, 1, 2, 3...). Povratnih vrijednosti može biti 1 (jedna) ili više (način kada se vraća više vrijednosti kroz složeni tip podataka)

... Lista formalnih argumenata u definiciji funkcije Odgovara listi argumenata u deklaraciji funkcije. Pojedini argumenti u listi odvajaju se, Imena formalnih argumenata u ovoj listiobavezna. Ako funkcija nema argumenata, umjesto njihove liste se piše void.

... Tip povratne vrijednosti Može biti osnovni ili izvedeni C tip. Funkcija može vratiti na mjesto poziva najviše jednu povratnu vrijednost (može biti i adresa na početak niza). Ako nema povratne vrijednosti umjesto tipa se piše void.

Tipovi povratnih vrijednosti char f1( ); f1 vraća vrijednost tipa char int f2( ); f2 vraća vrijednost tipa int float f3( ); f3 vraća vrijednost tipa float double f4( ); f4 vraća vrijednost tipa double void f5( ); f5 ne vraća vrijednost na mjesto svog poziva, već rezultate šalje samo izlaznim uredjajima (funkcija sa bočnim efektima ).

Naredbe funkcija Naredbe deklaracije na početku funkcije. Izvršne naredbe poslije naredbi deklaracije. Naredbe povratka obavezno bar jedna ako funkcija vraća vrijednost.

Naredba povratka return return ( vrednost ); <-> return vrednost ; return x; return ( (x>=y)? x : y ); if(x>=y) return x; else return y; Može biti više naredbi return ali moguće je izvršenje samo jedne od njih (za jednu povratnu vrijednost).

Poziv funkcije ime( lista stvarnih argumenata); Poziv funkcije je operator u C jeziku. Pojedini argumenti odvajaju se zarezom,. Ako funkcija nema argumenata, piše se samo par zagrada ( ).

Primjer funkcije za množenje dva cijela broja i vraća rezultat u obliku cijelog broja. int proizvod(int x, int y); main() { int a=10, b=5; printf( %d, proizvod(a,b) ); // Deklaracija funkcije // Poziv funkcije int proizvod(int x, int y) { int z; z=x*y; return z; // Pocetak definicije funkcije // Naredba funkcije // Izvrsna naredba // Naredba povratka

Jednostavniji primjer gornje funkcije int proizvod(int x, int y); main() { int a=10, b=5; printf( %d, proizvod(a,b) ); int proizvod(int x, int y) { return (x*y);

Deklaracija i definicija Kompajler će da prihvati i sledeću situaciju, bez deklaracije funkcije, ali definicija mora doći ispred funkcije u kojoj se poziva. # include <stdio.h> // izostavljena deklaracija int proizvod(int x, int y) { return (x*y); main() { int a=10, b=5; printf("%d", proizvod(a,b) ); getchar();

Opciono izvršavanje jedne od predvidjenih naredbi return float kolicnik(int x, int y); main() { int a=10, b=3; printf( %f, kolicnik(a,b) ); float kolicnik(int x, int y) { if (y==0) return 0; else return ( (float)x / y );

Rekurzivna funkcija Funkcija koja poziva samu sebe - konačan broj puta - svaki put sa različitim vrijednostima Uvijek postoji: - iterativni postupak koji može zamijeniti rekurzivni Prednost: - jednostavniji algoritam od iterativnog Nedostatak: - može biti veliki broj poziva iste funkcije, a svaki put se pokreće mehanizam poziva.

Iterativni postupak u funkciji faktorijel long ifakt(int n) { int i, fakt=1; /*na pocetku fakt=1*/ for(i=2; i<=n; i++) fakt *=i; /*mnozenje u svakoj iteraciji sa i*/ return fakt; n-1 puta izvršava operaciju fackt=fact*i ifakt(n) = 1 *2 * 3 *. * (n-2) * (n-1) * n U jednom pozivu funkcije (n-1) iteracija

Rekurzivni algoritam funkcije faktorijel long rfakt(int n) { if(n==1) return 1; /*kraj izvrsavanja funkcije*/ else return( n*rfakt(n-1) ); /*funkcija poziva samu sebe*/ rfakt(n) = n * rfakt(n-1) (n-1) * rfakt(n-2) (n-2) * rfakt(n-3)... 2*rfakt(1) 1 Funkcija poziva samu sebe (n-1) puta

Glavna funkcija main() { int x,y;... return 0; Po pokretanju programa operativni sistem poziva njegovu glavnu funkciju. Poslednja funkcija glavne funkcije vraća status operativnom sistemu.

Identičnost, ugradejnje konstante main() {... return 0; main() {.. U operativnom sistemu Rezervisana konstanta. return ЕXIT_SUCCESS;

Funkcija za preveremeni kraj izvršenja programa Funkcija exit() iz stdlib.h void exit( int status ); // Deklaracija u biblioteci exit( status ); // Poziv Pozivom funkcije exit() prosledjuje se status operativnom sistemu: 0/1 Primjeri poziva : -U slučaju da nema greški exit(0); exit(exit_success); - U slučaju greške exit(1); exit(exit_failure);

Funkcija za poziv drugog programa u okviru postojećeg operativnog sistema, a iz bilo koje funkcije C koda Funkcija system() iz stdlib.h int system(const char *ime); system("ime_programa"); (Vraća 0 ako dobije u argumentu ime programa, u suprotnom -1) system() prekida tok izvršavanja jednog programa, poziva se i izvršava drugi program i nakon toga nastavlja izvršavanje prekinutog programa. Primjeri poziva DOS komandi: system("cls"); system("dir"); system("ime_drugog_programa");

vs Makroi Makroi sa argumentima Makro je definicija simbola u kojoj se javljaju jedan ili više argumenata. Na primer: #define KVADRAT(x) ((x)*(x)) definiše makro koji izračunava drugi stepen argumenta. Argument x se u programu zamenjuje stvarnim argumentom proizvoljnog tipa. Vidimo da je parametrizirani makro vrlo sličan funkciji no u njemu nema funkcijskog poziva i prenošenja argumenata, pa je stoga efikasniji. Makro je brzi, a funkcija zauzima manje memorije. ISTO!!!! //Ilustracija funkcija i MAKROA #include <stdio.h> #include <stdlib.h> #define PI 3.14 // MAKRO za povrsinu #define POV(x) ((x/2)*(x/2)*pi) //MAKRO // funkcija za povrsinu float povrsina_kruga(float d) { float r,p; r=d/2; p=r*r*pi; return p; // main funkcija int main() { float pr, pov; printf("\nunesi precnik kruga: "); scanf("%f", &pr); pov=povrsina_kruga(pr); printf("\npovrsina kruga je %f\n", pov); printf("\npovrsina kruga je %f\n", POV(pr)); getchar(); getchar(); return 0;

Memorijske klase promenljivih 4 memorijske klase promjenljivih: globalne definišu se izvan svih funkcija staticke definišu se korišcenjem kljucne rijeci static static tip ime=vrijednost automatske definišu se korišcenjem kljucne rijeci auto auto tip ime=vrijednost podrazumijeva se da je ne navede registarske definišu se korišcenjem kljucne rijeci register register tip ime=vrijednost promjenljiva automatska, ako se drugacije

Memorijske klase promenljivih Automatske ili lokalne promjenljive definišu se na pocetku tijela funkcije (glavnog programa ili potprograma). Pocetna vrijednost im se ne podrazumijeva!!! (To znaci da nije nula!!!) Mogu da se koriste samo u funkciji u kojoj su definisane. To znaci da isto ime možemo da koristimo nezavisno u više razlicitih funkcija. Cak te promjenljive mogu da budu i razlicitih tipova. Automatski nastaju prilikom ulaska u funkciju, a automatski nestaju nakon izlaska iz funkcije. Podrazumijeva se da je promjenljiva automatska ako se drugacije ne navede Ne mora se eksplicitno navoditi da se radi o automatskoj promjenljivoj, ali može pomocu kljucne rijeci auto auto tip ime=vrijednost;

Memorijske klase promenljivih Definišu se navodenjem kljucne rijeci static static tip ime=vrijednost Vrijednost im se odreduje prije pocetka izvršavanja programa uzima se eksplicitna vrijednost kojom je inicijalizovana promjernljiva podrazumijeva se pocetna vrijednost nula ako se ne navede Imaju trajan karakter, postoje od pocetka do kraja izvršavanja programa vrijednost ostaje sacuvana do sljedeceg poziva date funkcije

Memorijske klase promenljivih Globalne promjenljive definišu se izvan svih funkcija. Ako se u definiciji ne navede pocetna vrijednost podrazumijeva se nula!!! Globalna promjenljiva dostupna je u svim funkcijama koje su definisane nakon definicije date promjenljive. Globalne promjenljive omogucavaju da više funkcija manipuliše istim skupom podataka, pa omogucavaju efikasnu razmjenu podataka izmedu funkcija (jer sve funkcije pristupaju istim memrijskim lokacijama). Treba ih izbjegavati jer se gubi univerzalnost funkcije i fleksibilnost primjene na razlicite setove podataka. Ako se u nekoj funkciji definiše promjenljiva sa istim imenom kao i neka globalna, tada ta lokalna promjenljiva maskira globalnu i globalnoj ne može da se pristupi. Ako se u nekoj funkciji koristi neka globalna promjenljiva to može da se eksplicitno naglasi deklaracijom korišcenjem kljucne rijeci extern, iako ne postoji obaveza da se globalne promjenljive

Memorijske klase promenljivih Primjer lokalne promenljive #include <stdio.h> void f1 () { int i=1; printf( f1: %d\n, i); main: 0 f1: 1 main: 0 f2: 2 main: 0 void f2 () { int i=2; printf( f2: %d\n, i); i=10; main() { int i=0; printf( main: %d\n, i); f1(); printf( main: %d\n, i); i=5; f2(); printf( main: %d\n, i);

Memorijske klase promenljivih Primjer globalne promenljive #include <stdio.h> void f1 () { int i=1; printf( f1: %d\n, i); int i; void f2 () { extern int i; printf( f2: %d\n, i); i=10; main() { printf( main: %d\n, i); f1(); printf( main: %d\n, i); i=5; f2(); printf( main: %d\n, i); main: 0 f1: 1 main: 0 f2: 5 main: 10 Primjer staticke promenljive #include <stdio.h> void f () { static int brs=1; auto int bra=1; printf( static brs=%d auto bra=%d\n, brs, bra); brs++; bra++; main() { int i; for (i=1; i<=3; i++) f(); static brs=1 auto bra=1 static brs=2 auto bra=1 static brs=3 auto bra=1

Primjer 1 / Odredjivanje veceg od dva broja pomocu odgovarajuce funkcije / #include <stdio.h> int max(int x, int y); / deklaracija funkcije / main( ) { int a, b, c; printf("\nzadati dva cela broja: "); scanf("%d%d", &a, &b); c = max(a, b); / poziv funkcije / if(c == 0) printf("\nzadati brojevi su isti!!!\n"); else printf("\nveci od dva zadata broja je broj %d\n\n", c); return 0; int max(int x, int y) { if(x == y) return 0; else return ((x>y)?x:y);

Primjer 2 / Odredjivanje najveceg od 4 broja pomocu odgovarajucih funkcija / #include <stdio.h> int max(int x, int y); int max4(int x, int y, int z, int w); main( ) { int a, b, c, d; printf("\nzadati cetiri cela broja: "); scanf("%d%d%d%d", &a, &b, &c, &d); printf("\nnajveci od cetiri zadata broja je %d\n\n", max4(a,b,c,d)); return 0; int max(int x, int y) { return ((x>=y)?x:y); int max4 (int x, int y, int z, int w) { return (max(max(x,y), max(z,w)));

Primjer 3 / Odredjivanje faktorijela pomocu iterativne funkcije / #include <stdio.h> #define OPSEG 12 / da faktorijel broja bude u opsegu long / long ifakt(int x); main() { int broj; do { printf("\nunesite ceo broj u opsegu od 1 do %d: ", OPSEG); scanf("%d", &broj); while(broj<1 broj>opseg); printf("\nfaktorijel broja %d je %ld\n\n", broj, ifakt(broj)); return 0; long ifakt(int x) { long rezultat = 1; while(x>1) { rezultat =x; x--; return rezultat;

Primjer 4 / Izracunavanje faktorijela zadatog broja pomocu rekurzivne funkcije / #include <stdio.h> #define OPSEG 12 / da faktorijel broja bude u opsegu long / long rfakt(int x); main() { int broj; do { printf("\nunesite ceo broj u opsegu od 1 do %d: ", OPSEG); scanf("%d", &broj); while(broj<1 broj>opseg); printf("\nfaktorijel broja %d je %ld\n\n", broj, rfakt(broj)); return 0; long rfakt(int x) { return ((x>1)? (x rfakt(x-1)) : 1);

Primjer 5 //Crtanje na ekranu okvira zadatih dimenzija #include <stdio.h> #define HLIN '-' //znak horizontalna crta okvira #define VLIN ' ' //znak vertikalna crta okvira #define UGAO '+' //znak za ugao okvira #define PRAZNO ' ' //prazan znak #define MAX1 50 //dozvoljena duzina okvira #define MAX2 20 //dozvoljena sirina okvira void hokvir(int l); void vokvir(int l); void znakovi(int n, char c);

main() // NASTAVAK { int i, duzina, sirina; do { printf("\nunesite duzinu okvira (od 1 do %d): ",MAX1); scanf("%d", &duzina); while(duzina<1 duzina>max1); do { printf("\nunesite sirinu okvira (od 1 do %d): ",MAX2); scanf("%d", &sirina); while(sirina<1 sirina>max2); //Stampanje gornjeg dela okvira hokvir(duzina); //Stampanje srednjeg dela okvira for(i=0; i<sirina; i++) vokvir(duzina); //Stampanje donjeg dela okvira hokvir(duzina); getchar(); getchar(); return 0;

void hokvir(int l) { putchar(ugao); znakovi(l, HLIN); putchar(ugao); putchar('\n'); void vokvir(int l) { putchar(vlin); znakovi(l, PRAZNO); putchar(vlin); putchar('\n'); void znakovi(int n, char c) { while(n>0) { n--; putchar(c); // NASTAVAK

Izracunavanje stepena broja