SVET PROGRAMIRANJA
  • Početna
  • WEB APLIKACIJE
    • Popularni programski jezici danas
    • Klase za stil naslovne strane
    • Trendovi u programiranju
    • Internet stvari
    • Kreiranje web sajtova i web aplikacija >
      • Kreiranje web aplikacija
      • Kreiranje web aplikacija 2
      • ASP.NET Core web aplikacije >
        • ASP.NET Core web aplikacije uvod
        • Servisiranje statičkih web strana pomoću web servera
        • Kreiranje sql web api servisa koji čita podatke iz baze
        • Kreiranje kontrolera u asp.net web API aplikaciji
        • Komunikacija Javascript web aplikacije sa API serverom
      • Kreiranje web sajta >
        • Logo Kreator - naslovna
      • Kreiranje Django Web Aplikacije >
        • Kreiranje aplikacije na Heroku Web Platformi 2 >
          • Kreiranje Python Web Aplikacije-početak
        • Python Web Aplikacije
        • Logo Kreator - Kreiranje Naslovne strane
        • Django aplikacija i baza podataka
        • Kreiranje aplikacije na Heroku Web Platformi >
          • Dodavanje modula za registraciju >
            • Dodavanje web strane za logovanje
  • Algoritmi
    • Algoritmi početna - Učenje i Primeri
    • Matematički algoritmi >
      • Fibonačijev niz
      • Prosti brojevi i faktorizacija
      • Eratostenovo sito
      • Euklidov algoritam
      • Maksimalna suma podniza
      • Brzo stepenovanje
    • Strukture podataka >
      • Mapa učenja Strukture podataka
      • Uvod u strukture i unije
      • Uvod u vektore
      • Povezane liste
      • Stek (Stack)
      • Red(Queue)
      • Disjoint Set Union (DSU) strukture+
      • Osnovne strukture podataka
    • Sortiranje nizova >
      • Sortiranje objedinjavanjem
      • Brzo Sortiranje
    • Binarna pretraga
    • Rekurzija i dinamičko programiranje >
      • Rekurzivni algoritmi >
        • Hanojske kule
      • Uvod u dinamičko programiranje
      • Fibonacijev niz DP i memoizacija – objašnjenje i primeri
      • Osnovni DP obrasci >
        • DP: Problem ranca (Knapsack problem)
        • DP: Najduži zajednički podniz (LCS)
        • DP: Subset Sum -problem podskupa sa zadatom sumom
      • Napredni DP obrasci >
        • DP: Minimalan broj kovanica
        • Grid DP problem
        • Edit Distance DP
    • Zamena iteracija formulom
    • Grafovi i stabla >
      • Mapa učenja — Grafovi i stabla
      • Osnove i pretrage >
        • BFS i DFS (pretraga grafova)
        • Topološko sortiranje
        • Otkrivanje ciklusa u usmerenim grafovima
        • Najduži put u DAG-u (DP + topološko sortiranje)
      • Najkraći putevi >
        • Algoritmi grafovi Dijkstra-najkraći put
        • Bellman-Ford i Floyd-Warshall algoritmi
      • Minimalna stabla >
        • MST - Primov algoritam
        • Grafovi MST - Kruskalov algoritam
      • Grafovi Napredno >
        • Eulerovi putevi i ciklusi
        • Mostovi i Artikulisani čvorovi (Tarjanov algoritam)
        • SCC — Komponente jake povezanosti (Kosaraju i Tarjan)
        • DP na DAG-ovima — Primene
    • Napredne tehnike >
      • Podeli pa vladaj
      • Gramzivi algoritmi
  • Primeri - C,C++,Java,Python
    • Primeri iz programiranja – C, C++, Java, Python | Svet Programiranja
    • Osnovni primeri >
      • Podaci-primeri
      • Operatori-primeri
      • Grananje u programu - primeri
      • Petlje primeri >
        • Petlje - osnovni primeri
        • Ugnježdene petlje primeri
      • Stringovi - primeri
      • Nizovi primeri >
        • Nizovi-primeri
        • Sortiranje-primeri
        • Vektori i mape primeri
      • Matrice primeri
      • Funkcije u C/C++ jeziku -primeri
      • Primeri Algoritama >
        • Algoritmi-primeri >
          • Zamena iteracija formulom-primeri >
            • Nedostajući broj-uputstvo
        • Rekurzija-primeri >
          • Prvi i drugi na rang listi
        • Kombinatorika-primeri
        • Bektreking i gruba sila primeri
    • Dodatni primeri sa rešenjima >
      • Dodatni primeri sa rešenjima – algoritmi, petlje, grananje, OOP
      • Podaci i tipovi podataka-dodatni primeri
      • Dodatni primeri za vezbu - grananje u programu
      • Dodatni primeri iz petlji
      • Dodatni primeri za vezbu - Klase i objekti >
        • Ramovi za slike objekti-rešenje
        • Zadatak 2-Grupa radnika objekti
        • Salon Automobila rešenje
        • Zadatak 3. Kretanje automobila objekti-rešenje
        • Upravljanje porudžbinama u restoranu -rešenje zadatka
      • Kombinovani primeri za vezbu >
        • Zadatak 6-Interval-rešenje
    • Takmičenja-primeri >
      • Takmičenja primeri - vodič
      • Priprema za okružna takmičenja 1
      • Priprema za okružna takmičenja 2
      • Kvalifikacije za okružna takmičenja >
        • Datum sa najvećom zaradom-rešenje
        • Zbirovi nakon podele - rešenje
        • Zadatak Mešalica-rešenje
        • Zadatak Kuvar Rešenje
        • Zadatak Slovarica rešenje
        • Zadatak Note rešenje
        • Resenje zadatka Tačan Izraz
        • Zadatak Puž rešenje
        • Zadatak Seča Drva-rešenje
      • Opštinska takmičenja >
        • Zadatak Bejzbol Rešenje
      • Okružna takmičenja >
        • Zadatak Milioner rešenje
        • Zadatak Dve Slike Na Papiru
      • Priprema za državna takmičenja
      • Priprema za više nivoe takmičenja >
        • Priprema za drzavno takmičenje i SIO >
          • Zadatak Aritmetički trougao-rešenje
          • Obilazak konja-zadatak
          • Reči u mreži zadtak-rešenje
        • Interaktivni Algoritmi >
          • Zadatak Joker rešenje
          • Zadatak Boja rešenje
          • Zadatak Maksimizacija BTC
    • Objektno programiranje-primeri >
      • Klase i objekti - primeri
    • Testovi >
      • Testovi i kontrolni zadaci — vežbanje, mini-testovi i priprema
      • Kontrolni podaci
      • Kontrolni selekcije
      • Kontrolni petlje
      • Kontrolni - objekti i metode
      • Kontrolni Nizovi
  • Programski jezici
    • Programski jezici vodič
    • C >
      • C programski jezik
      • Uvod u programski jezik C
      • Elementi jezika C
      • Podaci u C jeziku
      • Operatori u C jeziku
      • Grananje u programu u C jeziku
      • Petlje u C programskom jeziku >
        • Petlje u programskom jeziku C
        • Ugnježdene petlje u C
      • Nizovi u jeziku C >
        • Nizovi u jeziku C
        • Dvodimenzionalni nizovi - matrice
        • Dvodimenzioni dinamički nizovi-matrice
      • C Stringovi
      • Pokazivači u C jeziku
      • Funkcije u C
    • C++ >
      • C++ programski jezik
      • Uvod u programski jezik C++
      • Podaci u C++ jeziku
      • Operatori u C++ jeziku
      • Grananje u programu u C++
      • Petlje u C++ programskom jeziku >
        • Petlje u programskom jeziku C++
        • Ugnježdene petlje u C++
      • Nizovi u C++ jeziku >
        • Nizovi u jeziku C++
        • Dinamički niz-vector
        • Rečnik podataka-mape u C++
        • Dvodimenzionalni nizovi - matrice u c++
        • Dvodimenzioni dinamički nizovi u c++
      • Stringovi u C++ jeziku
      • Pokazivači u C++
      • Funkcije u C++
    • C# >
      • C# – lekcije, primeri i vežbe
      • Uvod u C#
      • Kreiranje jednostavne aplikacije u C#
      • LINQ i Lambda izrazi u C#(Sharp)-u
      • Napredni C#(Sharp) primer
      • Konekcija sa bazom u C#-primer
      • Primer sa MySql bazom podataka
      • Kreiranje Windows Form App Sa SQLServer Bazom
    • JAVA >
      • Java – lekcije, primeri i zadaci
      • Uvod u Javu
      • Java osnove >
        • Podaci u JAVA programskom jeziku
        • Operatori u JAVI
        • Grananje u programu u programskom jeziku Java
        • Petlje u Javi
        • Nizovi u Javi
      • Objektno programiranje >
        • Klase i objekti
        • Metode i objekti
        • Nasleđivanje klasa
        • Apstraktne klase i interfejsi
      • Grafika u JAVI >
        • Grafika u Javi uvod
        • Grafički korisnički interfejs(GUI)
        • Događaji u JAVI
        • Crtanje u prozoru
        • Animacije u Javi-primer
        • Kreiranje 2D igrice u JAVI
        • Grafika u Javi-primer
        • Aplikacije u Javi-primeri
      • Simulacije u fizici >
        • Java i simulacije u fizici
        • Klase i objekti sa primenom u fizici
        • Upotreba ciklusa i nizova u simulacijama iz fizike
        • Primeri simulacija u EJS-u
    • Processing >
      • Processing – lekcije i primeri
      • Processing - uvod
      • Osnove processinga sa Javom
      • Processing i mikrobit
      • Vektori u Processing-u >
        • Opracije sa vektorima
      • Processing u 2D >
        • Kosi hitac u Processing-u
        • Primer kosog hica u processingu
        • Strma ravan u Processing-u
        • Analiza klizanja tela niz strmu ravan primer
        • Animacija Kružnog kretanja
      • Processing u 3D >
        • Uvod u 3D processing
        • Kretanje 3D objekata u processing-u
    • Arduino i ESP32 programiranje >
      • Arduino i ESP32 programiranje
      • Arduino programiranje >
        • Arduino Uno – Uvod
        • Arduino LDR Vežba-Prikaz osvetljenja
        • Arduino senzor temperature
        • DC motor-Upravljanje sa arduinom
      • ESP32 programiranje >
        • Uvod u ESP32
        • ESP32: Ultrazvučni senzor
        • ESP32-Primena kod servo motora
        • ESP32 Pokretanje pumpe za vodu
    • Python >
      • Uvod u python
      • Osnovni Python >
        • Python Osnovni Tutorijal — Početna za lekcije i primere
        • Python osnove >
          • Python za početnike – Instalacija i Prvi Program
          • Prvi program u python-u
          • Aritmetičke operacije u python-u
          • Mini projekti za početnike
          • Promenljive i tipovi podataka
          • Python input() — unos podataka za početnike
          • Formatiranje teksta-F string
          • Mini projekat-python
        • Kontrola toka programa >
          • Python grananje i logički operatori — if / elif / else
          • Grananje u Pythonu — if, elif, else | Svet Programiranjai
          • Mini zadaci- Temperatura i kviz
          • Petlje - while,for
          • Iteracije i osnovni algoritmi u Python-u
          • Mini zadaci — Petlje (for i while)
          • Nizovi i liste u python-u
          • Mini projekat: igra „Pogodi broj“
        • Funkcije i modularno programiranje >
          • Python funkcije
          • Python parametri i povratne vrednosti
          • Python opseg promenljivih
          • Modularno programiranje- moduli i import
        • Mini projekti i praktične vežbe >
          • Projekat: Pogodi broj
          • Mini projekat: Organizacija programa u module
          • Mini projekat — Brojač bodova i statistika
          • Mini projekat — Tekstualni meni
          • Mini projekat — Simulacija semafora
          • Završni mini projekat — Digitalni brojač
      • MycroPython(microbit) >
        • Micro:bit — MicroPython
        • Uvod i osnovni programi >
          • Uvod u micropython
          • MicroPython: LED matrica — prikaz teksta i slika na micro:bit-u
          • MicroPython — Dugmad
        • Osnove programiranja (MicroPython) >
          • MicroPython — Petlje i vreme
          • MicroPython – promenljive i funkcije
          • MicroPython – random i algoritmi
        • Senzori i ulazi >
          • MicroPython — Senzori
          • MicroPython: kompas i temperatura
          • MicroPython – dodatni senzori i aktuatori
        • Komunikacije i Projekti >
          • MicroPython: radio komunikacija
          • MicroPython: radio projekti
          • MicroPython: mini projekti
          • MicroPython – serial i Processing
      • Python + Processing
      • Python za web
      • Projekti
    • Mikrobit i programiranje >
      • Microbit – Učenje programiranja za osnovce
      • Programiranje mikrobita snove >
        • Uvod u mikrobit
        • Naredbe u Makecode-u
        • Palete komandi Variables, Led. Temperatura i osvetljenje
        • Radio veza na mikrobitu
        • Upotreba promjenljivih i kontrolnih naredbi u programima
        • Kontrolne naredbe u programima mikrobita
        • Petlje-mikrobit
      • Programiranje mikrobita napredno >
        • Igrice i mikrobit
        • Mikrobit projekti i radionice
  • Politika Privatnosti
  • Linkovi
  • Učenje na daljinu
    • Učenje na daljinu-osnovci takmicari

