Download as pdf or txt
Download as pdf or txt
You are on page 1of 18

Praktikum iz programiranja ‐ pomoćni materijal

IV Kontrola toka
if–else izraz
Uslovni if izraz ima sledeći oblik:
if(uslov)
naredba1;
else
naredba2;
 uslov mora biti neki logički izraz.
 u slučaju da je uslov tačan, izvršava se naredba1 a u suprotnom naredba2.
 if izraz se može pojaviti i bez else izraza.
 naredba može biti prosta naredba a može biti i složena naredba (blok) koja se dobije kada se više prostih
naredbi grupišu navođnjem vitičastih zagrada.
if(uslov)
{
naredba1_1;
naredba1_2;
...
}
else
{
naredba2_1;
naredba2_2;
...
}
Primer 1: Napisati program koji ako je uneti ceo broj negativan ispisuje odgovarajući komentar.
//Bez else.c
#include <stdio.h>
main()
{
int b;
printf("Unesite ceo broj: ");
scanf("%d",&b);
if (b < 0)
printf("Broj %d je negativan\n",b); //prosta naredba
}
Primer 2: Ako je uneti ceo broj paran onda ga pomnožiti sa 2, odštampati ga uz odgovarajući komentar, a ako nije
paran onda ga podeliti sa 5, odštampati ga uz odgovarajući komentar.
//Else blok.c
#include <stdio.h>
main()
{
int b; float novob;
printf("\tUnesite ceo broj: ");
scanf("%d",&b);
if (b%2==0)
{ // ako je paran ‐ blok naredba
printf("\tBroj %d je paran\n",b);
novob=b*2; // b=b*2
}
else // ako je neparan ‐ blok naredba
{
printf("\tBroj %d je neparan\n",b);
novob=(float)b/5; // kastovanje
}
printf("\tNova vrednost broja %d je %.2f \n",b,novob);
}
21
Praktikum iz programiranja ‐ pomoćni materijal
Else se odnosi na prvi neuparen if. Ako želimo drugačije moramo da navedemo vitičaste zagrade.
if (izraz) //prvo if if (izraz)
if (izraz1) naredba1 //drugo if {
else naredba2 if (izraz1) naredba1
}
Ovo else se odnosi na drugo if a ne na prvo if!
else naredba2
Tek sada se else odnosi na prvo if!!!

else-if izraz
if–else naredba ima samo dve grane – kada je uslov ispunjen i kada nije. Međutim nekada je potrebno ispitati više
uslova i u zavisnosti od njihovih vrednosti izvršavati određene naredbe. U tim slučajevima se koristi else-if izraz.
if (uslov1)
naredba1
else if (uslov2)
naredba 2
else if (uslov3)
naredba 3
else naredba
Primer 3: Napisati program koji ispituje da li je unešeni broj pozitivan, negativan ili je jednak nuli.
//Else if.c
#include <stdio.h>
main()
{
float x;
printf("\tUnesite realan broj: ");
scanf("%f",&x);
if(x > 0)
printf("\tBroj %.2f je pozitivan\n",x);
else if(x < 0)
printf("\tBroj %.2f je negativan\n",x);
else
printf("\tBroj %.2f je jednak nuli\n,x");
}
Primer 4: Analizirati sledeći program
//Analiza.c
#include <stdio.h>
main()
{
int b;
printf("Unesi ceo broj : "); Upozorenje!
 Voditi računa o tome da je = operator dodele a == je
scanf("%d", &b); operator poređenja na jednakost.
if (b = 0)  Ne mešati ta dva operatora!
printf("Broj je nula\n");
else if (b < 0)
printf("Broj je negativan\n");
else
printf("Broj je pozitivan\n");
}

Uslovni izraz - operator ?


U programskom jeziku C postoji operator ? (uslovni izraz) i to je jedini ternani operator, tj. ima tri operanda.
Uslovni izrazi obezbeđuju alternativni način pisanja if-else konstrukcije
if(uslov)
naredba1; može se zapisati kao (uslov) ? naredba1 : naredba2
else naredba2;
22
Praktikum iz programiranja ‐ pomoćni materijal
Primer 5: Promenljivoj maks dodeliti vrednost većeg između brojeva a i b.
Prvi način sa IF Drugi nači – sa operatorom ?
//Uslovni1.c //Uslovni2.c
#include <stdio.h> #include <stdio.h>
main() main()
{ {
float a,b,maks; float a,b,maks;
printf("\tUnesite dva realna broja: "); printf("\tUnesite dva realna broja: ");
scanf("%f%f",&a,&b); scanf("%f%f",&a,&b);
if(a>b) maks = (a>b)?a:b;
maks=a; printf("\tVeci je broj %.2f \n",maks);
else maks=b; }
printf("\tVeci je broj %.2f \n",maks);
}

Primer 6: Modifikovan prethodni primer. Predvideti slučaj da brojevi a i b mogu biti isti, štampati određeni
komentar.
//Uslovni3.c
#include <stdio.h>
int main()
{
float a,b;
printf("\tUnesite dva realna broja: ");
scanf("%f%f",&a,&b);
if(a>b)
printf("\tVeci je broj %.2f! \n",a);
else if(a<b)
printf("\tVeci je broj %.2f! \n",b);
else
printf("\tBrojevi %.2f i %.2f su jednaki!\n");
}

