Professional Documents
Culture Documents
Predavanja02 C++
Predavanja02 C++
Predavanja02 C++
Raunarstvo i programiranje
Prvi nain:
if (uslov) operator1;
ako je uslov taan izvrava se operator1, ako je netaan nastavlja se dalji tok
programa
drugi nain:
if (uslov) operator1;
else operator2;
ako je uslov taan izvrava se operator1, inae izvrava se operator2.
NAPOMENA:
Ako je vrednost uslova 0, znai da je uslov netaan, u suprotnom je taan.
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 1
kolska 2011/12
Raunarstvo i programiranje
x=1;
if (x<3) printf("Tacno");
else printf("Netacno");
/* Tacno */
if(x+10<3*x) scanf("%d",&x);
else { x++;
printf("%d\t",x++);
printf("%d",x);
/*2 3 */
}
II - 2
kolska 2011/12
Raunarstvo i programiranje
Primer 2-1. Napii program kojim se odreuje vei od dva uneta broja.
#include <iostream>
main()
{
int a,b,veci;
printf("Unesi dva broja: ");
scanf("%d%d",&a,&b);
if (a>b) veci=a;
else veci=b;
printf("Veci broj je: %d\n",veci);
system("PAUSE");
return 0;
}
II - 3
kolska 2011/12
Raunarstvo i programiranje
x=3;
y=1;
if (x>0)
if (y>0) x++;
else y++;
else { x--;
y--;
}
/* ugnjedeni (nested)if */
/* x=4, y=1 */
...
U C jeziku else odgovara prvom slobodnom if koje prethodi a ne sadri else.
Napomena:
x++ je isto to i x=x+1
y-- je isto to i y=y-1
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 4
kolska 2011/12
Raunarstvo i programiranje
/* x=3, y=1 */
...
II - 5
kolska 2011/12
Raunarstvo i programiranje
Primer 2-2. U programu se vri pogaanje "maginog" broja. (broj je skriven u obliku
ASCII koda)
#include <iostream>
# define MAGIC '?'
main()
{
int broj;
printf("Broj: ");
scanf("%d",&broj);
if (broj==MAGIC) printf("TACNO\n%d je magican broj",MAGIC);
else {printf("NETACNO\n");
if (broj>MAGIC) printf("MAGICNI broj je manji\n");
else printf("MAGICNI broj je veci\n");
}
system("PAUSE");
return 0;
}
II - 6
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-1. Napisati program koji vri proveru da li unete duine stranica a, b i c
mogu formirati trougao.
#include <iostream>
#include <math.h>
#include <conio.h>
main()
{
float a,b,c,p,s;
printf("Unesi stranice trougla \na= "); scanf("%f",&a);
printf("b= "); scanf("%f",&b);
printf("c= "); scanf("%f",&c);
if (a+b>c && a+c>b && b+c>a){
s=(a+b+c)/2;
p=sqrt(s*(s-a)*(s-b)*(s-c));
printf("p= %.3f\n",p);
}
else printf("NE MOZE SE NACRTATI TROUGAO\n");
getch();
}
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 7
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-2. Napisati program koji za tri unete vrednosti prikazuje najmanju.
#include <iostream>
#include <conio.h>
main()
{
int a,b,c,d,min;
printf("Unesi celobrojne vrednosti a,b,c,d: ");
scanf("%d%d%d%d",&a,&b,&c,&d);
min=a;
if(b<min) min=b;
if(c<min) min=c;
if(d<min) min=d;
printf("Najmanja vrednost je %d",min);
getch();
}
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 8
kolska 2011/12
Raunarstvo i programiranje
switch (izraz)
{
case const1: . . .
...
break;
case const2: . . .
...
break;
.
.
.
case constN: . . .
...
break;
default: . . .
...
break;
}
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 9
kolska 2011/12
Raunarstvo i programiranje
break;
koji se zavravaju operatorom break; koji vri prekid izvravanja celog switch
operatora. Izvrie se onaj niz tih operatora koji stoji pored case kod koga je const
jednaka sa izraz .
default je alternativa, tj. ako se ni jedan od ponuenih sluajeva ne izvri onda se
izvravaju operacije napisane pod default.
II - 10
kolska 2011/12
Raunarstvo i programiranje
II - 11
kolska 2011/12
Raunarstvo i programiranje
NASTAVAK
D=b*b-4*a*c;
if(D>0) i=1;
if(D==0) i=2;
if(D<0) i=3;
switch(i)
{
case 1: printf("RESENJA x1 i x2 su realna i razlicita\n");
x1=((-1)*b-sqrt(D))/(2*a);
x2=((-1)*b+sqrt(D))/(2*a);
printf("\nx1=%f, x2=%f",x1,x2);
break;
case 2: printf("RESENJA x1 i x2 su realna i jednaka\n");
x1=(-1)*b/(2*a);
printf("\nx1=x2=%f",x1);
break;
case 3: printf("RESENJA x1 i x2 su imaginarna i razlicita\n");
img=sqrt(D*(-1));
printf("\nx1=%.3f",(-1)*b/(2*a));
printf("-i*%.3f",img/(2*a));
printf("\nx2=%.3f",(-1)*b/(2*a));
printf("+i*%.3f",img/(2*a));
OSNOVI PROGRAMIRANJA
U PROGRAMSKOM JEZIKU C
II - 12
kolska 2011/12
Raunarstvo i programiranje
NASTAVAK
D=b*b-4*a*c;
if(D>0) i=1;
if(D==0) i=2;
if(D<0) i=3;
switch(i)
{
case 1: printf("RESENJA x1 i x2 su realna i razlicita\n");
x1=((-1)*b-sqrt(D))/(2*a);
x2=((-1)*b+sqrt(D))/(2*a);
printf("\nx1=%f, x2=%f",x1,x2);
break;
case 2: printf("RESENJA x1 i x2 su realna i jednaka\n");
x1=(-1)*b/(2*a);
printf("\nx1=x2=%f",x1);
break;
II - 13
kolska 2011/12
Raunarstvo i programiranje
NASTAVAK
case 3: printf("RESENJA x1 i x2 su imaginarna i razlicita\n");
img=sqrt(D*(-1));
printf("\nx1=%.3f",(-1)*b/(2*a));
printf("-i*%.3f",img/(2*a));
printf("\nx2=%.3f",(-1)*b/(2*a));
printf("+i*%.3f",img/(2*a));
break;
}
getch();
}
II - 14
kolska 2011/12
Raunarstvo i programiranje
Ciklusi - petlje
Petlje omoguavaju da se skup instrukcija izvrava ako je odreeni uslov ispunjen.
-for() ciklus
Uloga for ciklusa je, najee, izvravanje odreenih instrukcija tano odreen broj
puta.
Opti oblik iskaza je
for( inicijalizacija; uslov; korekcija brojaa)
{
telo ciklusa
};
inicijalizacija - predstavlja, obino, postavljanje brojaa petlje na poetnu
vrednost (npr. x=0;)
uslov - je relacija koja odreuje kada se izlazi iz te petlje (npr. x<9)
korekcija brojaa - odreuje kako e se menjati brojaka promenljiva (npr. x++)
II - 15
kolska 2011/12
Raunarstvo i programiranje
Primer 2-4.
for( x=0; x<10; x++) printf("*");
Tok izvavanja ciklusa u primeru je sledei:
1. Postavlja se poetna vrednost na x=0
2. Prvi krug ciklusa: (x=0)
- provera uslova: 0<10 je tacno
- izvrava se printf...
- vri se korekcija x++ tj x=1
3. Drugi krug ciklusa: (x=1)
- provera uslova: 1 <10 je tacno
- izvrava se printf...
- vri se korekcija x++ tj x=2
...
II - 16
kolska 2011/12
Raunarstvo i programiranje
#include <iostream>
#include <conio.h>
main()
{
int i,j;
for(i=0;i<15;i++)
{
for(j=0;j<25;j++) printf("%c",*); /*stampa jedan red */
printf("\n");
}
getch();
}
II - 17
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-4. Napisati program koji uitava i rauna sumu n celih brojeva.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n,suma,i,a;
printf("Uneti broj n ");
scanf("%d",&n);
suma=0;
for(i=1;i<n+1;i++)
{
printf("Ucitati %d broj ",i);
scanf("%d",&a);
suma=suma+a;
}
printf(Zbir ucitanih brojeva je %d\n",suma);
system("PAUSE");
return 0;
}
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 18
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-5. Napisati program koji uitava 10 celih brojeva i rauna priozvod
samo parnih meu njima.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n,p,i,a;
printf("Uneti broj n ");
scanf("%d",&n);
p=1;
for(i=1;i<n+1;i++)
{
printf("Ucitati %d broj ",i);
scanf("%d",&a);
if(a%2==0)p=p*a;
}
printf("Proizvod ucitanih parnih brojeva je %d\n",p);
system("PAUSE");
return 0;
}
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 19
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-5. Napisati program koji uitava ncelih brojeva i rauna razliku proizvoda
parnih i neparnih meu njima.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int n,p0,p1,raz,i,a;
printf("Uneti broj n ");
scanf("%d",&n);
p1=1;
p0=1;
for(i=1;i<n+1;i++)
{
printf("Ucitati %d broj ",i);
scanf("%d",&a);
if(a%2==0)p0=p0*a;
else p1=p1*a;
}
raz=p0-p1;
printf("Razlika proizvoda ucitanih parnih i neparnih brojeva je %d\n",raz);
system("PAUSE");
return 0;
}
kolska 2011/12
Raunarstvo i programiranje
Ciklus while()
Broj ponavljanja ciklusa odreuje se uslovom koji se nalazi ispred tela ciklusa. Zato
II - 21
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-6. Raunati sumu prirodnih brojeva 1, 2, ..., n sve dok vrednost sume
ne dostigne vrednost veu od 1.000.000.000 , prikazati koliko je brojeva sumirano.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long n,suma;
suma=0;
n=1;
while(suma<1000000000)
{
suma=suma+n;
n=n+1; /*n++*/
}
printf("Sabrano je %ld brojeva i njihova suma je %ld\n",n,suma);
system("PAUSE");
return 0;
}
II - 22
kolska 2011/12
Raunarstvo i programiranje
II - 23
kolska 2011/12
Raunarstvo i programiranje
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
float s,x,eps,p;
int n,i;
n=1;
s=1.0;
printf("Unesi x:");
scanf("%f",&x);
printf("Unesi eps:");
scanf("%f",&eps);
p=x;
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 24
kolska 2011/12
Raunarstvo i programiranje
while(abs(p)>eps)
{
s+=p;
p=x;
n++;
for(i=2;i<=n;i++)
p=-p*(-x/i);
}
printf("\n s=%f",s);
printf("\n sumiramo je %d elemenata",n);
system("PAUSE");
return 0;
}
II - 25
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-8. Napisati program kojim unosimo tekst do pojavljivanja znaka '.' .
Prikazati broj pojavljivanja slova 'A ili a i izraziti tu vrednost procentualno u
odnosu na sve unete znake.
II - 26
kolska 2011/12
Raunarstvo i programiranje
#include <iostream>
#include <conio.h>
#define TACKA '.'
main()
{
int ch,n,u;
float p;
n=0;
u=0;
ch=getche();
while(ch!=TACKA)
{
u++;
if(ch=='A' or ch=='a')n++;
ch=getche();
}
p=(float)n/u*100;
printf("\nUkupno znakova:%d",u);
printf("\nUkupno slovo A ili a:%d",n);
printf("\nU procentima:%.2f%\n",p);
getch();
}
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 27
kolska 2011/12
Raunarstvo i programiranje
Nizovi
Niz je ureen skup promenljvih istog tipa. Oni se deklariu kao i ostale promenljive, ali
da bi odredili koliko elemenata moe sadrati taj niz u programu, dodajemo imenu
promenljive broj elemenata niza napisan u srednjim zagradama.
int a[100];
Ovom deklaracijom je najavljen niz a koji moe imati 100 elemenata tipa int.
Ti elementi se zovu: a[0], a[1], a[2], ... a[99]. Kao i ostale deklaracije promenljivih u C-u,
ne vri se nikakva inicijalizacija elemenata nizova prilikom deklaracije, tada su
vrednosti tih elemenata sluajno zateene vrednosti na tim memorijskim
lokacijama koje su zauzeli elmenti niza. Prilikom uitavanja i prikazivanja elemenata
niza obino se koristi for petlja da bi upotrebili svaku promenljivu niza.
II - 28
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-9. Napisatii program koji uitava niz n realnih brojeva i rauna njegovu
aritmetiku sredinu.(n<=50)
#include <iostream>
#include <conio.h>
main()
{
int i,n;
float a[50],as,s;
s=0;
printf("Uneti broj elemenata niza (<50) n: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("a[%d] = ",i);
scanf("%f",&a[i]);
}
for(i=0;i<n;i++) s+=a[i];
as=s/n;
printf("AS = %.2f",as);
getch();
}
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 29
kolska 2011/12
Raunarstvo i programiranje
Inicijalizacija niza
Inicijalizacija ili zadavanje poetnih vrednosti elementima niza moe se izvriti na
sledei nain.
int dani[12]={31,28,31,30,31,30,31,31,30,31,30,31};
ovako smo inicijalizovali promenljivu dani koja sadri broj dana u mesecu pa
elementi imaju sledee vrednosti.
dani[0]=31 /* januar */
dani[1]=28 /* februar */
...
dani[11]=31 /* decembar */
II - 30
kolska 2011/12
Raunarstvo i programiranje
II - 31
kolska 2011/12
Raunarstvo i programiranje
Sortiranje niza
Sortiranje nizova je ureivanje elemenata niza u nekom poretku.
Rastui poredak: svaki element niza je vei od prethodnog elementa.
Opadajui poredak: svaki element niza je manji od prethodnog.
Neopadajui poredak: svaki element niza nije manji od prethodnog elementa.
Nerastui poredak: svaki element niza nije vei od prethodnog elementa
Postoji puno algoritama koji vre sortiranje nizova. Pored naina reanja elemenata
niza u neki od navedenih poretka vrlo bitna je i brzina izvravanja tog algoritma.
Koristiemo jedan od osnovnih algoritama za sortiranje niza a[] koji sadri n
elemenata u neopadajui poredak.
for(i=0;i<n-1;i++)
Kada elimo nerastui poredak
for(j=i+1;j<n;j++)
onda se samo zameni znak u if
if(a[i]>a[j])
naredbi tj piemo a[i]<a[j].
{
/*razmena mesta elementima a[i] i a[j] */
pom=a[i];
a[i]=a[j];
a[j]=pom;
}
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 32
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-9. Napisati program koji metodom sluajnog izbora formira niz celih brojeva
od 200 elemenata (elementi su brojevi od 0-999), pa ga zatim sortira u neopadajuem
poredku i prikazuje sve elemente sortiranog niza.
II - 33
kolska 2011/12
Raunarstvo i programiranje
#include <iostream>
#include <conio.h>
#include<stdlib.h>
#define n 200
main()
{
int a[n];
int i,j,x,pom;
rand(); /*komanda za slucajni broj u intervalu od 0 do 1 /*
for(i=0;i<n;i++) a[i]= rand()*1000;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{
pom=a[i];
a[i]=a[j];
a[j]=pom;
}
for(i=0;i<n;i++) printf("%d, ",a[i]);
getch();
}
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 34
kolska 2011/12
Raunarstvo i programiranje
II - 35
kolska 2011/12
Raunarstvo i programiranje
II - 36
kolska 2011/12
Raunarstvo i programiranje
#include <iostream>
#include <conio.h>
#include<stdlib.h>
main()
{
int a[50][50];
int i,j,m,n;
printf("Unesi broj vrsta i kolona: ");
scanf("%d%d",&m, &n);
printf("Unesi elemente matrice:\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++) scanf("%d",&a[i][j]);
printf("\n\n\nUneta je matrica:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
getch();
}
OSNOVI PROGRAMIRANJA U PROGRAMSKOM JEZIKU C
II - 37
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-11. Napii program koj formira matricu dimenzija m x n ije elemente bira
sluajnim izborom brojeva od 0-9, Prikazati matricu i sumu elemenata prve vrste te
matrice.
II - 38
kolska 2011/12
Raunarstvo i programiranje
#include <iostream>
#include <conio.h>
#include<stdlib.h>
main()
{
int a[50][50];
int i,j,m,n,s;
rand();
printf("Unesi broj vrsta i kolona:");
scanf("%d%d",&m,&n);
printf("Unesi elemente matrice: \n");
for(i=0;i<m;i++)
for(j=0;j<n;j++) a[i][j]=rand()*0.0001;
s=0;
for(i=0;i<n;i++)s+=a[0][i]; /*sumira prvu vrstu matrice */
printf("\n\n\n Uneta je matrica; \n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++) printf("%4d ",a[i][j]);
printf("\n");
}
printf("Suma prve vrste matrice je:%d",s);
getch();
}
II - 39
kolska 2011/12
Raunarstvo i programiranje
Zadatak 2-12. Napii program koji uitava dve matrice dimenzije m x n sluajnim
izborom elemenata (0-9). Izraunaj zbir te dve matrice i prikazati poruku u obliku
Martica A
......
Martica B
.........
Rezultat
.........
II - 40
kolska 2011/12
Raunarstvo i programiranje
#include <iostream>
#include <conio.h>
#include<stdlib.h>
void ucitaj(int m, int n, int a[50][50]); /*FUNKCIJA*/
void pisi(int m, int n, int a[50][50]); /*FUNKCIJA*/
main()
{
int a[50][50],b[50][50], c[50][50];
int i,j,m,n;
printf("Unesi broj vrsta ");
scanf("%d",&m);
printf("\nUnesi broj kolona ");
scanf("%d",&n);
printf("\n UNOS ELEMENATA MATRICE A\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)a[i][j]=int(rand()*0.0001);
printf("\n UNOS ELEMENATA MATRICE B\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)b[i][j]=int(rand()*0.0001);
printf("\n MATRICA C = A+B\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)c[i][j]=a[i][j]+b[i][j];
printf("\n MATRICA A\n");
II - 41
kolska 2011/12
Raunarstvo i programiranje
NASTAVAK
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%4d ",a[i][j]);
printf("\n");
}
printf("\n MATRICA B\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%4d ",b[i][j]);
printf("\n");
}
printf("\n MATRICA C\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)printf("%4d ",c[i][j]);
printf("\n");
}
getch();
}
II - 42