Srpski | English

FUNKCIJE U PROGRAMSKOM JEZIKU C/C++


Da bi ste pročitali članak o rekurzivnim funkcijama pređite na stranu: Rekurzivni algoritmi

1. Zamena mesta

Učitati dava cela broja X i Y. Napraviti funkciju koja menja mesta dve celobrojne promenljive. Upotrebiti ovu funkciju i zameniti vrednosti promenljivama X i Y.

2. Da li je broj prost

Napraviti funkciju koja određuje da li je neki broj prost. Uneti prirodan  broj i ispitati da li je prost.

3. Ispisivanje niza

Učitati n. Zatim učitati niz od n elemenata. Napraviti posebnu metou za njegovo ispisivanje. Koristeći tu metodu ispisati elemente niza na ekranu.

4. Izdvajanje parnih elemenata niza

Učitati niz od n elemenata. Broj n, kao i elemente niza unosi korisnik. Napraviti metodu koja prepisuje iz početnog niza parne elemente. Iskoristiti napravljenu metodu da bi ste iz početnog niza izdvojili parne elemente.

5. Broj ponavljanja određenog karaktera

Uneti proizvoljan tekst sa tastature. Napraviti posebnu funkcija koja broji prosleđeni karakter. Iskoristiti funkciju za određivanje broja ponavljanja slova "p" u unetom tekstu.