Switch
Naredba switch se naziva još i naredba višestrukog grananja. Ovom naredbom se proverava da li je neki izraz
jednak jednoj od više konstantnih celobrojnih vrednosti i u zavisnosti od toga, preduzima se odgovarajuća akcija.
Opšti oblik ove naredbe je:
switch (izraz)
{
case vrednost1:
naredbe1
break;
case vrednost2:
naredbe2
break;
...
default:
naredbeN
}
 svaka vrednost predstavlja određeni slučaj.
 ako neki slučaj odgovara vrednosti izraza, izvršavanje počinje od tog slučaja.
 u slučaju da izraz ima vrednost vrednost1, tada se izvršavaju naredbe1, u slučaju da ima vrednost2 tada se
izvršavaju naredbe2, a u slučaju da nema nijednu od ponuđenih vrednosti (default) tada se izvršavaju
naredbeN.
 slučaj označen sa default nije obavezan, ali ako se default ne navede i nijedan drugi slučaj ne odgovara
vrednosti izraza onda se neće izvršiti nikakva akcija

23
Praktikum iz programiranja ‐ pomoćni materijal
Kontrolni iskazi break, continue, goto
 Instrukcija break se koristi da se izađe iz instrukcije case unutar instrukcije switch, ali može i da se
koristiti da se izađe iz bilo koje petlje.
 Naredba continue se primenjuje sa ciljem da se preskoči jedna od iteracija u okviru petlje i najčešće je
kombinovana sa uslovnim izrazom if.
 Kontrolni iskaz goto omogućava skakanje iz jednog dela programa u drugi na mesto označeno labelom.
Izbegavati korišćenje ove naredbe.
Primer 7: Napisati program koji proverava da li je unešeni karakter razmak, tačka, tačka zapeta, znak - ili neki
neki drugi znak.
//Switch karakter.c
#include <stdio.h>
main()
{
char x; // deklarisemo promenljivu x kao jedan karakter
printf("\tProgram za uneseni karakter . ; ‐ ili razmak ispisuje taj karakter recima\n");
printf("\n\tUnesite karakter ");
scanf("%c", &x); // c je konverzioni karakter (tip char)
switch(x)
{
case ' ':printf("\tUneseni karakter je razmak\n");break;
case '.':printf("\tUneseni karakter je tacka\n");break;
case ';':printf("\tUneseni karakter je tacka zapeta\n");break;
case '‐':printf("\tUneseni karakter je znak minus\n");break;
default:printf("\tUneseni karakter nije nista od predvidjenog\n");
}
}
Primer 8: Koristeći switch napisati program koji ispisuje da li broj n pri deljenju sa 7 daje ostatak 5 ili 3, a ako je
ostatak neki drugi broj ipisuje se odgovarajuća poruku. Isprobati verziju bez naredbe break.
//switch_break.c Bez break
#include <stdio.h>
main()
{
int n,ost;
printf("Unesite prirodan broj n: ");
scanf("%d",&n); Sa break
ost=n%7;
switch(ost){
case 3:
printf("Deljenjem broja %d sa 7 dobija se ostatak 3\n",n);
// break;
case 5:
printf("Deljenjem broja %d sa 7 dobija se ostatak 5\n",n);
// break;
default:
printf("Deljenjem broja %d sa 7 ne dobija se kao ostatak ni 3, ni 5\n",n);
}
}

Logički operatori kod “switch” iskaza