6. Računanje faktorijela od n

Napraviti funkciju koja racuna faktorijel broja n. Unutar glavne funkcije ucitati n i iskoristiti prethodnu napravljenju funkciju za izracunavanje faktorijela tog broja.

Uneti broj, npr. 5. Pozvati novu funkciju koja računa faktorijel i proslediti joj n kao parametar. Funkcija Faktorijel: Proveriti da li je n == 0 i ako jeste vratiti 1 (jer je 0! = 1). U nastavku kreirati proizvod kroz petlju, tako da se u svakom ciklusu prethodni proizvod pomnoži sa tekućom vrednošću promenljive i. Kontrolnu promenljivu umanjivati za 1, počevši od n pa do 1.

<!-- C solution -->
#include <stdio.h>

/* Rešenje za programski jezik C (kompajlabilno u C89/C99 i novijim) */

int faktorijel(int n)
{
int i;
int f;
if (n == 0)
{
/* 0! = 1 */
return 1;
}
if (n < 0)
{
/* Negativan faktorijel nije definisan u ovom zadatku */
return -1; /* indikator greške */
}
f = 1;
for (i = n; i > 0; i--)
{
f = f * i;
}
return f;
}

int main(void)
{
int n, f;
printf("Unesite neki broj n: ");
if (scanf("%d", &n) != 1)
{
printf("Neispravan unos\n");
return 1;
}

if (n >= 0)
{
f = faktorijel(n);
printf("Faktorijel iznosi %d\n", f);
}
else
{
printf("Ne mozete uneti negativan broj\n");
}

return 0;
}

<!-- C++ solution -->
#include <iostream>

/* Rešenje za programski jezik C++ (kompajlabilno sa modernim C++ kompajlerima) */

unsigned long long factorial(int n)
{
if (n == 0) return 1ULL; /* 0! = 1 */
if (n < 0) return 0ULL; /* indikator greške, ovde vraćamo 0 */
unsigned long long f = 1ULL;
for (int i = 1; i <= n; ++i)
{
f *= (unsigned long long)i;
}
return f;
}

int main()
{
int n;
std::cout << "Unesite neki broj n: ";<br>
if (!(std::cin >> n))
{
std::cout << "Neispravan unos\n";
return 1;
}

if (n < 0)
{
std::cout << "Ne mozete uneti negativan broj\n";
return 0;
}

unsigned long long result = factorial(n);
std::cout << "Faktorijel iznosi " << result << std::endl;
return 0;
}

7. Zbir faktorijela prvih n prirodnih brojeva

​Sabrati sve faktorijele od 1 do n, n unosi korisnik

8. Dnevnice

Mihajlo  je zaposlen honorarno i za svoj rad ostvaruje zaradu na dnevnom nivou. Datume i vrednost zarade toga dana on zapisuje u svoju svesku jer o tome vodi evidenciju. Napraviti program koji će pomoći Mihajlu da za učitane vrednosti datuma sa zaradom koje se unose tako da se u jednom redu može učitati po jedan datum sa dnevnom zaradom. Napraviti funkciju koja iz prosleđenog niza dnevne zarade izdvaja datume i zarade u dva posebna niza u kojima se ovi podaci definišu, datum kao string, a zarada kao realan broj. Datum se unosi u formatu dd_mm__gggg(datum, mesec,godina)

Primer:
Ulaz:

12_2_2021   2045.33
23_8_2021   1034.66
15_4_2021   1567.99