Iskaz switch može biti korišćen u kombinaciji sa logičkim operatorima and ili or. Razlog je taj što ovi izrazi imaju
samo jednu od dve moguće vrednosti, tačno i netačno (true ili false). true i false su konstante (odgovaraju im
celobrojne vrednosti (1 i 0) pa kao takve mogu biti korišćenje kod switch iskaza. Međutim, nije praksa da se switch
iskaz koristi u ovu svrhu jer, pri korišćenju logičkih izraza, uvek postoje samo dve alternative, 0 i 1, a znamo da je
switch poželjno koristiti kada imamo mnogo više alternativa od dve.

24
Praktikum iz programiranja ‐ pomoćni materijal
Primer 9: Gradski prevoz je besplatan za sve osobe koje su mlađe od 12 ili starije od 56 godina. Napisati dve verzije
programa: koristeći IF i koristeći SWITCH. Predvideti unos godina ispod 0 i preko 120.

//Gradski prevoz1.c //Gradski prevoz2.c


#include<stdio.h>
#include<stdio.h>
main()
main()
{
{
int god;
int god;
opet:;
opet:;
printf("\n\tUnesite broj godina putnika (od 1 do 120
printf("\n\tUnesite broj godina putnika (od 1 do
godina): ");
120 godina): ");
scanf("%d", &god);
scanf("%d", &god);
if (god < 1 || god > 120)
if (god < 1 || god > 120)
{
{
printf("\n\tPreterali ste! Unesite ponovo\n");
printf("\n\tPreterali ste! Unesite ponovo\n");
goto opet; // koristićemo while petlju
goto opet; // koristićemo while petlju
}
}
if (god <= 12 || god >= 65)
switch(god <= 12 || god >= 65)
printf("\n\tKarta je besplatna\n");
{
else
case 1:
printf("\n\tPlacate punu cenu karte\n");
printf("\n\tKarta je besplatna\n");
}
break;
case 0:
printf("\n\tPlacate punu cenu karte\n");
}
}

25
Praktikum iz programiranja ‐ pomoćni materijal
ZADACI – RAZGRANATA STRUKTURA

1. Naći apsolutnu vrednosti celog broja.


//Apsolutna vrednost.c
#include<stdio.h>
main()
{
int a,b;
printf("\nUneti ceo broj a: "); scanf("%d", &a);
b=a;
if(a<0)
a=‐a;
printf("Apsolutna vrednost broja %d je %d\n",b,a);
}
2. Ako se dva broja razlikuju po znaku, treba ih sabrati, inače treba ih pomnožiti.
//Razlika broja po znaku.c
#include<stdio.h>
main()
{
float a,b,REZ;
printf("Uneti brojeve a i b: "); scanf("%f%f", &a, &b);
if(a*b>0)
REZ=a*b; // Razlikuju se po znaku
else
REZ=a+b; // Istog su znaka
printf("REZ = %.2f",REZ);
}
3. Proveriti parnost broja S. Broj je paran ako je njegov ostatak pri deljenju sa 2 jednak nuli (MOD – ostatak pri
deljenju).
//Paran.c
#include<stdio.h>
main()
{
int s;
printf("Uneti broj s: "); scanf("%d", &s);
if(s%2 == 0)
printf("Broj %d je paran.\n",s);
else
printf("Broj %d je neparan.\n",s);
}
4. Naći iznos poreza na bruto platu. Ako je bruto plata veća od 1000 evra porez je 20%, inače porez je 15%.
//Porez na bruto platu.c
#include<stdio.h>
main()
{
float bruto, porez;
printf("\n\tUneti bruto platu u evrima: "); scanf("%f",&bruto);
if(bruto>1000)
porez=0.2*bruto;
else
porez=0.15*bruto;
printf("\tPorez na bruto platu od %.2f evra iznosi %.2f evra\n", bruto,porez);
}
26
Praktikum iz programiranja ‐ pomoćni materijal
5. Na osnovu visine odrediti idealnu težinu osobe. Idealna težina za osobe muškog pola je visina - 100, a za osobe
ženskog pola visina - 110. Predvideti unošenje indikatora pola: 1 - muški, ženski – bilo šta drugo
//Idealna tezina.c
#include<stdio.h>
main()
{
int ind; float visina, tezina;
printf("\n\tTreba unetit pol ‐ za muskrace cifru 1, za zene nesto drugo\n");
printf("\tPOL? "); scanf("%d",&ind);
printf("\n\tUnesite visinu osobe u cm: "); scanf("%f",&visina);
if(ind==1) {
tezina=visina‐100;
printf("\n\tIdealna tezina muskarca visine %.2f je: %.2f\n", visina,tezina); }
else {
tezina=visina‐110;
printf("\n\tIdealna tezina zene visine %.2f je: %.2f\n", visina,tezina); }
}
6. Ako je ocena iz fizike manja od ocene iz informatike odštampati prosečnu ocenu (srednja vrednost) te dve ocene,
ako je ocena iz informatike manja odštampati ocenu iz informatike. U slučaju da su ocene iste, dati odgovarajući
komentar.
//Ocene iz fizike i informatike.c
#include<stdio.h>
main()
{
int OF, OI; float PR;
printf("Uneti ocene iz fizike i informatike: \n"); scanf("%d%d", &OF, &OI);
if(OF<OI)
{
PR=(float)(OF+OI)/2;
printf("Prosecna ocena je: %.2f\n", PR);
}
else if(OI<OF)
printf("Ocena iz informatike je: %d\n", OI);
else
printf("Ocene su iste.\n ", OI);
}
7. Napisati program koji za tri uneta prirodna broja a, b i c utvrđuje da li mogu biti stranice trougla. Ukoliko ne
mogu štampa odgovarajuću poruku, a ukoliko mogu računa obim i površinu trougla i štampa ove vrednosti.
//stranice trougla.c
#include <stdio.h>
#include <math.h>
main()
{
int a,b,c,O; float s; double P;
printf("\n\tUnesite tri prirodna broja: "); scanf("%d%d%d",&a,&b,&c);
if((a+b>c)&(a+c>b)&(b+c>a)) // uslov za stranice trougla
{
O=a+b+c;
s=(float)O/2;
P=sqrt(s*(s‐a)+s*(s‐b)+s*(s‐c));
printf("\n\tObim trougla stranica %d, %d i %d je: O = %d\n",a,b,c,O);
printf("\n\tPovrsina trougla stranica %d, %d i %d je: P = %.2lf\n",a,b,c,P);
}
else
printf("\n\tNe postoji trougao sa stranicama %d, %d i %d!\n",a,b,c);
}
27
Praktikum iz programiranja ‐ pomoćni materijal
8. Napisati program kojim se na osnovu cene karte i godina kupača, izračunava i ispisuje kolika će biti cena karte
za bazen nakon popusta. Popust se računa na osnovu godina kupača na sledeći način: za kupače do 10 godina
popust je 50%, za kupače od 10 do 20 godina popust je 20%, a ostali plaćaju punu cenu karte.
//Cena karte.c
#include<stdio.h>
main()
{
int God;
float Cena, CK;
printf("Uneti cenu karte i godinu kupaca:\n");
scanf("%f%d", &Cena, &God);
if(God<10)
CK=Cena*0.5;
else if(God<20)
CK=Cena*0.8;
else
CK=Cena;
printf("Cena karte nakon popusta je: %.2f\n", CK);
}
9. Proveriti da li je dati trocifreni prirodan broj n Armstrongov. Broj je Armstrongov ako je jednak zbiru kubova
svojih cifara.
//Armstrongov broj.c
#include<stdio.h>
main()
{
int n, cj, cd, cs;
printf("\n\tUneti trocifren prirodan broj: "); scanf("%d", &n);
cj=n%10; cd=n/10%10; cs=n/100;
printf("\n\tCifre prirodnog broja %d su: \n",n);
printf("\n\t\tCifra jedinice ‐ %d \n",cj);
printf("\n\t\tCifra desetice ‐ %d \n",cd);
printf("\n\t\tCifra stotice ‐ %d \n",cs);
if(pow(cj,3)+pow(cd,3)+pow(cs,3)==n)
printf("\n\tBroj %d jeste Armstrongov \n",n);
else
printf("\n\tBroj %d nije Armstrongov \n",n);
}
10. Uneti tocifren prirodan broj N. Proveriti da li je N palindrom. Broj je palindrom ako se čita isto sleva i sdesna
isto (242).
// Palindrom.c
#include<stdio.h>
main()
{
int n, cj, cd, cs;
printf("\n\tUneti trocifren prirodan broj: "); scanf("%d", &n);
cj=n%10; cd=n/10%10; cs=n/100;
printf("\n\tCifre prirodnog broja %d su: \n",n);
printf("\n\t\tCifra jedinice ‐ %d \n",cj);
printf("\n\t\tCifra desetice ‐ %d \n",cd);
printf("\n\t\tCifra stotice ‐ %d \n",cs);
if(cj==cs)
printf("\n\tBroj %d jeste Palindrom \n",n);
else
printf("\n\tBroj %d nije Palindrom \n",n);
}

28
Praktikum iz programiranja ‐ pomoćni materijal
11. Napisati program kojim se izračunava i ispisuje kolika će biti plata radnika nakon plaćanja solidarnog poreza.
Solidarni porez od 15% računa se samo na platu veću od 60.000 dinara.
//Plata nakon poreza.c
#include<stdio.h>
main()
{
float plata, KP;
printf("\tUneti platu u dinarima: "); scanf("%f", &plata);
if(plata<=60000)
printf("\tNema solidarnog poreza, plata ostaje %.2f dinara\n", plata);
else {
KP=plata‐(plata‐60000)*0.15;
printf("\tIma solidarnog poreza od 15%%, umanjena plata je: %.2f dinara\n", KP); }
}

12. Na deklaraciji uređaja kupljenog u Americi piše da uređaj trpi maksimalnu temperaturu u Farenhajtima (MF).
Nacrtati algoritamsku šemu kojom se ispituje da li taj uređaj sme da se koristi u prostoriji sa maksimalnom
temperaturom u Celzijusima (TC), ako postoji ventilator koji smanjuje temperaturu u toj postoriji za N procenta.
//Deklaracija.c
#include<stdio.h>
main()
{
float MF, MC, N, MFC, TP;
printf("Uneti temperaturu u Farenhajtima: "); scanf("%f", &MF);
printf("Uneti temperaturu u Celzijusima: "); scanf("%f", &MC);
printf("Uneti procenat smanjenja temperature ventilatorom: "); scanf("%f", &N);
MFC = (MF‐32)*1.8; TP = MC ‐ MC*N/100;
if(TP>MFC)
printf("Uredjaj ne sme da se koristi.\n");
else
printf("Uredjaj sme da se koristi.\n");
}
13. Na tri benzinske pumpe kupujemo gorivo u galonima (G1, G2, G3). Benzin treba sipati u bure zapremine BL u
litrima. Napisati program pomoću kojeg se ispisuje sledeći izveštaj: ako kupljeni benzin može da stane u bure
ispisati poruku „Može“ i koliko još litara može stati u njega. Inače, ispisati poruku „Ne može“ i broj litara koji
ne može stati u bure.
//Pumpa1.c ‐ prvi nacin
#include<stdio.h>
main()
{
float G1, G2, G3, BL, GL, L, razlika;
printf("Uneti broj galona goriva kupljenog na prvoj pumpi:"); scanf("%f", &G1);
printf("\n Uneti broj galona goriva kupljenog na drugoj pumpi:"); scanf("%f", &G2);
printf("\n Uneti broj galona goriva kupljenog na trecoj pumpi:"); scanf("%f", &G3);
printf("\n Uneti litrazu bureta:"); scanf("%f", &BL);
GL=G1+G2+G3; L=GL*4.54;
if(BL>=L) {
printf("\n Moze.");
razlika=BL‐L;
printf("\n Moze stati jos %f litara.\n", razlika);}
else {
printf("\n Ne moze.");
razlika=L‐BL;
printf("\n Ne moze potreban je novi sud od %f litara.\n", razlika); }
}

29
Praktikum iz programiranja ‐ pomoćni materijal
//Pumpa2.c ‐ drugi nacin
#include<stdio.h>
#include<math.h>
main()
{
float G1, G2, G3, BL, L, razlika;
printf("Uneti broj galona goriva kupljenog na prvoj pumpi:"); scanf("%f", &G1);
printf("\n Uneti broj galona goriva kupljenog na drugoj pumpi:"); scanf("%f", &G2);
printf("\n Uneti broj galona goriva kupljenog na trecoj pumpi:"); scanf("%f", &G3);
printf("\n Uneti litrazu bureta:"); scanf("%f", &BL);
L=(G1+G2+G3)*4.54; razlika=BL‐L;
if(razlika>=0)
{
printf("\n Moze.");
printf("\n Moze stati jos %f litara.\n", razlika);
}
else
{
printf("\n Ne moze.");
printf("\n Ne moze potreban je novi sud od %f litara.\n", fabs(razlika));
}
}
14. Napisati program koji određuje da li se date prave seku. Dve prave se neće seći ako su podudarne ili su paralelne.
Prave zapisane u eksplicitnom obliku y=k1x+n1 i y= k2x+n2 paralelne su ako važi k1=k2, a podudarne ako važi
n1= n2.
// Presek pravi.c
#include<stdio.h>
main()
{
float k1,k2,n1,n2;
printf("Uneti koeficijente k i n prve prave: ");
scanf("%f%f", &k1,&n1);
printf("Uneti koeficijente k i n druge prave: ");
scanf("%f%f", &k2,&n2);
if(k1==k2)
if(n1==n2) printf("Prave su podudarne!");
else printf("Prave su paralelne!");
else printf("Prave se seku!");
}
15. Napisati program koji omogućava korisniku da tri puta pokuša da pogodi slučajno generisan broj iz intervala od
1 do 10. Ako korisnik pogreši broj, ispisuje se poruka da li je njegov broj bio veći ili manji od nepoznatog broja.
Nakon tri neuspešna pogađanja, ispisuje se pravi broj.
//Pogodi broj.c
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
main()
{
int slucajan,broj,pokusaj;
srand(time(0));/*postavlja pocetnu vrednost za generisanje slucajnih brojeva*/
slucajan=rand()%10+1; //generisanje slučajnog celog broja iz intervala [1,10]
//Prvi pokusaj
pokusaj=1;
printf("\nPokusaj da pogodis broj koji je racunar 'zamislio'!");
printf("\nTrazeni broj je u opsegu [1,10]. Imate tri pokusaja. Srecno!\n");
printf("\n\tPokusaj broj %d",pokusaj);

30
Praktikum iz programiranja ‐ pomoćni materijal
printf("\n\tUnesite broj: "); scanf("%d",&broj);
if(slucajan==broj) goto kraj;
else if(broj>slucajan) printf("\n\tZamisljen broj je manji od broja %d",broj);
else printf("\n\tZamisljen broj je veci od broja %d",broj);
//Drugi pokusaj
pokusaj++;
printf("\n\tPokusaj broj %d",pokusaj);
printf("\n\tUnesite broj: "); scanf("%d",&broj);
if(slucajan==broj) goto kraj;
else if(broj>slucajan) printf("\n\tZamisljen broj je manji od broja %d",broj);
else printf("\n\tZamisljen broj je veci od broja %d",broj);
//teci pokusaj
pokusaj++;
printf("\n\tPokusaj broj %d",pokusaj);
printf("\n\tUnesite broj: "); scanf("%d",&broj);
if(slucajan==broj) goto kraj;
else // Nazalost!
{
printf("\n\tNiste pogodili broj iz %d pokusaja.\n\t Trazeni broj je %d\n",pokusaj,slucajan);
return 0; // Kraj programa
}
kraj: //Bingo!
printf("\n\tBravo! Pogodili ste 'zamisljeni' broj %d iz %d. pokusaja\n",slucajan,pokusaj);
}
, .
16. Napisati program koji za zadate realne brojeve x i y izračunava z po formuli. 𝑧
,
//Min_max.c
#include<stdio.h>
#include<math.h>
main()
{
int x, y; float z;
printf("Uneti brojeve x i y: ");
scanf("%d%d", &x, &y);
if(x>y)
z=(x+0.5)/(1+pow(x,2));
else
z=(x+0.5)/(1+pow(y,2));
printf("z = %5.4f\n",z);
}
17. Napisati program koji za unete realne brojeve x i y izračunava i štampa frednost funkcije f i to na sledeći način:
- ako je x<y onda je f = x + y,
- a ako je x>=y onda je f = x - y,
//if_funkcija_x,y.c
#include <stdio.h>
main()
{
float x,y,f;
printf("\nUnesi realne brojeve x i y: ");
scanf("%f%f",&x,&y);
if(x<y)
f=x+y;
else
f=x‐y;
printf("Vrednost funkcije f=%.3f\n",f);
}

31
Praktikum iz programiranja ‐ pomoćni materijal
18. Napisati program koji na ulazu ima prirodan broj n i realan broj x, a na izlazu treba da izračuna i odštampa
vrednost funkcije y na sledeći način:
Za n > 100...................................................... 𝑦 𝑙𝑜𝑔 𝑒 𝑥
40 <= n <= 100 .............................................. 𝑦 𝑠𝑖𝑛 2√4𝑥 𝑒
N < 40 ............................................................ 𝑦 |𝑥 1| |𝑥 1|
//if_funkcija_n,x.c
#include<stdio.h>
#include<math.h>
main()
{
int n;
float x, y;
printf("\n Uneti broj n:");
scanf("%d", &n);
printf("Uneti broj x:");
scanf("%f", &x);
if(n>100)
y=sqrt(log(exp(2*cos(x))+pow(x,5)));
else if(n>=40)
y=sin(2*sqrt(4*x))+exp(sin(x));
else
y=fabs(x+1)+fabs(x‐1);
printf("y=%f", y);
}

 2 x,........x  1
19. Za dato x izračunati y po formuli: y   3x  1,........x  5 . Predvideti slučaj za x=0.
1 / x,........za ostale slucajeve
//switch_za uneto x izračunati y.c
#include<stdio.h>
main()
{
int x; float y;
printf("\n\tUneti x: ");
scanf("%d", &x);
switch (x)
{
case 1:
y=2*x; printf("\n\t y = %.2f\n", y);
break;
case 5:
y=3*x‐1; printf("\n\t y = %.2f\n", y);
break;
default:
{
if (x!=0)
{
y=(float)1/x;
printf("\n\t y = %.2f\n", y);
}
else
printf("\n\tGreska! Deljenje sa nulom!\n");
}
}
}

32
Praktikum iz programiranja ‐ pomoćni materijal
20. Na ulazu su prirodan broj A i realan broj x. Izračunati vrednost funkcije y i to na sledeći način:
 ako je A = 1 tada je y = 3x-2
 ako je A = 2 tada je y = sin(2x)-3x+1
 ako je A = 3 tada je y = x3-x+1
 a ako je A bilo šta drugo onda je y = x.
//switch_a,x.c
#include <stdio.h>
#include <math.h>
main()
{
int a;float x,y;
printf("Unesi ceo broj a i realan broj x: "); scanf("%d%f",&a,&x);
switch(a)
{
case 1:
y=3*x‐2;
break;
case 2:
y=sin(2*x)‐3*x+1;
break;
case 3:
y=pow(x,3)‐x+1;
break;
default:
y=x;
}
printf("\nRezultat funkcije je: %.4f\n",y);
}

21. Napisati program koji kao ulaze učitava prirodan broj n i relan broj x>0. Program izračunava vrednost funkcije
y i to na sledeći način:
- ako je n=7 tada je y=sin(x)+cos(x/2)
- ako je n=5 tada je y=log(x)+5x+3
- ako je n=3 tada je y=tg(x/4)+e-x
- a ukoliko je n bilo šta drugo tada je y  x 4  3 2x  1
//switch_n,x.c
#include <stdio.h>
#include <math.h>
main()
{
int n; double x,y;
printf("Unesite prirodan broj n: "); scanf("%d",&n);
printf("Unesite realan broj x veci od nule: "); scanf("%lf",&x);
switch(n){
case 7:
y=sin(x)+cos(x/2); break;
case 5:
y=log(x)+5*x+3; break;
case 3:
y=tan(x/4)+exp(‐x); break;
default:
y=pow(x,4)+3*sqrt(2*x)+1;
}
printf("Funcija y iznosi: %.3lf\n",y);
}

33
Praktikum iz programiranja ‐ pomoćni materijal
22. Napisati program koji za uneti ceo broj b i relani broj x izračunava i štampa vrednost funkcije y i to na sledeći
način:
-
ako je b=1 tada je y=sin(x+5)-e-x
- ako je b=2 tada je y najveći ceo broj koji nije veći od x umanjen za 3
- ako je b=3 tada je y=x+x-5
- ako je b=4 tada je y slučajno izabran broj umanjen za x
- i ako je b bilo šta drugo onda je y najmanji ceo broj ne manji od x uvećan 3 puta.
// switch_b,x,y.c
#include <stdio.h>
#include <math.h>
#include <stdlib.h> /*zbog funkcije rand() za slucajan broj */
#include <time.h>
main()
{
int b; double x,y;
printf("\n\tUnesite ceo broj b: ");
scanf("%d",&a);
printf("\n\tUnesite realan broj x: ");
scanf("%lf",&x);
srand(time(NULL)); /*postavlja pocetnu vrednost za generisanje slucajnih brojeva*/
switch(b)
{
case 1:
y=sin(x+5)‐exp(x);
break;
case 2:
y=floor(x)‐3; /*funkcija daje najveci ceo broj koji nije veci od x*/
break;
case 3:
y=fabs(x)+fabs(x‐5); /*apsolutna vrednost*/
break;
case 4:
y=rand()‐x; /*rand generise ceo broj*/
break;
default:
y=3*ceil(x); /*najmanji ceo broj koji nije manji od x*/
}
printf("\n\tFuncija y iznosi: %.3lf\n",y);
}
23. Unose se prirodni brojevi u opsegu od 1 do 5, koji predstavljaju radne dane u nedelji: 1 - ponedeljak, ...,
5 - petak. Napisati program koji u zavisnosti od unetog broja ispisuje dan. Predvideti i pogrešan unos.
//switch_dani.c
#include<stdio.h>
main()
{
int N;
printf("Uneti redni broj dana: "); scanf("%d", &N);
switch (N)
{
case 1: printf("Ponedeljak.\n"); break;
case 2: printf("Utorak.\n"); break;
case 3: printf("Sreda.\n"); break;
case 4: printf("Cetvrtak.\n"); break;
case 5: printf("Petak.\n"); break;
default: printf("GRESKA.\n");
}
}
34
Praktikum iz programiranja ‐ pomoćni materijal
24. Za uneti broj meseca (na primer, 1=Januar, 2=Februar, itd.) ispisati njegov broj dana. U slučaju unete vrednosti
2 (Februar) ispitati da li je godina prestupna.
//switch_Broj dana u mesecu.c
#include<stdio.h>
main()
{
int brMes, dani, god;
printf("\n\tUneti redni broj meseca: "); scanf("%d", &brMes);
switch(brMes)
{
case 1:case 3:case 5:case 7: case 8: case 10: case 12:
dani=31;
break;
case 4:case 6:case 9:case 11:
dani=30;
break;
case 2:
printf("\n\tUneti godinu: "); scanf("%d", &god);
/* Prestupne godine su sve godine deljive sa 400, kao i
godine deljive sa 4 ali ako nisu deljive sa 100 */
if(god%400==0 || (god%4==0 && god%100!=0))
{
printf("\n\tGodina %d je prestupna\n",god);
dani=29;
}
else
{
printf("\n\tGodina %d nije prestupna\n",god);
dani=28;
}
break;
default:
printf("\n\tUneli ste nepostojeci broj meseca \n");
goto kraj;
}
printf("\n\tBroj dana u mesecu je: %d\n", dani);
kraj:;
}
25. Napisati program kojim se za uneti simbol +, -, * ili / izvršava određena aritmetička operacija za unete brojeve
a i b.
//switch_operacija.c
#include<stdio.h>
main()
{
char oper;
float a, b;
printf("\n Uneti racunsku operaciju: "); scanf("%c", &oper);
printf(" Uneti brojeve a i b: "); scanf("%f%f", &a, &b);
switch (oper){
case '+': printf("%f + %f = %f\n", a, b, a+b); break;
case '‐': printf("%f ‐ %f = %f\n", a, b, a‐b); break;
case '*': printf("%f * %f = %f\n", a, b, a*b); break;
case '/': printf("%f / %f = %f\n", a, b, a/b); break;
default: printf("GRESKA!\n");
}
}
35
Praktikum iz programiranja ‐ pomoćni materijal
26. Izračunati otpor R koji daju otpornici R1 i R2 u zavisnosti od tipa veze u električnom kolu. Predvideti unošenje
indikatora veze u zavisnosti od tipa: R - redna veza, P - paralelna veza.
//switch_otpor.c
#include<stdio.h>
main()
{
char veza;
float R1, R2, otpor;
printf("Uneti tip veze (R‐redna, P‐paralelna) ");
scanf("%c",&veza);
switch(veza)
{
case'R':case'r':
printf("\n\tUneti vrednosti dva redno vezana otpornika: ");
scanf("%f%f",&R1, &R2);
otpor=R1+R2;
printf("\n\tEkvivalentni otpor redne veze je %.2f oma\n", otpor);
break;
case 'P': case'p':
printf("\n\tUneti vrednosti dva paralelno vezana otpornika: ");
scanf("%f%f",&R1, &R2);
otpor=(R1+R2)/(R1*R2);
printf("\n\tEkvivalentni otpor paralelne veze je %.2f oma\n", otpor);
break;
default:
printf("\n\tNiste uneli dobar tip veze\n");
}
}

36
Praktikum iz programiranja ‐ pomoćni materijal
ZADACI za vežbanje - razgranata struktura

1. Uneti dva broja, veći podeliti sa 3, a manji pomnožiti sa 4.


2. Uneti dva broja, ako se razlikuju po znaku, treba ih sabrati, inače treba ih pomnožiti.
3. Napisati program koji izračunava zbir unetih brojeva a, b, c ukoliko je najveći broj paran, a razliku ako je
najveći broj neparan.
4. Uneti dva realna broja A i B, na osnovu njihovog odnosa izračunati površinu P na sledeći način: ukoliko je
A<B onda se računa površina pravougaonika sa stranicama A i B, a ukoliko je A>=B onda se računa površina
kruga čiji je poluprečnik A. Ispisati vrstu geometrijskog tela i njegovu površinu.
. ∗ ,
5. Izračunati y prema formuli: 𝑦
,

1  max( x, y )  3, за k  0
6. Naći z prema formuli: z  
max 2 ( x, y )  min( x, y )  x, за k  0
7. Napisati program koji na ulazu ima prirodan broj n i realan broj x, a na izlazu treba da izračuna i odštampa
vrednost funkcije y na sledeći način:

𝑧𝑎 𝑛 120 → 𝑦 𝑥 log 𝑒 𝑥

60 𝑛 120 → 𝑦
cos 3√6𝑥 𝑒
𝑛 60 → 𝑦 |𝑥 5| |𝑥 5|
8. Napisati program kojim se unose prirodni brojevi n i k i realan broj x i izračunava vrednost z prema sledećim
uslovima:
5 𝑐𝑜𝑠2𝑥, 𝑧𝑎 𝑘 𝑛

⎪ 𝑥
, 𝑧𝑎 𝑘 𝑛 3
𝑧 7
⎨|5𝑥 1|, 𝑧𝑎 𝑘 𝑛 6

⎩√5𝑥, 𝑖𝑛𝑎č𝑒
9. Napisati program kojim se unose prirodni brojevi n i k i realan broj x i izračunava vrednost z prema sledećim
uslovima:
5𝑥 𝑥 0
𝑥 5 0 𝑥 1
𝑦
√𝑥 5 1 𝑥 7
15𝑥 1 𝑥 7
10. Na ulazu u program učitati dva broja: prirodan broj a i realan broj x>0. Napisati program koji treba na bazi
ulaza za a da izračunava vrednost za izlaz Z i da odštampa rezultate. Obavezno treba koristiti switch() i to:
- ako je a jednako 11: Z  sin  x   cos( 2x 2 / 5)
- ako je a jednako 12: Z  1  log3x 2   x 5  cos x
- ako je a jednako 13: Z  3x 3  e ( 3x )
- a ako je a bilo šta drugo: Z  Sin ( 2 x )  sin(12 x )
11. Napisati program koji za uneto izračunava y po formuli:
cos 𝑥 2.3 𝑥 2

𝑦 √𝑥 2 𝑥 5

⎩ 𝑥 𝑥 5
12. Napisati program koji za uneto izračunava y po formuli:
|𝑥 2| 𝑥 5
𝑥 5 𝑥 1
𝑦
3𝑥 𝑥 1 𝑥 5
𝑥 𝑥 5
13. Napisati program koji za uneto x i y izračunava z po formuli:
|𝑥 𝑦| 𝑥 0, 𝑦 0
𝑧 max 𝑥, 𝑦 0 𝑥 1, 1 𝑦 0
𝑥 𝑥 1, 𝑦 1

37
Praktikum iz programiranja ‐ pomoćni materijal
14. U kom se kvadrantu nalazi tačka sa koordinatama (X, Y)?
15. Napisati program koji proverava da li je prava y=kx+n tangenta elipse x2/a2 + y2/b2 =1. Uslov dodira prave i
elipse je: a2 k2 + b2 = n2
16. Da li je unešeni trocifreni broj Nivenov? Nivenov broj je broj koji je deljiv sumom svojih cifara.
17. Za uneti ugao N (N < 180) u stepenima ispisati da li je ugao N oštar, prav ili tup.
18. Uneti kubikažu automobila. Izračunati i ispisati porez (u procentima), koji se naplaćuje prilikom registracije
auta. Porez se računa u zavisnosti od kubikaže na sledeći način: za kubikažu do 1000 porez je 10%, za
kubikažu između 1000 i 2000 porez je 12,5%, a za kubikažu iznad 2000 porez je 15%.
19. Molekul vode H2O sastoji se iz dva atoma vodonika i jednog atoma kiseonika. Naći maksimalan broj
molekula vode koji se može formirati od datih A atoma vodonika i B atoma kiseonika.
20. Dva automobila startnih brojeva 1 i 2 kreću sa iste startne pozicije redom u trenucima T1 i T2 (T1 < T2),
kreću se konstantnim brzinama V1 i V2. Ispisati startni broj automobila koji je na vodećoj poziciji u trenutku
T (T > T2).
21. Ana, Boban, Vera, Goran, Dara, Đorđe, Ema i Žarko idu u isto odeljenje. Ana, Boban, Vera i Goran su dobri
matematičari a Ana, Boban, Dara i Đorđe su dobri sportisti. Jednog dana jedan od njih ne dođe u školu.
Napisati program kojim se prikazuje ime učenika koji nije u školi, tako što se odgovara na pitanja: Da li je
dečak?, Da li je matematičar? i Da li je sportista?

38

You might also like