Izlaz:
Niz1:
12.02.2021
23.08.2021
15.04.2021

Niz2:
2045.31
1034.66
1567.99



9. Logovanje

Napraviti metodu(funkciju) za logovanje korisnika na osnovu unošenja korisničkog imena i lozinke. Dozvoliti korisniku da najviše 3 puta pokuša unošenje lozinke. Metoda treba da da odgovor da li je korisnik uspešno ulogovan ili nije. Funkciju pozvati iz glavne (main)  metode. Ako metoda vrati da je korisnik ulogovan, onda ispisati poruku: "Korisnik je uspešno ulogovan", u suprotnom napisati "Korisnik nije uspešno ulogovan". Poznato je da je tačna kombinacija korisničkog imena i lozinke: admin korisnik.
​
Primer:
Ulaz
:
Uneste vaše korisničko ime i šifru:
"Mika"
"korisnik1"
Ponovite unos netačna lozinka
"admin"
"korisnik"
Izlaz: 
Korisnik je uspešno ulogovan

10. Određivanje maksimuma

​Napraviti funkciju koja određuje maksimum dva cela broja koji su prosleđeni kao parametri funkcije.
Učitati dva cela broja i odrediti njihov maksimum koristeći prethodno definisanu funkciju.

Kreirati funkciju "maksimum()", koja kao parametre prima dva cela broja, a i b, a zatim, unutar funkcije ispitati koji je od njih veći.

Ako je "a" veći, funkcija treba kao povratnu vrednost da vrati podatak "a", a u suprotnom "b".

Unutar glavne(main) funkcije, uneti dva cela broja, a zatim pozvati prethodno kreiranu funkciju za određivanje maksimuma, da bi se on odredio. Odštampati tu vrednost u nastavku programa.

#include < stdio.h>

/*Rešenje za programski jezik C*/

int maksimum(int a, int b)
{
if(a>b)
{
return a;
}
else
{
return b;
}
}

int main()
{
int a,b,maxAB;
printf("a=?,b=?\n");
scanf("%d%d",&a,&b);
maxAB = maximum(a,b);
printf("Maksimum je %d",maxAB);
return 0;
}

11. Određivanje da li je broj prost

Napraviti funkciju koja ispituje da li je broj koji joj je prosleđen kao parametar, prost.
Učitati ceo broj i odrediti da li je prost koristeći prethodno definisanu funkciju.
Više o prostim brojevima pročitajte na web strani: 
Prosti brojevi i faktorizacija
#include < stdio.h>

/*Rešenje za programski jezik C*/

int prost(int a)
{
int res=1;
if(a==1 || a==2){
return 1;
}
int d=2;
while(d < a){
if(a % d == 0){
res=0;
break;
}
d++;
} return res;
}

int main()
{
int x;
printf("x=?\n");
scanf("%d",&x);
if(prost(x)){
printf("Broj %d je prost",x);
}
else{
printf("Broj %d nije prost",x);
}
return 0;
}

12. Ispisivanje bitova sa leva na desno

​Napisati funkciju koja ispisuje bitove od x sa  leva na desno.

Kreirati funkciju "bitovi()", koja kao parametar prima ceo broj "a".

Unutar funkcije upotrebom petlje kreirati stepene broja 2, počev od 215, a zatim smanjivati izložilac kroz cikluse.

Ispitati u svakom ciklusu, da li je taj stepen broja dva manji od ostatka broja, koji je u početku jednak celom poslatom broju "a".

Ako jeste, štampati 1 kao bit, ako nije štampati nulu. Preračunati ostatak broja koji ostane kad od prethodnog ostatka oduzmemo trenutni stepen broja 2.

U glavnoj "main" funkciji pozvati prethodno napravljenu funkciju da se izvrši.

#include < stdio.h>

/*Rešenje za programski jezik C*/

int bitovi(int a)
{
int ost = x;//7
for(int i = 15;i >= 0;i--){
int a=(int)pow(2,i);
if(a <= ost){
printf("1 ");
ost=ost % a; //a=4, ost=7%4=3; a=2, ost=3%2=1; a=1, ost=1%1=0
}
else{
printf("0 ");
}
}
printf("\n");
}

int main()
{
int x;
printf("x=?\n");
scanf("%d",&x);
bitovi(x);
return 0;
}

13. Zaokruživanje na K decimala.

​Napisati funkciju kojom se ispisuje količnik prirodnih brojeva M/N na k decimala

Učitati tri cela broja M,N i K.(npr. 13,3,2)

Naći količnik M/N,(npr.13/3=4.333333), a kao tip podataka odabrati double ili float, kako bi se sačuvale decimale.

Dobijeni broj pomnožiti sa 10K, a zatim taj broj pretvoriti u ceo broj, kako bi on sadržao i cifre rezultata i cifre koje treba da budu prikazane posle decimalne tačke(npr. 433).

Izvući iz ovog broja i celobrojni rezultat, deljenjem sa 10K, kao i decimalni deo traženjem ostatka deljenja sa 10K.

Ispisati prvo celobrojni deo, zatim staviti "." i u nastavku dodati decimalni deo.

#include < stdio.h>

/*Rešenje za programski jezik C*/

int main()
{
int M,N,K,rez,koef;
double rezD;
printf("M=?,N=?,K=?\n");
scanf("%d%d%d",&M,&N,&K); //13,3,2
rezD=(double)M/N; //4.333333
printf("rez=%f\n",rezD);
koef=(int)pow(10,K); //100
rez=rezD*koef; //433
rezD=(double)rez/koef; //4.3300000
printf("rez=%g\n",rezD);
int br,dec;
br=rez/koef;//4
dec=rez%koef;//33
printf("%d.%d\n",br,dec);
}

14. Računanje kombinacija.

Napisati program kojim se za date prirodne brojeve n,k,p izračunava
S=Cn k-Cn k+1 +..+(-1)p*Cn k+p,
po formuli za računanje kombinacija
Rešenje

15. Bit na zadatoj poziciji.

Napisati funkciju koja izveštava da li je na poziciji poz, argumenta funkcije(parametra) X nalazi 1.Pozicije bitova su numerisane, s desna ulevo, počev od pozicije 1. 

16. Broj u inverznom poretku.

Ako je broj M1 dobijen od broja M zapisom njegovih cifara u inverznom poretku, napisati program kojim se štampaju svi parovi trocifrenih brojeva(a,b) koji imaju svojstvo: Ako je A*B=C, to je A1*B1=C1. Na primer:
312 * 221 = 68952
213 * 122 = 25986

17. Najbliži broj koji zadovoljava uslov.

Ako S(n) označava zbir cifara u dekadnom zapisu broja n, odrediti n takav da je najbliži manji broj od 2003, za koji važi jednakost:
n+S(n)+S(S(n))+S(S(S(n)))+S(S(....S(n)....)=2003

18. Slova u novom poretku.

U jednoj državi, u reformističkom rasploženju, izmenjen je redosled velikih slova alfabeta na sledeći način:
"MILOSCGRABDEFHJKNPQTUVWXYZ"
a) Napisati funkciju koja prema novom poretku slova poredi dva stringa
b) testirati funkciju tako što će se niz imena novoimenovanih ambasadora štampati u poretku definisanom po novom alfabetu

Kombinovani zadaci sa upotrebom funkcija

Zadatak 1: Pomeri elemente niza ulevo (rotacija)

Napišite funkciju u C jeziku koja pomera sve elemente niza za jedno mesto ulevo (ciklična rotacija). Funkcija treba da modifikuje niz in-place i pri tome poslednji element treba da postane prethodno prvi element.

  • Kreirajte funkciju ciklus_levo koja prima parametre int A[] i int n.
  • U main funkciji: pročitajte veličinu n, unesite n elemenata niza, pozovite ciklus_levo i zatim prikažite rezultat pozivom pomoćne funkcije stampaj_niz.
  • Obratite pažnju na ivične slučajeve: n <= 1 (niz se ne menja).

Kratko objašnjenje zadatka:

Cilj je da demonstrirate kako se niz menja direktno u funkciji (prosleđivanjem pokazivača na prvi element) i da razumete jednostavnu algoritamsku operaciju pomeranja elemenata (O(n) vremenska složenost).

Uputstvo (koraci):

  1. Pročitajte celobrojnu vrednost n.
  2. Alocirajte/definišite niz od n elemenata i pročitajte njihove vrednosti.
  3. U funkciji ciklus_levo(A, n) sačuvajte prvi element u privremenu promenljivu, pomerite elemente A[1]..A[n-1] ulevo, i poslednjem mestu dodelite sačuvani prvi element.
  4. Pozovite pomoćnu funkciju stampaj_niz(A, n) za ispis rezultata.
  5. Vodite računa o ivicama: ako je n <= 1 funkcija treba odmah da se vrati.
#include <stdio.h>
#include <stdlib.h>

/* Funkcija ciklicnog pomeranja niza ulevo za jedno mesto */
void ciklus_levo(int A[], int n) {
    if (n <= 1) return;

    int b = A[0];
    for (int i = 1; i < n; i++) {
        A[i - 1] = A[i];
    }
    A[n - 1] = b;
}

void stampaj_niz(int A[], int n) {
    printf("stampaj_niz:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", A[i]);
    }
    printf("\n");
}

int main() {
    int n;
    if (scanf("%d", &n) != 1) return 0;

    /* Napomena: koristi se VLA (C99). Za starije standarde koristite malloc. */
    int niz[n];
    for (int i = 0; i < n; i++) {
        printf("Unesi %d. element niza\n", (i + 1));
        scanf("%d", &niz[i]);
    }

    ciklus_levo(niz, n);
    stampaj_niz(niz, n);

    return 0;
}

Zadatak 2: Sortiranje niza metodom Bubble Sort

Napišite C program koji sortira niz celih brojeva koristeći standardni Bubble Sort algoritam. Implementirajte funkciju bubble_sort koja prima niz i njegovu dužinu i sortira elemente in-place. U main-u pročitajte veličinu niza, učitajte elemente, pozovite sortiranje i prikažite rezultat.

  • Kreirajte funkciju bubble_sort(int A[], int n).
  • Dodajte pomoćnu funkciju stampaj_niz za ispis niza.
  • Optimizujte Bubble Sort da izlazi ranije ako je niz već sortiran (koristeći flag).

Kratko objašnjenje zadatka:

Bubble sort poredi susedne parove i, po potrebi, ih zamenjuje tako da se najveći element "izbubbles" na kraj u jednoj iteraciji. Ponoviti postupak dok niz nije sortiran. Algoritam je jednostavan za implementaciju (stabilan), ali ima vremensku složenost O(n²).

#include <stdio.h>
#include <stdlib.h>

/* Pomoćna funkcija za ispis niza */
void stampaj_niz(int A[], int n) {
printf("stampaj_niz:\n"); for (int i = 0; i < n; i++) {
printf("%d ", A[i]);
} printf("\n");
} /* Bubble sort (optimizovana verzija sa flagom za raniji izlaz) */ void bubble_sort(int A[], int n) {
for (int pass = 0; pass < n - 1; pass++) {
int swapped = 0; for (int i = 0; i < n - pass - 1; i++) {
// Ako je element na poziciji i veći od sledećeg, zamenimo if (A[i] > A[i + 1]) {
int temp = A[i]; A[i] = A[i + 1]; A[i + 1] = temp; swapped = 1;
}
} if (!swapped) {
// Nema zamena u ovoj prolazu — niz je već sortiran break;
}
}
} int main() {
int n; // Učitavanje veličine niza scanf("%d", &n); // Napomena: koristi se VLA (C99). Za starije standarde koristite malloc. int niz[n]; for (int i = 0; i < n; i++) {
printf("Unesi %d. element niza\n", (i + 1)); scanf("%d", &niz[i]);
} // Sortiranje bubble_sort(niz, n); // Ispis sortiranog niza stampaj_niz(niz, n); return 0;
}

Objašnjenje rešenja

  • Princip: Bubble sort poredi susedne elemente i zamenom većeg sa manjim pomera veće elemente ka kraju.
  • Optimizacija: Koristimo promenljivu swapped kako bismo prekinuli izvođenje ako je u celom prolazu bilo nula zamena — to znači da je niz već sortiran i možemo ranije izaći.
  • In-place: Sortiranje menja sadržaj prosleđenog niza direktno (nije potrebna dodatna memorija osim privremenog temp).
  • Stabilnost: Bubble sort je stabilan algoritam — relativni poredak jednakih elemenata se čuva.
  • Vremenska složenost:
    • Najgori i prosečni slučaj: O(n²).
    • Najbolji slučaj (već sortiran niz, zahvaljujući flagu): O(n).
  • Prostor: O(1) dodatne memorije (samo temp i flag).
  • Napomena o kompatibilnosti C: ako želite portabilnost na stare C kompilatore, umesto VLA koristite malloc i free.

Proširenje (opciono): Implementirajte verziju koja sortira u opadajućem redosledu ili koja vraća broj prolaza potrebnih za sortiranje.

Zadatak 3: Obrni niz (reverse)

Napišite program u C koji implementira funkciju koja obrće elemente celobrojnog niza in-place. Funkcija treba da zameni elemente tako da prvi postane poslednji, drugi postane pretposlednji itd. U main-u pročitajte veličinu niza, unesite elemente, pozovite funkciju za obrtanje i prikažite rezultat.

  • Kreirajte funkciju obrni_niz(int A[], int n) koja menja niz direktno.
  • U main-u: učitajte n, popunite niz, pozovite obrni_niz i zatim ispišite niz pomoću stampaj_niz.
  • Obratite pažnju na ivične slučajeve (n <= 1).

Kratko objašnjenje zadatka:

Cilj je demonstrirati manipulaciju elementima niza korišćenjem dva indeksa (levo/desno) i zamenu elemenata dok se ne pređu. Algoritam radi in-place sa O(1) dodatne memorije i vremenskom složenošću O(n).

#include <stdio.h>
#include <stdlib.h>

/* Pomoćna funkcija za ispis niza */
void stampaj_niz(int A[], int n) {
printf("stampaj_niz:\n"); for (int i = 0; i < n; i++) {
printf("%d ", A[i]);
} printf("\n");
} /* Funkcija koja obrće niz 'in-place' koristeći dve pokazivačke pozicije */ void obrni_niz(int A[], int n) {
// Ako je niz prazan ili ima jedan element, nema šta da se menja if (n <= 1) {
return;
} int levo = 0; int desno = n - 1; while (levo < desno) {
int tmp = A[levo]; A[levo] = A[desno]; A[desno] = tmp; levo++; desno--;
}
} int main() {
int n; // Učitavanje veličine niza scanf("%d", &n); // Napomena: koristi se VLA (C99). Za starije standarde koristite malloc. int niz[n]; for (int i = 0; i < n; i++) {
printf("Unesi %d. element niza\n", (i + 1)); scanf("%d", &niz[i]);
} // Poziv funkcije koja obrće niz obrni_niz(niz, n); // Ispis rezultata stampaj_niz(niz, n); return 0;
}

Objašnjenje rešenja

  • Funkcija obrni_niz koristi dva indeksa: levo počinje od nultog indeksa, a desno od poslednjeg elementa.
  • U while petlji dok god je levo < desno zamenjujemo vrednosti na tim pozicijama pomoću privremene promenljive tmp, zatim pomeramo levo++ i desno--. Time je zagarantovano da svaki par bude zamenjen samo jednom.
  • Algoritam radi in-place (bez dodatnih velikih buffera) i koristi O(1) dodatne memorije. Vremenska složenost je O(n) jer svaki element učestvuje u najviše jednoj zamenI.
  • Edge cases: ako je n <= 1 funkcija odmah vraća jer nema promena; ako je n veoma veliko razmotrite korišćenje dinamičke alokacije umesto VLA radi portabilnosti.
  • Prednosti pristupa: jednostavnost, efikasnost i mala potrošnja memorije. Pogodno za primenu kada treba brzo obrnuti redosled elemenata.

Proširenje (opciono): Napišite verziju koja vraća novi alocirani niz (ne menja original), ili generičku funkciju koja obrće niz tipa void* pomoću funkcije za zamenu elemenata (korisno za rad sa drugim tipovima).


Prethodno
​|< Matrice primeri
Sledeće
Algoritmi-primeri​​ >|

Algoritmi
Matrice
Java
Linkovi
​Politika Privatnosti
Kontakt



© 2025 by Slobodan svetprogramiranja.com

Sva prava zadržana

  • Početna
  • WEB APLIKACIJE
    • Popularni programski jezici danas
    • Klase za stil naslovne strane
    • Trendovi u programiranju
    • Internet stvari
    • Kreiranje web sajtova i web aplikacija >
      • Kreiranje web aplikacija
      • Kreiranje web aplikacija 2
      • ASP.NET Core web aplikacije >
        • ASP.NET Core web aplikacije uvod
        • Servisiranje statičkih web strana pomoću web servera
        • Kreiranje sql web api servisa koji čita podatke iz baze
        • Kreiranje kontrolera u asp.net web API aplikaciji
        • Komunikacija Javascript web aplikacije sa API serverom
      • Kreiranje web sajta >
        • Logo Kreator - naslovna
      • Kreiranje Django Web Aplikacije >
        • Kreiranje aplikacije na Heroku Web Platformi 2 >
          • Kreiranje Python Web Aplikacije-početak
        • Python Web Aplikacije
        • Logo Kreator - Kreiranje Naslovne strane
        • Django aplikacija i baza podataka
        • Kreiranje aplikacije na Heroku Web Platformi >
          • Dodavanje modula za registraciju >
            • Dodavanje web strane za logovanje
  • Algoritmi
    • Algoritmi početna - Učenje i Primeri
    • Matematički algoritmi >
      • Fibonačijev niz
      • Prosti brojevi i faktorizacija
      • Eratostenovo sito
      • Euklidov algoritam
      • Maksimalna suma podniza
      • Brzo stepenovanje
    • Strukture podataka >
      • Mapa učenja Strukture podataka
      • Uvod u strukture i unije
      • Uvod u vektore
      • Povezane liste
      • Stek (Stack)
      • Red(Queue)
      • Disjoint Set Union (DSU) strukture+
      • Osnovne strukture podataka
    • Sortiranje nizova >
      • Sortiranje objedinjavanjem
      • Brzo Sortiranje
    • Binarna pretraga
    • Rekurzija i dinamičko programiranje >
      • Rekurzivni algoritmi >
        • Hanojske kule
      • Uvod u dinamičko programiranje
      • Fibonacijev niz DP i memoizacija – objašnjenje i primeri
      • Osnovni DP obrasci >
        • DP: Problem ranca (Knapsack problem)
        • DP: Najduži zajednički podniz (LCS)
        • DP: Subset Sum -problem podskupa sa zadatom sumom
      • Napredni DP obrasci >
        • DP: Minimalan broj kovanica
        • Grid DP problem
        • Edit Distance DP
    • Zamena iteracija formulom
    • Grafovi i stabla >
      • Mapa učenja — Grafovi i stabla
      • Osnove i pretrage >
        • BFS i DFS (pretraga grafova)
        • Topološko sortiranje
        • Otkrivanje ciklusa u usmerenim grafovima
        • Najduži put u DAG-u (DP + topološko sortiranje)
      • Najkraći putevi >
        • Algoritmi grafovi Dijkstra-najkraći put
        • Bellman-Ford i Floyd-Warshall algoritmi
      • Minimalna stabla >
        • MST - Primov algoritam
        • Grafovi MST - Kruskalov algoritam
      • Grafovi Napredno >
        • Eulerovi putevi i ciklusi
        • Mostovi i Artikulisani čvorovi (Tarjanov algoritam)
        • SCC — Komponente jake povezanosti (Kosaraju i Tarjan)
        • DP na DAG-ovima — Primene
    • Napredne tehnike >
      • Podeli pa vladaj
      • Gramzivi algoritmi
  • Primeri - C,C++,Java,Python
    • Primeri iz programiranja – C, C++, Java, Python | Svet Programiranja
    • Osnovni primeri >
      • Podaci-primeri
      • Operatori-primeri
      • Grananje u programu - primeri
      • Petlje primeri >
        • Petlje - osnovni primeri
        • Ugnježdene petlje primeri
      • Stringovi - primeri
      • Nizovi primeri >
        • Nizovi-primeri
        • Sortiranje-primeri
        • Vektori i mape primeri
      • Matrice primeri
      • Funkcije u C/C++ jeziku -primeri
      • Primeri Algoritama >
        • Algoritmi-primeri >
          • Zamena iteracija formulom-primeri >
            • Nedostajući broj-uputstvo
        • Rekurzija-primeri >
          • Prvi i drugi na rang listi
        • Kombinatorika-primeri
        • Bektreking i gruba sila primeri
    • Dodatni primeri sa rešenjima >
      • Dodatni primeri sa rešenjima – algoritmi, petlje, grananje, OOP
      • Podaci i tipovi podataka-dodatni primeri
      • Dodatni primeri za vezbu - grananje u programu
      • Dodatni primeri iz petlji
      • Dodatni primeri za vezbu - Klase i objekti >
        • Ramovi za slike objekti-rešenje
        • Zadatak 2-Grupa radnika objekti
        • Salon Automobila rešenje
        • Zadatak 3. Kretanje automobila objekti-rešenje
        • Upravljanje porudžbinama u restoranu -rešenje zadatka
      • Kombinovani primeri za vezbu >
        • Zadatak 6-Interval-rešenje
    • Takmičenja-primeri >
      • Takmičenja primeri - vodič
      • Priprema za okružna takmičenja 1
      • Priprema za okružna takmičenja 2
      • Kvalifikacije za okružna takmičenja >
        • Datum sa najvećom zaradom-rešenje
        • Zbirovi nakon podele - rešenje
        • Zadatak Mešalica-rešenje
        • Zadatak Kuvar Rešenje
        • Zadatak Slovarica rešenje
        • Zadatak Note rešenje
        • Resenje zadatka Tačan Izraz
        • Zadatak Puž rešenje
        • Zadatak Seča Drva-rešenje
      • Opštinska takmičenja >
        • Zadatak Bejzbol Rešenje
      • Okružna takmičenja >
        • Zadatak Milioner rešenje
        • Zadatak Dve Slike Na Papiru
      • Priprema za državna takmičenja
      • Priprema za više nivoe takmičenja >
        • Priprema za drzavno takmičenje i SIO >
          • Zadatak Aritmetički trougao-rešenje
          • Obilazak konja-zadatak
          • Reči u mreži zadtak-rešenje
        • Interaktivni Algoritmi >
          • Zadatak Joker rešenje
          • Zadatak Boja rešenje
          • Zadatak Maksimizacija BTC
    • Objektno programiranje-primeri >
      • Klase i objekti - primeri
    • Testovi >
      • Testovi i kontrolni zadaci — vežbanje, mini-testovi i priprema
      • Kontrolni podaci
      • Kontrolni selekcije
      • Kontrolni petlje
      • Kontrolni - objekti i metode
      • Kontrolni Nizovi
  • Programski jezici
    • Programski jezici vodič
    • C >
      • C programski jezik
      • Uvod u programski jezik C
      • Elementi jezika C
      • Podaci u C jeziku
      • Operatori u C jeziku
      • Grananje u programu u C jeziku
      • Petlje u C programskom jeziku >
        • Petlje u programskom jeziku C
        • Ugnježdene petlje u C
      • Nizovi u jeziku C >
        • Nizovi u jeziku C
        • Dvodimenzionalni nizovi - matrice
        • Dvodimenzioni dinamički nizovi-matrice
      • C Stringovi
      • Pokazivači u C jeziku
      • Funkcije u C
    • C++ >
      • C++ programski jezik
      • Uvod u programski jezik C++
      • Podaci u C++ jeziku
      • Operatori u C++ jeziku
      • Grananje u programu u C++
      • Petlje u C++ programskom jeziku >
        • Petlje u programskom jeziku C++
        • Ugnježdene petlje u C++
      • Nizovi u C++ jeziku >
        • Nizovi u jeziku C++
        • Dinamički niz-vector
        • Rečnik podataka-mape u C++
        • Dvodimenzionalni nizovi - matrice u c++
        • Dvodimenzioni dinamički nizovi u c++
      • Stringovi u C++ jeziku
      • Pokazivači u C++
      • Funkcije u C++
    • C# >
      • C# – lekcije, primeri i vežbe
      • Uvod u C#
      • Kreiranje jednostavne aplikacije u C#
      • LINQ i Lambda izrazi u C#(Sharp)-u
      • Napredni C#(Sharp) primer
      • Konekcija sa bazom u C#-primer
      • Primer sa MySql bazom podataka
      • Kreiranje Windows Form App Sa SQLServer Bazom
    • JAVA >
      • Java – lekcije, primeri i zadaci
      • Uvod u Javu
      • Java osnove >
        • Podaci u JAVA programskom jeziku
        • Operatori u JAVI
        • Grananje u programu u programskom jeziku Java
        • Petlje u Javi
        • Nizovi u Javi
      • Objektno programiranje >
        • Klase i objekti
        • Metode i objekti
        • Nasleđivanje klasa
        • Apstraktne klase i interfejsi
      • Grafika u JAVI >
        • Grafika u Javi uvod
        • Grafički korisnički interfejs(GUI)
        • Događaji u JAVI
        • Crtanje u prozoru
        • Animacije u Javi-primer
        • Kreiranje 2D igrice u JAVI
        • Grafika u Javi-primer
        • Aplikacije u Javi-primeri
      • Simulacije u fizici >
        • Java i simulacije u fizici
        • Klase i objekti sa primenom u fizici
        • Upotreba ciklusa i nizova u simulacijama iz fizike
        • Primeri simulacija u EJS-u
    • Processing >
      • Processing – lekcije i primeri
      • Processing - uvod
      • Osnove processinga sa Javom
      • Processing i mikrobit
      • Vektori u Processing-u >
        • Opracije sa vektorima
      • Processing u 2D >
        • Kosi hitac u Processing-u
        • Primer kosog hica u processingu
        • Strma ravan u Processing-u
        • Analiza klizanja tela niz strmu ravan primer
        • Animacija Kružnog kretanja
      • Processing u 3D >
        • Uvod u 3D processing
        • Kretanje 3D objekata u processing-u
    • Arduino i ESP32 programiranje >
      • Arduino i ESP32 programiranje
      • Arduino programiranje >
        • Arduino Uno – Uvod
        • Arduino LDR Vežba-Prikaz osvetljenja
        • Arduino senzor temperature
        • DC motor-Upravljanje sa arduinom
      • ESP32 programiranje >
        • Uvod u ESP32
        • ESP32: Ultrazvučni senzor
        • ESP32-Primena kod servo motora
        • ESP32 Pokretanje pumpe za vodu
    • Python >
      • Uvod u python
      • Osnovni Python >
        • Python Osnovni Tutorijal — Početna za lekcije i primere
        • Python osnove >
          • Python za početnike – Instalacija i Prvi Program
          • Prvi program u python-u
          • Aritmetičke operacije u python-u
          • Mini projekti za početnike
          • Promenljive i tipovi podataka
          • Python input() — unos podataka za početnike
          • Formatiranje teksta-F string
          • Mini projekat-python
        • Kontrola toka programa >
          • Python grananje i logički operatori — if / elif / else
          • Grananje u Pythonu — if, elif, else | Svet Programiranjai
          • Mini zadaci- Temperatura i kviz
          • Petlje - while,for
          • Iteracije i osnovni algoritmi u Python-u
          • Mini zadaci — Petlje (for i while)
          • Nizovi i liste u python-u
          • Mini projekat: igra „Pogodi broj“
        • Funkcije i modularno programiranje >
          • Python funkcije
          • Python parametri i povratne vrednosti
          • Python opseg promenljivih
          • Modularno programiranje- moduli i import
        • Mini projekti i praktične vežbe >
          • Projekat: Pogodi broj
          • Mini projekat: Organizacija programa u module
          • Mini projekat — Brojač bodova i statistika
          • Mini projekat — Tekstualni meni
          • Mini projekat — Simulacija semafora
          • Završni mini projekat — Digitalni brojač
      • MycroPython(microbit) >
        • Micro:bit — MicroPython
        • Uvod i osnovni programi >
          • Uvod u micropython
          • MicroPython: LED matrica — prikaz teksta i slika na micro:bit-u
          • MicroPython — Dugmad
        • Osnove programiranja (MicroPython) >
          • MicroPython — Petlje i vreme
          • MicroPython – promenljive i funkcije
          • MicroPython – random i algoritmi
        • Senzori i ulazi >
          • MicroPython — Senzori
          • MicroPython: kompas i temperatura
          • MicroPython – dodatni senzori i aktuatori
        • Komunikacije i Projekti >
          • MicroPython: radio komunikacija
          • MicroPython: radio projekti
          • MicroPython: mini projekti
          • MicroPython – serial i Processing
      • Python + Processing
      • Python za web
      • Projekti
    • Mikrobit i programiranje >
      • Microbit – Učenje programiranja za osnovce
      • Programiranje mikrobita snove >
        • Uvod u mikrobit
        • Naredbe u Makecode-u
        • Palete komandi Variables, Led. Temperatura i osvetljenje
        • Radio veza na mikrobitu
        • Upotreba promjenljivih i kontrolnih naredbi u programima
        • Kontrolne naredbe u programima mikrobita
        • Petlje-mikrobit
      • Programiranje mikrobita napredno >
        • Igrice i mikrobit
        • Mikrobit projekti i radionice
  • Politika Privatnosti
  • Linkovi
  • Učenje na daljinu
    • Učenje na daljinu-osnovci takmicari
SVET PROGRAMIRANJA

Podešavanja kolačića

Koristimo kolačiće da bismo vam pružili najbolje moguće iskustvo. Takođe nam omogućavaju da analiziramo ponašanje korisnika kako bismo stalno poboljšavali veb lokaciju za vas.