Professional Documents
Culture Documents
, ,
, ,
(MASSVision)
Gaji,
250
8.
ISBN 978-86-7982-149-2
CIP
,
004.42 (075.8) (076)
004.432.2C (075.8) (076)
, , 1965 C :
1 /
, ,
. - 8. . - :
, 2013 ( :
). 189 . : . ; 25 cm
+ 1 (CD-ROM)
50. : . 189.
ISBN 978-86-7982-149-2
1. , , 1966 - [] 2. ,
, 1972 - []
) b)
C
COBISS.SR-ID 203698700
_____________________________________________
,
.
Dennis Ritchie 1972. ,
. .
o UNIX ,
.
.
,
. ANSI C,
1988.
:
, ,
.
.
.
,
(++, C#, Java).
,
, .
()
, .
(
, )
,
.
.
,
.
, ,
(
).
, , .
.
,
,
, .
.
,
.
:
1. ( ).
,
.
2. ( ).
3. ( )
, .
4. .
, 2013.
_____________________________________________
1.
2.
3.
23
4.
37
5.
53
6.
69
7.
87
8.
103
9
.
119
10.
135
155
181
183
189
1.
_____________________________________________
primer1_1
1:
2:
3:
4:
5:
6:
7:
8:
9:
/
primer1_1.c
/
/
Prikaz na ekranu jedne linije fiksnog teksta
/
#include <stdio.h>
main( )
{
printf(\nPozdrav\n\n);
}
primer1_1
.
.
1. 2. /
/. .
, .
, .
:
/linijski komentar/
/blokovski
komentar/
(
).
: //pogresno napisan komentar//
.
3. 5. .
.
, .
, .
4. je #include <stdio.h>,
stdio.h,
include, .
/ ( /).
6. main,
(
).
( )
main.
, ,
.
main (
), ,
.
( )
, {
7. , } 9. .
( printf() )
, 8. printf()
stdio.h. , ,
,
printf(). :
a ,
, ( ),
(
),
( ),
(\n)
(\t ), 2.
,
(\\ e \, \
, 2. ).
, printf() 8. :
1. (\n),
2. Pozdrav,
3. (\n\n), DOS
, (Press any key to continue),
( 1.1).
1.1 primer1_1
primer1_2
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
/
primer1_2.c
/
/
Vise poziva funkcije printf(), prikaz na ekranu jedne linije teksta
/
#include <stdio.h>
main( )
{
printf("\nDobrodosli ");
printf("u jezik C\n\n");
}
primer1_2
,
printf() ( 8. 9.), je
.
printf() \n.
, 8. ,
, Dobrodosli ,
9., , u jezik C,
( 1.2).
1.2 primer1_2
primer1_3
1:
2:
3:
4:
5:
6:
7:
8:
9:
/
Primer1_3.c
/
/
Jedan poziv finkcije printf(), prikaz na ekranu vise linija teksta
/
#include <stdio.h>
main( )
{
printf("\nDobrodosli\n\n\tu jezik C\n\n");
}
primer1_3
,
, printf() (
8.). , .
Dobrodosli,
(
), u jezik C
( 1.3).
1.3 primer1_3
primer1_4
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
/
Primer1_4.c
/
/
Prihvatanje imena od korisnika i prikaz na ekranu licnog pozdrava
/
#include <stdio.h>
#define MAX 30
main( )
{
char ime[MAX];
printf("\nVase ime?\n\n");
gets(ime);
printf("\nZdravo %s, dobrodosli u jezik C.\n\n", ime);
}
primer1_4
( ) .
, , ,
. ,
.
5. #define,
. #define MAX 30
MAX 30.
MAX,
,
(
).
9. ime MAX (30)
( char).
[ ].
, , .
11., printf(),
( 1.4 )).
gets() ( stdio.h) ,
12., ( ),
( NTER)
, ime.
,
.
14., printf(),
Zdravo, (%s)
ime, , %s ,
dobrodosli u jezik C. ( 1.4 )).
, printf():
, ,
(\ )
(% ),
( ,
,...),
,
, .
1.4 ) primer1_4 ( )
1.4 ) primer1_4 ( )
,
. ,
,
.
(Warnings) - ,
.
,
.
(Errors) - ,
.
( )
.
.
1.
_____________________________________________
1.
:
#include stdio.h
main( );
{
printf( \nResenja zadataka doneti na )
printf( laboratorijske vezbe\n );
}
2.
,
? .
3.
printf() :
Prva recenica.
Druga recenica.
Treca recenica.
1.
_____________________________________________
1.
, , ,
, 1.
2.
1.
. , ,
.
3.
:
a) #include <stdio.h> main() {printf(\nPozdrav);}
) #include<stdio.h>
main() {printf(\nPozdrav);}
4.
:
) printf()
,
) printf()
,
) .
2.
_____________________________________________
primer2_1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
/
primer2_1.c
/
/
Prikaz na ekranu velicina osnovnih tipova podataka u bajtovima
/
#include <stdio.h>
main( )
{ printf("\nchar\t\tzauzima\t%d B memorije", sizeof(char));
printf("\nunsigned char\tzauzima\t%d B memorije",sizeof(unsigned char));
printf("\nint\t\tzauzima\t%d B memorije", sizeof(int));
printf("\nunsigned int\tzauzima\t%d B memorije", sizeof(unsigned int));
printf("\nlong\t\tzauzima\t%d B memorije", sizeof(long));
printf("\nunsigned long\tzauzima\t%d B memorije",sizeof(unsigned long));
printf("\nfloat\t\tzauzima\t%d B memorije", sizeof(float));
printf("\ndouble\t\tzauzima\t%d B memorije.\n\n", sizeof(double));
}
primer2_1
(
: char, unsigned char, int, unsigned int, long,
unsigned long, float double).
7., printf(), :
: \n,
: char,
: \t\t,
, \t: zauzima,
: \t,
%d,
sizeof() char,
char,
: B memorije.
char : char
zauzima 1 B memorije
( 2.1).
printf(), 8. 14.
.
2.1 32 ( 16-
int (2 4) unsigned int (2 4).
: char
unsigned char, int unsigned int, long unsigned long.
10
unsigned
, unsigned
( ).
3. :
, .
2.1 primer2_1
primer2_2
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
/
primer2_2.c
/
/
Prikaz na ekranu zadatg celog broja u raznim oblicima
/
#include <stdio.h>
main( )
{
int x;
printf("\nUnesite ceo broj:\t");
scanf("%d", &x);
printf("\nDecimalni oblik:\t%d",x);
printf("\nOktalni oblik:\t\t%o",x);
printf("\nHeksadecimalni oblik:\t%x (%X)\n\n",x,x);
}
primer2_2
,
.
, .
,
. ,
7 int., .
, .
( )
( ).
,
. ,
11
x int 4 (
).
, 9. ,
( 2.2 )).
10.
(%d)
, (&x).
12., 13. 14.
(x) (%d), (%)
, (%x) (%X)
( 2.2 )).
, 4. 5. .
2.2 ) primer2_2 ( )
2.2 ) primer2_2 ( )
primer2_3
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
12
/
primer2_3.c
/
/
Prikaz na ekranu zadatog realnog broja u raznim oblicima
/
#include <stdio.h>
main( )
{
double x;
printf("\nUnesite jedan realan broj: ");
scanf("%lf", &x);
printf("\nOblik sa decimalnom tackom:\t%f",x);
printf("\nOblik sa eksponentom:\t\t%e",x);
printf("\nJednostavniji oblik:\t\t%g\n\n",x);
}
primer2_3
(
). x double
( 7.).
, 9. ( 2.3 )),
("%lf)
x (&x).
12., 13. 14.
(x) (%f), (%e)
(%g) ( 2.3 )).
2.3 ) primer2_3 ( )
2.3 ) primer2_3 ( )
primer2_4
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17
/
primer2_4
/
/
Razliciti nacini prikaza na ekranu zadatog broja
/
#include <stdio.h>
main( )
{
const int x = 999;
const double y = 1.2345;
printf("\nCeo broj:\n\n");
printf("%10d\n", x);
printf("%-10d\n", x);
printf("\nRealan broj:\n\n");
printf("%10f\n", y);
printf("%-10f\n", y);
printf("%10.2f\n", y);
printf("%.2f\n", y);
}
13
primer2_4
( )
const ( 5. 6.).
(
) (
.)
printf()
% ,
:
( char, int long),
( 3
3),
( float double),
(6 ).
printf() %
. .
9. 10. ( 2.4) 999:
9. (10)
, (%10d)
(
(%010d)),
10. (10)
(%-10d).
13., 14., 15. 16. ( 2.4)
1.2345 :
13. (10) ,
( ),
(6) (%10f),
14. (10) ,
( -),
(6) (%-10f),
15. (10) ,
( ),
(%10.2f),
16.
, (%.2f ).
2.4 primer2_4
14
primer2_5
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
/
primer2_5.c
/
/
Zamena vrednosti dva zadata cela broja
/
#include <stdio.h>
main( )
{
int a, b, temp;
printf("\nUnesite dva cela broja: ");
scanf("%d%d", &a, &b);
printf("\nPre zamene:\ta=%d, b=%d", a, b);
temp = a;
a = b;
b = temp;
primer2_5
.
,
. 7. a b ,
(temp) .
, .
, 9. ( 2.5 )),
scanf() ,
(Space, Tab Enter)
a b (& &b).
.
, -,
( 10.) : scanf("%d;%d", &a, &b);
( 12.)
( 14. 16. ), ( 18.)
( 2.5 )) . :
temp a,
b, b
, temp.
2.5 ) primer2_5 ( )
15
2.5 ) primer2_5 ( )
primer2_6
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
/
primer2_6.c
/
/
Izracunavanje obima i povrsine
/
/
kruga zadatog poluprecnika
/
#include <stdio.h>
#define PI 3.14159
main( )
{
int r, obim, povrs;
printf("\nUnesite vrednost poluprecnika (ceo broj: 0..10): ");
scanf("%d", &r);
obim = (int) (2 * r * PI);
povrs = (int) (r * r * PI);
primer2_6
,
PI..
6. #define
PI,
3.14159.
, ,
. ,
const.
9.
(r), (obim povrs).
, 11. 12. ( 2.6 ))
( 14.) ( 15.). 14.
(int),
(2 * r * PI) int .
16
obim, .
, 15.
,
, .
17. 18. ( 2.6 )).
2.6 ) primer2_6 ( )
2.6 ) primer2_6 ( )
primer2_7
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
/
primer2_7.c
/
/
Izracunavanje Celsius-ovog ekvivalenta zadatom Fahrenheit-u
/
/
Celsius = (5/9) ( Fahrenheit-32) /
#include <stdio.h>
main( )
{
int temp;
double fahr, celsius;
printf("\nUnesite T u stepenima F (ceo broj: 0..300): ");
scanf("%d", &temp);
fahr = (double)temp;
/konverzija celobrojnog u realni tip/
celsius = (5.0 / 9.0) (fahr - 32.0);/da bi svi operandi bili istog tipa/
printf("\n%d F %.2f C\n\n", temp, celsius);
}
primer2_7
Celsiusov
Fahrenheitu.
: temp (
8.) :
Fahrenheitu (fahr) Celsiusu (celsius), 9.
17
,
11. 12. ( 2.7 )),
( double) oe
fahr ( 14.). 15.
Celsiusov
(elsius). ( 14.) je
, 15., (
).
(5.0, 9.0 32.0).
16. ( 2.7 b))
(temp) (%d)
Celsiusu (celsius), (%.2f).
2.7 ) primer2_7 ( )
2.7 ) primer2_7 ( )
. .
,
.
, , .
/ ,
temp, Temp TEMP .
( )
( 1. ).
, -1, .
unsigned ,
, .
, .
K #define
, .
18
2.
_____________________________________________
1.
,
, , ,
:
Decimalni oblik unetog broja je:
Oktalni oblik unetog broja je:
Heksadecimalni oblik unetog broja je:
2.
,
, , :
) ( 10
),
) ,
) .
3.
scanf()
: 1:23:456 ( ),
a, b c 1, 23 456, .
19
4.
:
#include <stdio.h>
main( )
{
int x, y, z;
scanf(%2d%3d%2d, &x, &y, &z);
printf(%d %d %d, x, y, z);
}
:
123
456
789?
5.
a = 555
printf(), (
10):
) /
) /555
20
555/
/
2.
_____________________________________________
1.
primer2_1.c,
.
2.
,
, :
) ,
10,
) ,
10, ,
) ,
10, .
3.
,
, :
) ,
) 4 10,
,
) 2 10,
.
4.
printf() : , ASCII
, .
5.
scanf() ,
( ).
21
22
3.
,
, ,
: if
if: if..lse else
23
_____________________________________________
primer3_1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
/
primer3_1.c
/
/
Primen unarnog aritmetickog operatora dekrement
/
#include <stdio.h>
main( )
{
int a = 3, b = 3;
printf("\n a
printf("\n %d
printf("\n %d
printf("\n %d
b \n");
%d", a--, --b);
%d", a--, --b);
%d \n\n", a--, --b);
/a se koristi i dekrementira/
/b se dekrementira i koristi/
/kod sva tri poziva funkcije printf()/
primer3_1
6. .
. (--)
1.
7. a b
( ).
. int a = b = 3;
.
10. 12.
( 3.1).
a.
, ( a-).
b.
, ( b).
,
1 ( (a++) (++b)).
3.1 primer3_1
24
primer3_2
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
/
primer3_2.c
/
/
Izracunavanje brojeva sati, minuta i sekundi u zadatom broju sekundi
/
/
(primena aritmetickog operatora ostatak deljenja) /
#include <stdio.h>
#define SEKUNDI_U_MINUTI 60
#define SEKUNDI_U_SATU 3600
main( )
{
unsigned int sekunde, minute, sati, sekunde_ostatak, minute_ostatak;
printf("\nUnesite broj sekundi (ceo broj < 65000): ");
scanf("%d", &sekunde);
sati = sekunde / SEKUNDI_U_SATU;
minute = sekunde / SEKUNDI_U_MINUTI;
minute_ostatak = minute % SEKUNDI_U_MINUTI;
sekunde_ostatak = sekunde % SEKUNDI_U_MINUTI;
printf("\n%u sekundi je isto sto i %u sati,",sekunde, sati);
printf("%u minuta i %u sekundi\n\n",minute_ostatak, sekunde_ostatak);
}
primer3_2
.
, (/)
(%).
. :
7/4 , 1.
7.0/4, 7/4.0 7.0/4.0 , 1.750000,
.
: int a = 7, b = 4;
a/b , ,
(float)a/b, a/(float)b (float)a/(float)b
( o a).
7%4 7 4, 3.
,
( 6. 7.),
.
,
. ( 3.2 ))
(sekunde) :
(sati) 3600
( 15.),
25
(minute)
60 ( 16.),
(minute_ostatak)
60 ( 17.),
(sekunde_ostatak)
60 ( 18.).
( 3.2 )).
3.2 ) primer3_2 ( )
3.2 ) primer3_2 ( )
primer3_3
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
/
primer3_3.c
/
/
Prikaz na ekranu rezultata izraza sa relacijskim i logickim operatorim
/
#include <stdio.h>
main( )
{
int x, a = 5, b = 6, c = 5, d = 1;
x = a<b || a<c && c<d;
printf("\nx = a<b || a<c && c<d");
/&& ima veci prioritet od ||/
printf("\nBez zagrada izraz ima vrednost\t%d\n\n",x);
x = (a<b || a<c) && c<d;
printf("\nx = (a<b || a<c) && c<d");
/zagrade menjaju prioritet/
printf("\nSa zagradama izraz ima vrednost\t%d\n\n",x);
}
primer3_3
6. .
, .
, a+b/2 (a+b)/2 .
26
(<)
(|| &&).
: == (), != (
), < (), <= ( ), > (), >= (
). ( a < b)
: 1 (true), 0
(false) .
. (&&) 1 (true)
, (||) 1 (true)
, (!) 1 (true)
.
.
( 10.),
( 11.), ( 3.3)
, ( 14. 15.).
, 7. (int x, a=5,
b=6, c = 5, d = 1;):
9. x
=
a<b ||
a<c &&
c<d
x
=
5<6 ||
5<5 &&
5<1
x
=
1
||
0
&&
0
x
=
1
||
0
x
=
1
13. x
x
x
x
x
=
=
=
=
=
(a<b ||
(5<6 ||
(1
||
1
0
a<c) &&
5<5) &&
&&
0)
&&
c<d
5<1
0
0
,
.
3.3 primer3_3
27
primer3_4
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
/
primer3_4.c
/
/
Provera i izmena vrednosti odredenog bita u zadatom podatku
/
/
(maskiranje i promena vrednosti na nivou bita) /
#include <stdio.h>
main( )
{
unsigned short x, n;
printf("\nUnesite jedan pozitivan ceo broj u heksadecimalnom obliku");
printf("\n(Opseg broja: do 0xffff):\t");
scanf("%x",&x);
printf("\nUnesite redni broj bita koji se ispituje (od 1 do 16): ");
scanf("%d",&n);
if(x & (1 << (n-1))) /ako bit sa rednim brojem n ima vrednost 1/
printf("\n%d. bit zadatog podatka ima vrednost 1\n",n);
else
printf("\n%d. bit zadatog podatka ima vrednost 0\n",n);
x ^= (1 << (n-1));
primer3_4
.
( (~), (<<)
(>>)) ,
( (&),
(|) (^))
(
, ).
, if.
. if
( ) .
if , (
) ( ) , (
) . if else ,
( ) if .
( 3.4 ))
( 10, 11., 12.), ( 3.4 ))
( 14. 15.).
28
17. 22.
1.
n 1 ( 17.)
( 18.). n=2 (1 << (n-1))
: 00000000 00000010.
, (
: 0xaa) (&)
n- ( ):
00000000 10101010
(0xaa)
&
00000000 00000010
(0x02)
00000000 00000010
(0x02)
0, if 17.
.
, n 1
( 19.), ( 20.).
22.
n . n=2 (1 << (n-1))
: 00000000 00000010.
(^) n-
( ):
00000000 10101010
(0xaa)
^
00000000 00000010
(0x02)
00000000 10101000
(0xa8)
.
3.4 ) .
3.4 ) primer3_4 ( )
3.4 ) primer3_4 ( )
3.4 ) primer3_4 ( )
29
primer3_5
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
/
primer3_5.c
/
/
Odredjivanje veceg od dva zadata cela broja (ili prvog od jednakih)
/
#include <stdio.h>
main( )
{
int a, b, max;
printf("\nUnesite dva cela broja: ");
scanf("%d%d", &a, &b);
max = a;
if(b>max)
max = b;
primer3_5
if
. ( 12.)
max.
, ( 13.),
max ( 14.).
3.5 ) 3.5 ), .
3.5 ) primer3_5 ( )
3.5 ) primer3_5 ( )
30
primer3_6
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
/
primer3_6.c
/
/
Prikaz na ekranu poruke o relaciji
/
/
izmedju dva zadata cela broja, primenom naredbe if
/
#include <stdio.h>
main( )
{
int a, b;
printf("\nUnesite dva cela broja, a i b redom: ");
scanf("%d%d", &a, &b);
if(a == b)
printf("\na je jednako b\n\n");
else if(a > b)
printf("\na je vece od b\n\n");
else
printf("\na je manje od b\n\n");
}
primer3_6
,
:
(if 13.)
( 14.),
, (else
if 15.), ( 16.),
(else 17.),
, ( 18.).
3.6 ) 3.6 ), .
3.6 ) primer3_6 ( )
3.6 ) primer3_6 ( )
31
primer3_7
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
/
primer3_7.c
/
/
Odredjivanje veceg od dva zadata cela broja (ili prikaz poruke
/
/
ako su jednaki), primenom uslovnog operatora
/
#include <stdio.h>
main( )
{
int a, b;
printf("\nUnesite dva cela broja, a i b redom: ");
scanf("%d%d", &a, &b);
if(a == b)
printf("\n\n a je jednako b \n");
else
printf("\n\n%d je veci broj\n\n",(a > b) ? a : b);
}
primer3_7
,
( ).
13.:
(if 13.)
( 14.),
a (else 15.)
( 16.) (a > b) ? a : b
a (a > b)
b (a > b) .
x = (a > b) ? a : b; :
if(a>b)
x = a;
else
x = b;
3.7 ) 3.7 ), .
3.7 ) primer3_7 ( )
32
3.7 ) primer3_7 ( )
,
.
.
(
).
:
{ } .
0
, =0 ,
.
.
.
7., 8., 9. 10. .
If else
if-else ?:
= ==.
,
.
. (
: < =, > =, = = ! =
: <=, >=, == !=
)
(
: =<, => =!)
(;) If
If .
33
3.
_____________________________________________
1.
: a = 1, b = 1, c = 2, d = 2.
.
a, b, c d
:
a = b++;
c = d;
d = a + b;
2.
:
a = 0x01ff, b = 0x02fe.
C printf():
printf(%x, a&b);
printf(%x, a|b);
3.
:
if(a>b)
c = 1;
if(a>b)
d = 2;
if(a<=b)
c = 3;
if(a<=b)
d = 4;
34
printf(%x, a^b);
4.
,
a, b c, d 1 ( 0)
:
) a, b c ,
) a, b c ,
) a, b c
100.
5.
if x
y:
y = -10,
y = x,
y = x - 10,
x < 0,
0 x < 10,
ao je x 10.
35
3.
_____________________________________________
1.
C Da/Ne
( D N) .
, .
2.
,
, ( ) 1
1., 2., 3. ( 20, 21 22).
3.
,
.
4.
x y,
, z :
z = (min(x,y) + 0.5) / (1 + max2(x,y))
5.
x y,
, z :
z = min(x,y),
y 0,
y < 0.
z = max2(x,y),
6.
x , y z 2,
x y z, ,
.
36
4.
C
37
_____________________________________________
primer4_1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
/
primer4_1.c
/
/
Prikaz na ekranu neparnih brojeva od 1 do 10 (for petlja)
/
#include <stdio.h>
main( )
{
int x;
for(x=1; x<=10; x+=2)
printf("\n%d ", x);
printf("\n\n");
}
primer4_1
for (for )
( 9. 10.). 9. for ,
:
1. : x 1,
2. : x
10,
3. : x 2.
10. for ,
x.
e, for . ,
x 1 ( for ),
x<=10 ( for ) :
( x),
, x 2 (
for ). 1 9
( 4.1). 11. for (
; 10).
4.1 primer4_1
38
primer4_2
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
/
primer4_2.c
/
/
Prikaz na ekranu slova X u 3 reda i 10 kolona (ugnjezdena for petlja)
/
#include <stdio.h>
main( )
{
int i, j;
printf("\n");
for(i=0; i<3; i++)
{
for(j=0; j<10; j++)
printf("X");
printf("\n");
}
printf("\n");
primer4_2
for ( )
X, .
( i ). .
(i=0) ( 11.
15.) ( =0 <10) (
12. 13.) X .
(i=1 i=2)
( X
).
,
printf() ( 14.).
printf() ( 16.), X
( 4.2).
4.2 primer4_2
39
primer4_3
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
/
primer4_3.c
/
/
Izracunavanje sume S=1+2+..+n,gde je n zadati ceo broj (for petlja)
/
#include <stdio.h>
main( )
{
int n, s, suma=0;
printf("\nUnesite ceo broj n (1<=n<=100): ");
scanf("%d", &n);
if(n<1 || n>100)
/vrednost n van dozvoljenog opsega/
printf("\nZadati broj je van dozvoljenog opsega\n");
else
/vrednost n u dozvoljenom opsegu/
{for(s=1;s<=n;s++)
suma += s;
/skraceni zapis od: suma=suma+s/
printf("\nSuma prvih %d pozitivnih celih brojeva je %d\n\n",n,suma);
}
}
primer4_3
n
(n ).
(suma=0) 7.
.
( 4.3 a)), 12.
( 1 100) ( 13.).
, else ( 15. 19. ). for , s=1
s<=n ( n ) s. : suma = 0 + 1 + 2 + Z+ n
( 4.3 )).
4.3 a) primer4_3 ( )
4.3 ) primer4_3 ( )
40
primer4_4
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
/
primer4_4.c
/
/
Izracunavanje stepena realn osnove celobrojnim eksponentom
/
/
za zadate vrednosti osnove i eksponenta (for petlja)
/
#include <stdio.h>
main( )
{
int i, eksp;
float osnova, stepen = 1.0;
printf("\nUnesite za osnovu realan broj ");
scanf("%f", &osnova);
printf("\nUnesite za eksponent pozitivan ceo broj: ");
scanf("%d", &eksp);
if(eksp<=0)
printf("\nNije zadat pozitivan ceo broj za eksponent\n\n");
else
{
for(i=1;i<=eksp;i++)
stepen = osnova;
/stepen=stepenosnova/
primer4_4
( 12. 14.):
( 12.) ao ,
( 4.4 a) 4.4 )).
stepen (
9.) 1.0 ( ).
( 16. 17.).
21. 22. for eksp ,
. (
) .
osnova=10.5, eksp=2, , for 2
10.52 : stepen = 1.0 10.5 10.5 ( 4.4 ))
4.4 a) primer4_4 ( )
41
4.4 ) primer4_4 ( )
4.4 ) primer4_4 ( )
primer4_5
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
/
primer4_5.c
/
/
Izracunavanje srednje vrednosti zadatog niza realnih brojeva
/
/
koriscenje broja 0 kao STOP koda za kraj niza (while petlja)
/
#include <stdio.h>
#define STOP 0
main( )
{
int n=0;
float x, suma=0;
printf("\nUnesite niz realnih brojeva (0 za kraj):\n\n");
scanf("%f",&x);
while(x!=STOP)
{
suma += x;
n++;
scanf("%f", &x);
}
if(n==0)
printf("\nNije zadat niz realnih brojeva.\n\n");
else
printf("\nAritmeticka sredina zadatog niza je %f\n\n", suma/n);
}
primer4_5
,
, while (while ).
42
.
, while ( ).
, . for
.
( 10.)
(n=0, suma=0),
( 4.5 a)).
15. 19. while .
while ( 15.) (
16. 19.)
15. 0
while , 16.
19. suma
, n
. 0 while
.
( 21.), ,
while ( while
while )
( 22.), ,
(suma/n) 24. ( 4.5 )).
while
,
( )
4.5 a) primer4_5 ( )
4.5 ) primer4_5 ( )
43
primer4_6
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
/
primer4_6.c
/
/
Odredjivanje brojeva karaktera i linija u ulaznom tekstu (while petlja)
/
#include <stdio.h>
main( )
{
int c, nc=0, nl=0;
while((c = getchar()) != EOF)
{
nc++;
if(c=='\n')
nl++;
}
printf("\nUnetih karaktera: %d\nLinija: %d\n\n", nc, nl);
}
primer4_6
,
while ,
, .
, ,
.
nc nl 7.
while , while EOF
(EndOfFile) stdio.h.
,
Ctrl Z, .
while ( 9. 14.)
getchar(). stdio.h.
, ASCII
( ).
(c), .
, 9. o
( : while((c = getchar()) != EOF).
, :
(nc) ,
(nl)
(if 12. 13.).
4.6 .
44
4.6 primer4_6
primer4_7
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
/
primer4_7.c
/
/
Kopiranje ulaznog teksta na ekran, uz zamenu svakog niza
/
/
uzastopnih praznih znakova jednim praznim znakom (while petlja)
/
#include <stdio.h>
#define NIJE_PRAZNO
#define PRAZNO
#define HOR_TAB
'a'
''
'\t'
main( )
{
int c, predh_c = NIJE_PRAZNO;
while((c = getchar()) != EOF)
{
if(c == HOR_TAB)
c = PRAZNO;
if(c != PRAZNO || predh_c != PRAZNO)
putchar(c);
predh_c = c;
}
}
primer4_7
.
6., 7. 8. (
), NIJE_PRAZNO a
('a').
predh_c :
.
NIJE_PRAZNO. :
,
( 14. 15.),
45
,
( 17. 18.).
,
. putchar(c) ( stdio.h)
ASCII c (
),
predh_c
ASCII ,
, .
4.7 .
4.7 primer4_7
primer4_8
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
/
primer4_8.c
/
/
Kopiranje ulaznog teksta na ekran, po jednu rec u liniji (while petlja)
/
#include <stdio.h>
#define U_RECI
#define VAN_RECI
1
0
main( )
{
int c, poz = VAN_RECI;
while((c=getchar())!=EOF)
{
if(c==' ' || c=='\n' || c=='\t') /ako je prihvacen neki beli znak/
{
if(poz==U_RECI)
{
putchar('\n');
poz = VAN_RECI;
}
}
else
/ako nije prihvacen beli znak/
{
poz = U_RECI;
putchar(c);
}
}
}
primer4_8
.
U_RECI VAN_RECI (e 5. 6.)
46
poz ( :
), , :
(' ', \n', '\t')
U_RECI,
VAN_RECI,
,
U_RECI ( ) .
4.8 .
4.8 primer4_8
primer4_9
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
/
primer4_9.c
/
/
Prikaz na ekranu stepenova broja 2 (2, 4, 8, 16, `)
/
/
u zadatom opsegu od 0 do max (do..while)
/
#include <stdio.h>
#define MAX 100
main( )
{
int stepen = 2, max;
do
{
}
while(max<=2 || max>=MAX);
do
{
printf("\n%d", stepen);
stepen = 2;
}
while (stepen <= max);
printf("\n\n");
}
47
primer4_9
do..while ( do.. while). while,
( ).
( ) do while, do.. while
. , (
) . , .
2,
.
do.. while ( 11. 15.)
( 2 100).
: ( 4.9 a) )
max ( 12. 13.), ,
do.. while 15. ( 4.9 )).
, do.. while .
do.. while ( 17. 21.). ,
, stepen (
2) 2.
(
do..while 21.),
( 2).
, do.. while ,
2
( 4.9 )).
4.9 a) primer4_9 ( )
4.9 ) primer4_9 ( )
4.9 ) primer4_9 ( )
48
primer4_10
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
/
primer4_10.c
/
/
Prikaz na ekranu brojeva zadatog opsega, deljivih brojem 3(do..while)
/
#include <stdio.h>
main( )
{
int x, a, b, brojac = 0;
do
{
primer4_10
do..while , 9.
13. , , ( 4.10 a))
a b.
1 100,
( do..while )
( 10. 11.).
a b, 1 100 ,
do..while .
for ( 17. 25.)
, a b, if ( 18.
21.), 3 (
3 0). a b,
,
( ).
10 ( 10
) 23. 24. ( 4.10 )).
49
4.10 a) primer4_10 ( )
4.10 ) primer4_10 ( )
.
for
( ).
for
(
).
while
(
), do..while
( ,
).
, ; for .
; for
.
.
50
4.
_____________________________________________
1.
, a b, a<b (for
).
2.
(
.) (while ).
51
4.
_____________________________________________
1.
:
) 0 16 (for ),
) Z ASCII (for ).
2.
X Y
:
1:
XXXXX YYYYY XXXXX
2:
XXXXX YYYYY XXXXX
3:
XXXXX YYYYY XXXXX
X
Y (for ).
3.
(for ):
a)
4.
. , , 0.
(while ).
5.
:
B
\t
T
\n
N
52
5.
C
a : break
: continue
: switch
: goto
53
_____________________________________________
primer5_1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
/
primer5_1.c
/
/
Kopiranje sa tastature na ekran niza celih brojeva,
/
/
sve dok se ne unese 10 brojeva ili broj 0 kao STOP kod (break)
/
#include <stdio.h>
#define STOP 0
main( )
{
int i, x;
printf("\nUnesite cele brojeve (10 njih ili do stop koda 0):\n\n");
for(i=0; i<10; i++)
{
scanf("%d", &x);
if(x==STOP)
break;
printf("\n%d", x);
}
printf("\n\n");
}
primer5_1
( 5.1 a)), 10, 0 (
6.)
if , 14. 15,
( for ). , 0
( 14.) break ( 15.)
( 16. for )
( 19.) .
0 ( 5.1 )).
break (for, while,
do..while) switch , ,
.
5.1 a) primer5_1 ( )
54
5.1 ) primer5_1 ( )
primer5_2
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
/
primer5_2.c
/
/
Prikaz na ekranu brojeva od 1 do 30, deljivih brojem 3 (continue)
/
#include <stdio.h>
main( )
{
int x;
printf("\nBrojevi od 1 do 30 koji su deljivi brojem 3:\n");
for(x=1; x<=30; x++)
{
if(x%3 != 0)
continue;
printf("\n%d", x);
}
printf("\n\n");
}
primer5_2
12. 13.
, 1 30. if 12. x
3 ( if(x%3 != 0) ). continue,
, (
,
). ,
( 14.)
3, for for
30 ( 5.2).
continue
(for, while, do..while).
55
5.2 primer5_2
primer5_3
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
56
/
primer 5_3.c
/
/
Ponavljanje prompta, dok uneti broj nije u zadatom opsegu /
/
i crtanje histograma vrednosti ako je u zadatom opsegu (go..to)
/
#include <stdio.h>
main( )
{
int i, n;
start: printf("\nUnesite ceo broj od 0 do 10: ");
scanf("%d", &n);
if (n < 0 || n > 10 )
goto start;
else if (n == 0)
goto loc0;
else
goto loc1;
primer5_3
goto .
( 10. je start:) ( 10.
11.) ( 5.3 a)) : a
( 13.) ,
start ( 10.) ( 5.3 )).
, 0, ,
loc0 ( 20.),
( 21. 27.) ,
loc1(for , 23.
24., ,
( 10.).
goto ,
.
. goto
,
.
5.3 ) 5.3 ) ,
, , 5.3 ) 0
.
5.3 a) primer5_3 ( )
5.3 ) primer5_3 ( )
5.3 ) primer5_3 ( )
5.3 ) primer5_3 ( )
57
5.3 ) primer5_3 ( )
primer5_4
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
58
/
primer5_4.c
/
/
Izracunavanje srednje vrednosti s = (x1 + x2 +`+ xn)/n /
/
i standardne devijacije d = ((x12 + x22 +`+ xn2)/n s2)1/2 /
/
za zadati niz realnih brojeva x, duzine 1<=n<=10 (while(1) i break)
/
#include <stdio.h>
#include <math.h>
main( )
{
int i, n;
double x, s=0, d=0;
while(1)
{
printf("\nUnesite broj elemenata niza (1<=n<=10): ");
scanf("%d", &n);
if(n<1 || n>10)
/za broj n van zadatog opsega/
{
printf("\nZadati broj elemenata niza nije dozvoljen\n);
break;
/izlaz iz petlje/
}
s=d=0;
printf("Elementi niza realnih brojeva? ");
for(i=1; i<=n; i++)
{
scanf("%lf", &x);
s += x; d += xx;
}
s /= n;
d = sqrt(d/n - ss);
printf("\nSrednja vrednost: %f\n", s);
printf("\nStandardna devijacija: %f\n", d);
}
}
primer5_4
, (
11.), while(1) ( 13. 33.). while(1)
( 1),
(break 19. if , 17).
:
(n) ( 5.4 a)) ( 0 10),
( 5.4 )). ,
n ( 5.4 )).
( s,
),
( d, ).
( )
( s)
( 28.), (
d) ( 29.).
sqrt(), math.h ( 7.)
( ).
, , 0 10.
, , ,
.
5.4 a) primer5_4 ( )
5.4 ) primer5_4 ( )
5.4 ) primer5_4 ( )
59
primer5_5
1
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
/
primer5_5.c
/
/
Prikaz bitova svake zadate celobrojne vrednosti (u opsegu 2 bajta)
/
/
broj 0 je stop kod za unos brojeva (naredbe while i break)
/
#include <stdio.h>
#define STOP
#define VEL_BAJTA
#define VEL_RECI
0
8
16
main( )
{
int broj, poz_bita;
while(1)
{
printf("\n\nUneti c broj (od 0 d 255) u decimalnom obliku: ");
scanf("%d", &broj);
if(broj==STOP)
break;
primer5_5
while(1) ( 13. 31. ),
( break 18., 17.).
( ),
:
0, .
for
.
VEL_BAJTA VEL_RECI, a
e e. VEL_RECI for ( 22.).
( broj)
60
5.5 a) primer5_5 ( )
5.5 ) primer5_5 ( )
5.5 ) primer5_5 ( )
5.5 ) primer5_5 ( )
61
primer5_6
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
/
primer5_6.c
/
/
Odredjivanje u ulaznom tekstu broja praznih karaktera, kao i broja
/
/
znakova: tacka, zarez, dvotacka i tacka-zarez (naredbe switch i break)
/
#include <stdio.h>
main( )
{ int c, prazno=0, interp=0;
while((c=getchar())!=EOF)
switch(c)
{
case ' ':
prazno++;
break;
case '.':
case ',':
case ':':
case ';':
interp++;
break;
default:
break;
}
printf("\nBroj praznina: %d", prazno);
printf("\nBroj znakova tacka, zarez, dvotacka i tacka-zarez: %d\n", interp);
}
primer5_6
switch.
, ,
( ).
else else if if.
, switch ( 11.)
c, ASCII
( getchar() 10.).
( EOF),
.
getchar() stdio.h
, . ,
, ( ,
putchar(), stdio.h). ,
, ,
, (
Enter).
62
(
), ,
Enter. , conio.h,
.
:
a (case ' ':)
( 13.: prazno++) switch
( break 14.),
a ( ('.'),
(','), (':') - (';'))
(
19.: interp++) switch ( break
20.).
switch .
( 19. 20.)
() . 15. 20.
:
case '.':
interp++;
break;
case ',':
interp++;
break;
case ':':
interp++;
break;
case ';':
interp++;
break;
, switch (case)
. ,
default: , switch ( break
22.)
switch ,
( 5.6).
5.6 primer5_6
63
primer5_7
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
64
/
primer5_7.c
/
/
Prikaz na ekranu poruke o strelici zadatoj preko tastature
/
#include <stdio.h>
#include <conio.h>
/definisanje kodova za stampanjei citanje znakova pojedinih strelica/
enum {
STAMPA_STREL_GORE = 24,STAMPA_STREL_DOLE,
STAMPA_STREL_DESNO,STAMPA_STREL_LEVO
};
#define CITA_STREL_GORE
#define CITA_STREL_DOLE
#define CITA_STREL_DESNO
#define CITA_STREL_LEVO
72
80
77
75
main( )
{
int c, kraj = 0;
while(1)
{
printf("\nBirati strelicu %c %c %c %c\n",
STAMPA_STREL_GORE,STAMPA_STREL_DOLE,
STAMPA_STREL_DESNO,STAMPA_STREL_LEVO);
c = getch(); /citanje 1. dela koda/
printf("\nPrvi bajt koda: %d", c);
c = getch(); /citanje 2. dela koda/
printf("\nDrugi bajt koda: %d", c);
switch(c)
{
case CITA_STREL_GORE:
printf("\n\nIzabrali ste strelicu gore.\n"); break;
case CITA_STREL_DOLE:
printf("\n\nIzabrali ste strelicu dole.\n"); break;
case CITA_STREL_LEVO:
printf("\n\nIzabrali ste strelicu levo.\n"); break;
case CITA_STREL_DESNO:
printf("\n\nIzabrali ste strelicu desno.\n"); break;
default:
printf("\n\nNiste izabrali strelicu.\n"); kraj =1; break;
}
if(kraj)
break;
}
}
primer5_7
/
.
conio.h.
getch() conio.h
, .
( 8. 9.)
.
, ,
enum. #define.
8. 9. :
#define STAMPA_STREL_GOR
24
#define STAMPA_STREL_DOL
25
#define STAMPA_STREL_DESNO
26
#define STAMPA_STREL_LEVO
27
( 8. 9.) (24)
,
, (25, 26 27).
,
0).
, ,
ASCII , 12. .
. , , , , PageUp, PageDown,
Home, End, Insert, Delete, .
(0xE0),
( printf()).
11. 14. (
0,
).
while(1) ( 20. 22.)
( 5.7 a)).
( 24. 26.) getch(),
conio.h ( 5.). ,
getchar(), , .
getchar() getch() ( )
( Enter
).
getch() ( 24. 26.), , ,
25. 27. .
c, switch . c,
( case ).
, ,
break switch.
, default ( switch).
5.7 ) 5.7 ) ,
, 5.7 ) .
65
5.7 a) primer5_7 ( )
5.7 ) primer5_7 ( )
5.7 ) primer5_7 ( )
5.7 ) primer5_7 ( )
,
, break continue.
default, switch .
. (
.)
break switch
.
break while(1)
, .
66
5.
___________________________________________
1.
switch if .
if(a == 0)
b++;
else if(a==1)
c++;
else if ((a == 2) || (a == 3) || (a == 4))
d++;
2.
, ( 2,
(d/n) (switch ).
67
5.
___________________________________________
1.
(
n, 1<=n<=10,
)
. 0
(break).
2.
( , \t,\v \n),
(switch).
3.
(+, -, , / %), ,
( )
(switch).
4.
ax2 + bx + c = 0
( ) (switch).
a 0 d = b2 4ac :
d > 0:
d = 0:
x1 =
b+ d
2a
x1 =
b
2a
x1 =
b
2a
x1 =
c
b
d < 0:
a = 0
x2 =
y1 =
d
2a
b d
2a
x 2 = x1
b 0:
a = 0 b = 0: .
68
y 2 = y1
6.
C
69
_____________________________________________
primer6_1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
/primer6_1.c/
/Stampanje na ekranu tabele sa rednim brojevima, indeksima,/
/vrednostima i histogramom vrednosti elemenata inicijalizovanog niza/
#include <stdio.h>
#define MAX 5
main( )
{
int i, j, niz[] = {15, 3, 9, 7, 11};
printf("\nRBr\tIndeks\tVrednost\tHistogram\n");
for(i=0; i<MAX; i++)
{
printf("\n%d\t%d\t%d\t\t",i+1,i,niz[i]);
for(j=0; j<niz[i]; j++)
printf("");
}
printf("\n\n");
}
primer6_1
.
(char, int,
float,...). (
) .
( 9.)
(niz). ,
(
).
11. , for
( 12. 17.) :
, , ( for ,
15. 16.).
( 1. ).
1. 0, MAX MAX -1
( 6.1).
.
(niz[i]). 0 ( )
MAX-1 ( ), MAX.
.
70
6.1 primer6_1
primer6_2
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
/primer6_2.c/
/prikaz na ekranu neinicijalizovanog i inicijalizovanog/
/niza celih brojeva/
#include <stdio.h>
#define MAX 10
main( )
{
int i, opcija, niz[MAX];
printf("Neinicijalizovan sadrzaj deklarisanog niza:");
for(i=0; i<MAX; i++)
printf("\n%d ",niz[i]);
printf("\nDa li zelitie da inicijalizujete niz (D/N): ");
opcija = getchar();
if(opcija =='D' || opcija =='d')
{
printf("\nUnesite cele brojeve: \n");
for(i=0; i<MAX; i++)
{
printf("niz[%d] = ", i);
scanf("%d",&niz[i]);
}
printf("\nInicijalizovan sadrzaj niza:");
for(i=0; i<MAX; i++)
printf("\n%d ",niz[i]);
}
}
primer6_2
, MAX
( 10).
, ( 9.).
71
6.2 a) primer6_2 ( )
6.2 ) primer6_2 ( )
6.2 ) primer6_2 ( )
72
primer6_3
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
/primer6_3.c/
/Izracunavanje srednje vrednosti zadatog niza celih brojeva/
#include <stdio.h>
#define MAX 10
main( )
{
int i, n, niz[MAX], suma = 0;
do
{
}
while(n<=0 || n>MAX);
printf("\nUnesite vrednosti elemenata niza: ");
for(i=0; i<n; i++)
{
scanf("%d", &niz[i]);
suma += niz[i];
}
printf("\nSrednja vrednost zadatog niza je %f\n", (float)suma/n);
}
primer6_3
, 8., ,
(MAX) .
,
(n), do.. while ( 11. 12.)
, , 0 MAX ( 6.3 a) 6.3 )).
( 6.3 )),
for ( 17. 20.) ( i=0 i<n)
i
suma ( 19.), .
, ( 21.)
, ( 6.3 )).
6.3 a) primer6_3 ( )
6.3 ) primer6_3 ( )
73
6.3 ) primer6_3 ( )
6.3 ) primer6_3 ( )
primer6_4
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
/primer6_4.c/
/Odredjivanje indeksa i vrednosti najveceg elementa/
/zadatog niza realnih brojeva, duzine n (n<=50)/
#include <stdio.h>
#define MAX 10
main( )
{
int i, imax = 0;
float niz[MAX];
primer6_4
10. ( 6.4 )),
( 6.4 )) .
74
( 9.)
1. if ( 17.) ,
, .
6.4 a) primer6_4 ( )
6.4 b) primer6_4 ( )
primer6_5
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
/primer6_5.c/
/Razvrstavanje slucajno generisanih celih brojeva (opseg od 0 do 10)/
/u dva niza: parnih u jedan, a neparnih u drugi niz/
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
main( )
{
int i, j=0, k=0, x, a[MAX], b[MAX];
printf("\nSlucajno generisani niz brojeva:\n");
for(i=0; i<MAX; i++)
{
printf("%d ", x = rand( )/((double)RAND_MAX+1)*10);
if(x%2==0)
a[j++] = x;
/a[j++] = x; a[j] = x; j++;/
else
b[k++] = x;
/b[k++] = x; b[k] = x; k++;/
}
printf("\n\nNiz parnih brojeva:\n");
for(i=0; i<j; i++)
printf("%d ", a[i]);
printf("\n\nNiz neparnih brojeva:\n");
for(i=0; i<k; i++)
printf("%d ", b[i]);
printf("\n\n");
}
75
primer6_5
rand(),
stdlib.h. ,
0 RAND_MAX ( 32767
(0x7fff)). ( 0 10)
( 0 RAND_MAX) , 14:
x = rand( )/((double)RAND_MAX+1)10
:
ko je rand( ) broj 1, x
1/(double)3276810 = 0.000305, 0,
ko je rand( ) broj 1000, x
10000/(double)3276810 = 3.051758, 3,
ko je rand( ) broj 32767, x
30000/(double)3276810 =
9.155273, 9.
for ( 13. 19.) 10
:
, a (a[j]), j
0), ( j ).
16.,
a[j++] = x;
:
a[j] = x;
j++;
a[j] x,
j,
b (b[k]), k
0), ( k ). (
,
.)
a b ( a j, b k).
( 22. 23., 26. 27.)
( 6.5).
6.5 primer6_5
76
primer6_6
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
/primer6_6.c/
/Formiranje niza c od dva zadata niza celih brojeva a i b/
/(svaki duzine 5) na sledeci nacin: a[0]+b[4],..a[4]+b[0]/
#include <stdio.h>
#define MAX 5
main( )
{
int i, a[MAX], b[MAX], c[MAX];
printf("\nUnesite prvih %d celih brojeva (elemente niza a): ", MAX);
for(i=0; i<MAX; i++)
scanf("%d", &a[i]);
printf("\nUnesite drugih %d celih brojeva (elemente niza b): ", MAX);
for(i=0; i<MAX; i++)
scanf("%d", &b[i]);
printf("\nVrednosti elemenata niza c: ");
for(i=0; i<MAX; i++)
{
c[i] = a[i] + b[MAX-1-i];
printf("%d ", c[i]);
}
printf("\n\n");
}
primer6_6
a b ( ) c (
), 9., .
( 12. 13.)
a, ( 16. 17.) b. a b
MAX, 5 ( 6.6 a) 6.6 )).
( 20. 23.), MAX
c. c a
b, c
a b, ... ( 6.6 )).
6.6 a) primer6_6 ( )
6.6 ) primer6_6 ( )
77
6.6 ) primer6_6 ( )
primer6_7
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
/primer6_7.c/
/Ciklicno pomeranje niza slucajno generisanih celih brojeva/
/(opseg od 0 do 100), duzine 10, za jedno mesto u levo/
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
main( )
{
int i, pom, niz[MAX];
printf("\nNiz slucajno generisanih brojeva:\n");
for(i=0; i<MAX; i++)
{
printf("%d ",niz[i] = rand()/((double)RAND_MAX + 1)100);
if(i%10 == 9)
/stampa najvise 10 elemenata u liniji/
printf("\n");
}
/ Ciklicno pomeranje /
pom = niz[0];
for(i=0; i<MAX-1; i++)
niz[i] = niz[i+1];
niz[MAX-1] = pom;
printf("\nCiklicno pomereni niz za jedno mesto ulevo:\n");
for(i=0; i<MAX; i++)
{
printf("%d ", niz[i]);
if(i%10 == 9)
printf("\n");
}
}
primer6_7
( MAX,
10), ,
rand(). 0
100 6.5 .
15. 16., 10 .
9, 19, 29, ... , .
78
( 20. 23.). pom
. for ( 21. 22.)
niz[i] = niz[i+1], i 0
MAX-1 ( ). ,
pom ( 6.7).
6.7 primer6_7
primer6_8
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
/primer6_8.c/
/Nalazenje zadate kombinacije bitova u zadatom nizu elemenata/
#include <stdio.h>
#include <stdlib.h>
#define MAX
#define VEL_RECI
#define MASKA
#define OPSEG
10
16
0x7
0xff
main( )
{
int i, niz[MAX], broj, poz_bita, nadjen = 0;
printf("\nSlucajno generisani brojevi(opseg od 0 do %d):\n\n", OPSEG);
for(i=0; i<MAX; i++)
printf("%d ",niz[i] = rand()/((double)RAND_MAX + 1)OPSEG);
do
{
}
79
primer6_8
MAX,
10 ( 12.), ( )
( 14. 16.),
rand(). , 0 255 (0xff)
( 6.8 a)).
3 , 0 7, ( 18. 21.)
(for 23.)
16 ( 2 ) (for 24.)
if ( 25.)
.
niz[i], , (0x7,
)
( 25.).
, ,
( 6.8 )).
6.8 a) primer6_8 ( )
6.8 ) primer6_8 ( )
80
primer6_9
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
/primer6_9.c/
/Prikaz na ekranu elemenata zadate matrice (dvodimenzionog niza)/
#include <stdio.h>
#define MAX1 2
#define MAX2 5
main( )
{
int i, j, niz[MAX1][MAX2] = {
};
/indeks kolone/
/indeks reda/
printf("\n\n");
}
primer6_9
, , ,
MAX1xMAX2 (2x5). MAX1 ,
MAX2 .
,
( 9. 10.).
for ( 11. 12.)
( (
)).
for ( 13. 17.)
, ( ),
(niz[i][j], i=0 i<MAX1 j=0 j<MAX2). O
for , 15. 16. ( 6.9).
6.9 primer6_9
81
primer6_10
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
82
/primer6_10.c/
/Zamena mesta dvema kolonama zadate matrice/
#include <stdio.h>
#define MAX1 10
#define MAX2 10
main( )
{
int i, j, m, n, n1, n2, pom, niz[MAX1][MAX2];
do
{
primer6_10
, ,
( 9.),
.
. do.. while
( 11. 14.), ( 6.10 a)). m
1 X1, n 1
X2. m<1 m>MAX1 (m ) n<1
n>MAX2 (n ), ( 14.)
(m n) ,
for ( i j)
: &niz[i][j], i=0 i<m j=0 j<n ( 6.10 )). for
( 23. 27.)
( 6.10 )),
( 29. 32. )
, for ( 34. 36.)
( 6.10 )).
32.
. n1<1 n1>n
n2<1 n2>n, . ,
n1 n2, , , (pom).
( i=0 i<m)
n1 n2 ( n1-1 n2-1).
6.10 a) primer6_10 ( )
6.10 ) primer6_10 ( )
6.10 ) primer6_10 ( )
83
6.10 ) primer6_10 ( )
int, long.
.
,
0 1.
MAX, MAX-1
(niz[MAX] niz ).
o .
84
6.
_____________________________________________
1.
20 , ,
0 100,
m (m
).
85
6.
_____________________________________________
1.
n
(n<=20):
) ,
)
.
2.
, n
(n<=20):
) ,
) a) .
3.
n (n<=20) , L (l) ili D (d),
m ( )
. 10 ,
, .
4.
( 50 )
:
95..100
10
65..74
7
85..94
9
55..64
6
75..84
8
0....54
5
5.
(
), n (n<=10) :
) 1,
) (1010...).
6.
:
) 4
, n<=10 ( ),
)
.
86
7.
C
stringova
stringova
String
stringova
stringova
87
_____________________________________________
primer7_1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
/primer7_1.c/
/Prikaz na ekranu poruka sa predefinisanim sadrzajem/
#include <stdio.h>
#define MAX 30
main( )
{
char ime[MAX+1];
const char vezba7[] = "Znakovni nizovi u programima na jeziku C";
puts("Unesite svoje ime i prezime:");
gets(ime);
printf("\nZdravo %s\n", ime);
printf("\nAnalizirate program vezbe 7.: \%s\\n\n", vezba7);
}
primer7_1
, ,
.
( , )
: 'A', '5', '!'.
,
, (char), .
: char slovo = 'A';
char cifra = '5'; char znak = !;
( , Visa elektrotehnicka skola u
Beogradu, , Vojvode Stepe 283, ,
011-471-365,
. ,
string. String
. string
n string
n+1 ( null ('\0') stringa).
string ( stringovima,
, , , , , ...).
88
string, ime
MAX+1 ( 8.), MAX MAX ,
null , stringa.
stringa
, 9. ( string vezba7
( 40 ),
string (40+1)sizeof(char) .
11. 12. puts()
gets() stdio.h, string (
7.1 a)) string , . puts()
string,
, gets() string,
.
puts()
( 11.), (
) ( printf()).
gets() string (ime) 12., MAX
.
string
printf(),
(Zdravo) string (ime) 14.,
string 16.
( 7.1 ). string %s.
, string ime ,
, string
vezba7 ,
, ,
, .
7.1 a) primer7_1 ( )
7.1 ) primer7_1 ( )
89
primer7_2
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
/primer7_2.c/
/Prikaz na ekranu naziva vezbe sa zadatim rednim brojem/
#include <stdio.h>
#define BROJ_VEZBI
8
#define IME_VEZBE
80
main( )
{
int rbr;
const char vezbe[BROJ_VEZBI][IME_VEZBE+1] =
{"Osnovne komponente programa na jeziku C",
"Osnovni tipovi podataka u jeziku C",
"Operatori, izrazi i naredba selekcije u programima na jeziku C",
"Naredbe ciklusa u programima na jeziku C",
"Naredbe skokova i visestruke selekcije u programima na jeziku C",
"Numericki nizovi u programima na jeziku C",
"Znakovni nizovi u programima na jeziku C",
"Sortiranje i pretrazivanje nizova u programima na jeziku C"};
do
{
printf("Unesite redni broj vezbe (od 1. do %d.):", BROJ_VEZBI);
scanf("%d", &rbr);
}while(rbr<1 || rbr>BROJ_VEZBI);
printf("\nVezba broj %d. je:\n\n\%s\\n\n", rbr, vezbe[rbr-1]);
}
primer7_2
( 9.)
char. BROJ_VEZBI stringova,
string IME_VEZBE+1 (IME_VEZBE
null ). 10. 17.
stringova ( ).
( 23.)
( 7.2 a)) do..while ( 18.
21.). 7.2 ).
7.2 a) primer7_2 ( )
7.2 ) primer7_2 ( )
90
primer7_3
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
/primer7_3.c/
/Formiranje izvestaja o brojevima zadatih pojedinih ocena/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MIN 0
#define MAX 10
#define BROJ_ZNAKOVA 20
main( )
{
int i, ocena, rezultati[MAX+1];
char bafer[BROJ_ZNAKOVA +1];
/Inicijalizacija/
for(i=MIN; i<=MAX;i++)
rezultati[i] = 0;
/Prikupljanje podataka/
printf("\nUnesite ocenu u opsegu od %d do %d", MIN, MAX);
printf("\nPotvrdite svaki podatak tasterom Enter");
printf("\nUnosenje se zavrsava izborom znaka koji nije cifra\n\n");
while(1)
{
/Prihvatanje ulaznog podatka/
printf("Ocena: ");
gets(bafer);
/Provera da li je komanda za kraj/
/*(znak koji nije cifra)*/
if(!(isdigit(bafer[0])))
{
putchar('\n');
break;
}
/Konverzija ulaznog znakovnog niza u ceo broj/
ocena = atoi(bafer);
/Provera da li je podatak u dozvoljenom opsegu/
if(ocena >= MIN && ocena <=MAX)
rezultati[ocena]++;
else
{
printf("GRESKA: podatak je van dozvoljenog opsega\n");
continue;
}
}
/Izvestaj o rezultatima/
printf("Rezultati:\n\nOcena\tBroj pojavljivanja\n");
for(i=MIN;i<=MAX;i++)
printf("%d\t%d\n", i, rezultati[i]);
}
91
primer7_3
( 10.)
rezultati,
( 0 10):
0, 1,....
11. string bafer BROJ_ZNAKOVA +1.
for ( 14. 15.)
rezultati.
( 18., 19. 20.) while(1) :
gets()
string bafer ( 25.),
, atoi(),
stdlib.h, string bafer
ocen.
( 37.),
rezultati,
( 38.). ,
while(1) ( ).
7.3 a) , 7.3 ),
while(1) ,
, ( ).
7.3 a) primer7_3 ( )
7.3 ) primer7_3 ( )
92
primer7_4
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
/primer7_4.c/
/Kalkulator sa 4 osnovne aritmeticke operacije/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX_BAF 20
/maksimalna duzina ulaznog podatka je 20/
main( )
{
int znak, nepoznat = 0;
double broj1, broj2;
/operandi su realni brojevi/
char bafer[MAX_BAF+1];
while(1)
{
/Prihvatanje brojeva i operatora/
printf("\nPrvi broj: "); gets(bafer);
if(!isdigit(bafer[0]) && bafer[0]!='-')
{
putchar('\n');
break;
}
broj1 = atof(bafer);
printf("\nDrugi broj: "); gets(bafer);
if(!isdigit(bafer[0]) && bafer[0]!='-')
{
putchar('\n');
break;
}
broj2 = atof(bafer);
printf("\nOperator: ");
znak = getchar(); getchar();
93
primer7_4
,
.
(
( , , )
. while(1) ( 12.).
14. , string bafer
string ( )
- ( ) while(1).
atof().
20.
.
27.
. , getchar()
znak.
getchar() Enter,
(
).
(switch(znak) 30.)
( 7.4 a)).
(default : 42.) nepoznat
while(1) .
( 7.4 )).
7.4 a)
primer7_4 ( )
94
7.4 )
primer7_4 ( )
primer7_5
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
/primer7_5.c/
/Osnovne operacije nad stringovima/
#include <stdio.h>
#include <string.h>
#define MAX 80
main( )
{
char string1[MAX+1], string2[MAX/2+1];
int l1,l2, x;
do
{
95
primer7_5
stringovima.
8. stringovi. String1 MAX ,
string2 MAX/2 .
do..while ( 11. 15.) ,
string (MAX/2), do..while (
17. 21.), string (MAX/2) 7.5 a) 7.5 )
24. 29. stringova
( l1 l2,
stringova, strlen() string.h)
.
32. 38. stringa,
strcmp() string.h.
0, stringova , 0, string
( ASCII Astring Bstring),
0, string ( ASCII stringC,
stringB). , ASCII ,
65, 66, 98,... ( 11. ). strcmp()
(ASCII ) stringova.
strcat(string1, string2) string2
string1 stringa (string1)
( 7.5 )).
strcpy(string1, Novi string) strcpy(string1,
string2), Novi string
string2
stringa string1 ( ).
7.5 a) primer7_5 ( )
7.5 ) primer7_5 ( )
7.5 ) primer7_5 ( )
96
primer7_6
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
/primer7_6.c/
/Odredjivanje najduzeg i najkraceg reda od 20 zadatih redova teksta/
/STOP kod pri zadavanju redova teksta moze biti prazan red/
#include <stdio.h>
#include <string.h>
#define BROJ 20
#define DUZINA 80
main()
{
char stringovi[BROJ][DUZINA+1];
char string_max[DUZINA+1], string_min[DUZINA+1];
int i,imax,imin,l, lmin,lmax;
printf("\nUnesite 1. red teksta:\n");
gets(stringovi[0]);
imax = imin = 0;
lmax = lmin = strlen(stringovi[0]);
strcpy(string_max, stringovi[0]);
strcpy(string_min, stringovi[0]);
/Prihvatanje niza stringova/
for(i=1; i<BROJ; i++)
{
printf("\nUnesite %d. red teksta:\n",i+1);
gets(stringovi[i]);
if((l = strlen(stringovi[i])) == 0)
break;
/Trazenje najduzeg i najkraceg stringa u nizu/
if(l > lmax)
{
imax = i;
lmax = l;
strcpy(string_max, stringovi[i]);
}
if(l < lmin)
{
imin = i;
lmin = l;
strcpy(string_min, stringovi[i]);
}
}
printf("\nNajduzi od zadatih redova (%d karaktera)", lmax);
printf("je red broj %d. :\n%s\n", imax+1, string_max);
printf("\nNajkraci od zadatih redova (%d karaktera)", lmin);
printf("je red broj %d. :\n%s\n\n", imin+1, string_min);
}
97
primer7_6
stringova (stringovi)
( ),
stringove, string_max string_min,
stringova, .
( 15. 16.),
, stringa stringa
0 ( 17.), stringa
stringa stringa ( 18.)
stringa stringa
stringa ( 19. 20.).
, for ( 23. 41.) :
string (stringovi[i]),
string, for ( 27. ,28.).
stringa (stringovi[i])
stringa (lmax),
string : imax, lmax,
string_max ( 31. 35.),
stringa (stringovi[i])
stringa (lmin),
string : imin, lmin,
string_min ( 36. 40.).
7.6 a), 7.6 ), 7.6 ) 7.6 )
, (
, , ).
7.6 ) ..
7.6 a) primer7_6 ( )
7.6 ) primer7_6 ( )
7.6 ) primer7_6 ( )
98
7.6 ) primer7_6 ( )
7.6 ) primer7_6 ( )
string
( null ).
string,
null ( string
null ).
, stringova
, string . stringove:
char string1[20], string2[20];
string1 = string2
if(string1==string2)
if(string1<string2)
strcpy(string1, string2)
if(strcmp(string1, string2)==0)
if(strcmp(string1, string2)<0)
99
7.
_____________________________________________
1.
,
5 .
stringova ( ).
100
7.
_____________________________________________
1.
:
)
10, ,
) , ),
Kraj.
2.
C :
)
(_),
) , ), .
3.
10
( )
:
) (
),
) .
4.
) (
) :
1. Unos
2. Izmene
3. Prikaz
4. Izlaz
4,
) 1. ,
, ,
) 2.
,
) 3. .
101
102
8.
stringova
103
_____________________________________________
primer8_1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
104
/primer8_1.c/
/Sortiranje svakog zadatog niza celih brojeva/
/u neopadajuci poredak, METOD IZBORA/
#include <stdio.h>
#define MAX 10
main()
{
int i, j, n, pom, niz[MAX];
while(1)
{
/Zadavanje duzine niza/
printf("\n\nUnesite broj elemenata niza n (n<=%d): ",MAX);
scanf("%d", &n);
if(n<1 || n>MAX)
break;
/Zadavanje elemenata niza/
printf("Unesite celobrojne vrednosti elemenata niza: ");
for(i=0; i<n; i++)
scanf("%d", &niz[i]);
/Prikaz na ekranu originalnog niza/
printf("\nOriginalni niz:\t");
for(i=0; i<n; i++)
printf("%d ",niz[i]);
/Sortiranje niza u neopadajuci poredak/
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(niz[i] > niz[j])
{
pom = niz[i];
niz[i] = niz[j];
niz[j] = pom;
}
/Prikaz na ekranu sortiranog niza/
printf("\nSortirani niz:\t");
for(i=0; i<n; i++)
printf("%d ",niz[i]);
}
}
primer8_1
,
.
.
,
( 12. 22.), .
: niz[0] niz[1] niz[2] Z niz[MAX-1],
.
: niz[0] < niz[1] < niz[2] < Z< niz[MAX-1].
: niz[0] niz[1] niz[2] Z niz[MAX-1],
,
: niz[0] > niz[1] > niz[2] > Z> niz[MAX-1].
.
, (
) .
, ,
( 32.) ( 33. 36.).
.
30. 36. :
( 30.)
, (i=0) (i=n-2) ,
( 31.)
, .
(i=0):
j=i+1=1, niz[0] > niz[1], ,
j=i+2=2, niz[0] > niz[2], ,
:
:
j=n-1,
niz[0] > niz[n-1], .
.
(i=1):
j=i+1=2, niz[1] > niz[2], ,
j=i+2=3, niz[1] > niz[3], ,
:
:
j=n-1,
niz[1] > niz[n-1], .
,
,
.
(i= n-2):
j=i+1= n-1, niz[n-2] > niz[n-1], ,
105
,
.
( ) n :
i=0, (n-1) ,
i=1, (n-2) ,
:
i= n-3, ,
i= n-2, ,
:
S = 1 + 2 +...+ (n-2) + (n-1), a (1+(n-1))(n-1)/2 = n(n-1)/2.
( 4 4(4-1)/2 = 6).
, 0,
, n n(n-1)/2 (
6).
.
32. , if(niz[i] > niz[j]) if(niz[i] < niz[j]).
8.1 a) 8.1 ) ,
, 8.1 )
. 8.1 )
,
, 0 10.
8.1 a) primer8_1 ( )
8.1 ) primer8_1 ( )
8.1 ) primer8_1 ( )
106
8.1 ) primer8_1 ( )
primer8_2
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
/primer8_2.c/
/Sortiranje svakog zadatog niza celih brojeva/
/u neopadajuci poredak, METOD UMETANJA/
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
main()
{
int i, j, pom, niz[MAX];
/Prikaz na ekranu originalnog niza/
printf("\nOriginalni niz:\t");
for(i=0; i<MAX; i++)
printf("%d ", niz[i]= rand( )/((double)RAND_MAX+1)10);
/Sortiranje niza u neopadajuci poredak/
for(i=1; i<MAX; i++)
{
pom = niz[i];
for(j=i-1; j>=0; j--)
if(niz[j] > pom)
niz[j+1] = niz[j];
else
break;
niz[j+1] = pom;
}
/Prikaz na ekranu sortiranog niza/
printf("\nSortirani niz:\t");
for(i=0; i<MAX; i++)
printf("%d ",niz[i]);
printf("\n\n");
}
107
primer8_2
, ,
.
, 0 10 (
14. 15.) 18. 28. :
( 18.)
, (i=1) (i=n-1)
(pom = niz[i]).
( 21.)
,
.
(i=1):
pom = niz[1]
j=i-1=0, niz[0] > pom, :
niz[1] = niz[0],
: niz[0] = pom
.
(i=2):
pom = niz[2]
j=i-1=1, niz[1] > pom, :
niz[2] = niz[1].
j=i-2=0, niz[0] > pom, :
niz[1] = niz[0],
: niz[0] = pom.
.
(i= MAX-1):
j=i-1== MAX-2, niz[MAX-2] > pom, :
niz[MAX-1] = niz[MAX-2].
:
j=i-(MAX-1)=0, niz[0] > pom, :
niz[1] = niz[0],
: niz[0] = pom.
,
.
( ) n :
, n(n-1)/2 ( 4 a: 4(4-1)/2 = 6).
:
i=1, ,
i=2, ,
:
i= MAX-1, ,
n-1 ( 4 : 4-1=3).
108
, 0,
, n, n(n-1)/2.
, je
22. , if if(niz[j] > pom if(niz[j] < pom).
8.2 .
8.2 primer8_2
primer8_3
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
/primer8_3.c/
/Prikaz na ekranu vrednosti elemenata zadatog niza, bez ponavljanja/
#include <stdio.h>
#define MAX 10
main()
{
int i, j, nadjeni_isti;
float niz[MAX];
/Zadavanje niza/
printf("\n\nUnesite %d realnih brojeva:\n\n",MAX);
for(i=0; i<MAX; i++)
scanf("%f", &niz[i]);
/Prikaz elemenata niza bez ponavljanja/
printf("\nElementi zadatog niza, bez ponavljanja:\n\n");
for(i=0; i<MAX-1; i++)
{
nadjeni_isti=0;
for(j=i+1; j<MAX; j++)
if(niz[i]==niz[j])
{
nadjeni_isti=1;
break;
}
if(!nadjeni_isti)
printf("%f ", niz[i]);
}
printf("%f\n\n", niz[MAX-1]);
}
109
primer8_3
(
) , .
8. nadjeni_isti,
19. 0, .
12. 14. ( 8.3 a))
( ):
( 18.)
( 19.)
:
(i=0)
, .
(i=1)
.
(i=n-1)
.
, ,
niz[i] , nadjeni_isti
1
( break 24.)
, ,
nadjeni_isti 0 niz[i]
.
,
,
.
8.3 ) .
8.3 a) primer8_3 ( )
8.3 ) primer8_3 ( )
110
primer8_4
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
/primer8_4.c/
/Pretrazivanje zadatog niza celih brojeva,/
/METODOM LINEARNOG PRETRAZIVANJA/
#include <stdio.h>
#define MAX 10
main()
{
int i, n, niz[MAX], broj, nadjen;
while(1)
{
/Zadavanje duzine niza/
printf("\n\nUnesite broj elemenata niza n (n<=%d): ",MAX);
scanf("%d", &n);
if(n<1 || n>MAX)
break;
/Zadavanje elemenata niza/
printf("Unesite celobrojne vrednosti elemenata niza: ");
for(i=0; i<n; i++)
scanf("%d", &niz[i]);
/Zadavanje trazene vrednosti/
printf("Unesite trazenu celobrojnu vrednost: ");
scanf("%d", &broj);
nadjen = 0;
/Pretrazivanje niza/
for(i=0; i<n; i++)
if(niz[i]==broj)
{
nadjen = 1;
printf("\nVrednost %d ima %d. element niza.",broj,i+1);
}
if(!nadjen)
printf("\nVrednost %d nije nadjena u nizu.",broj);
}
}
primer8_4
, , .
: , .
111
.
( ) primer8_1.
( 8.4 a) 8.4 )),
( broj) 26. 27. ( 8.4 ))
nadjen 0 ( 28.),
( 31. 35.)
( 8.4 ))
nadjen 1.
0 ( 8.4 )).
, (
) .
8.4 a) primer8_4 ( )
8.4 ) primer8_4 ( )
8.4 ) primer8_4 ( )
8.4 ) primer8_4 ( )
8.4 ) primer8_4 ( )
112
primer8_5
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
/primer8_5.c/
/Pretrazivanje zadatog niza celih brojeva,/
/METODOM BINARNOG PRETRAZIVANJA/
#include <stdio.h>
#define MAX 10
main()
{
int i, niz[MAX], broj, nadjen=0;
int i_min=0, i_max=MAX-1, i_srednji;
/Formiranje niza/
for(i=0; i<MAX; i++)
niz[i] = 2i;
/Prikaz na ekranu originalnog niza/
printf("\nOriginalni niz:\t");
for(i=0; i<MAX; i++)
printf("%d ",niz[i]);
/Zadavanje trazene vrednosti/
printf("\n\nUnesite trazenu celobrojnu vrednost: ");
scanf("%d", &broj);
/Pretrazivanje niza/
while(i_min <= i_max)
{
i_srednji = (i_min + i_max)/2;
if(broj == niz[i_srednji])
{
nadjen = 1;
printf("\nVrednost %d ima ",broj);
printf("\n%d. element niza.\n\n",i_srednji+1);
break;
}
else if(broj < niz[i_srednji])
i_max = i_srednji - 1;
else
i_min = i_srednji +1;
}
if(!nadjen)
printf("\nVrednost %d nije nadjena u nizu.\n\n",broj);
}
113
primer8_5
,
.
i_min, i_max i_srednji. i_min
( 0), i_max
( MAX-1).
13. 14. (niz[i] = 2i, i=0 i<MAX),
, 0 2 (MAX-1).
( broj)
22. 23., , :
while , i_min <= i_max, i_srednji
i_min i_max ( 27.).
i_srednji
(
29. 34. ).
8.5 a) , 8.5 ).
i_srednji ,
i_srednji-1 (i_max i_srednji-1).
A
i_srednji ,
i_srednji+1 (i_min
i_srednji+1).
(
) .
( 4).
: 0 2 4 6 8 10 12 14 16 18,
i_srednji = (0 + 9)/2 = 4 ( ),
broj < niz[i_srednji], 4<niz[4],
i_max=i_srednji-1=3.
: 0 2 4 6,
i_srednji = (0 + 3)/2 = 1 ( ),
broj > niz[i_srednji], 4>niz[1],
i_min=i_srednji+1=2.
: 4 6,
i_srednji = (2 + 3)/2 = 2 ( ),
broj = niz[i_srednji], 4=niz[2],
4 2.
8.5 a) primer8_5 ( )
114
8.5 ) primer8_5 ( )
primer8_6
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
/primer8_6.c/
/Sortiranje zadatog niza imena po abecednom redu./
/Za kraj izvrsavanja programa treba uneti dve kose crte/
#include <stdio.h>
#include <string.h>
#define BROJ_IMENA 100
#define DUZINA_IMENA 20
main( )
{
char
spisak[BROJ_IMENA][DUZINA_IMENA+1],
pom_ime[DUZINA_IMENA+1];
int i, j, n = 0;
/Zadavanje niza imena/
printf("\nOriginalni niz imena:");
printf("\n(Za kraj uneti dve kose crte)\n\n");
do
gets(spisak[n]);
while(strcmp(spisak[n++],"//") != 0);
n--;
/Sortiranje po abecednom redu/
printf("\nNiz imena, sortiran po abecednom redu:\n");
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(strcmp(spisak[i], spisak[j]) > 0)
{
strcpy(pom_ime, spisak[i]);
strcpy(spisak[i], spisak[j]);
strcpy(spisak[j], pom_ime);
}
/Prikaz sortiranog niza imena/
for(i=0; i<n; i++)
puts(spisak[i]);
printf("\n");
115
primer8_6
.
( 16. 22.)
, .
strcmp(),
strcpy(). string.h.
:
spisak[0] spisak[1] spisak[1] spisak[BROJ_IMENA-1]
8.6 a) , 8.6 )
,
( ).
8.6 a) primer8_6 ( )
8.6 ) primer8_6 ( )
.
, .
116
8.
_____________________________________________
1.
,
n (n<=20) .
117
8.
_____________________________________________
1.
n (n<=20),
, :
) , ,
) , .
2.
, n (n<=20), , ,
, n+1.
3.
,
n (n<=20),
, .
4.
n
(n<=20), , (
: , ,...).
5.
string
.
118
9.
119
_____________________________________________
primer9_1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
/primer9_1.c/
/Prikaz na ekranu sadrzaja i adrese celobrojne promenljive/
/na dva nacina: direktno i indirektno (pomocu pokazivaca)/
# include <stdio.h>
main( )
{
int x = 1;
int ptr;
ptr = &x;
/deklaracija pokazivaca/
/inicijalizacija na adresu promenljive x/
primer9_1
(pointer) (
, ,
, ...) .
.
.
(
), ( ).
, ,
(
). ,
(
).
int ptr
9. (int ptr;). ()
, .
,
int. char
: char ptr;
double: double ptrZ .
120
9.1 primer9_1
primer9_2
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
/primer9_2.c/
/Prikaz na ekranu adresa elemenata nizova razlicitih tipova/
#include <stdio.h>
main( )
{
int i;
char cniz[10];
int iniz[10];
double dniz[10];
printf("\t\tchar\tint\tdouble\n\n");
for(i=0; i<10; i++)
printf("Element %d.\t%d\t%d\t%d\n",i+1,&cniz[i],&iniz[i],&dniz[i]);
}
121
primer9_2
, .
8. 10. : ,
int double (
10). 12.
( ), for ( 14.
15.) :
. 9.2
:
- char :
1,
- int :
4,
- double: 8.
,
: (
) .
9.2 primer9_2
primer9_3
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
122
/primer9_3.c/
/Prikaz na ekranu vrednosti elemenata/
/jednodimenzionalnog niza celih brojeva pomocu pokazivaca na niz/
#include <stdio.h>
main( )
{
int niz[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int ptr, i;
ptr = niz;
/pokazivac sadrzi adresu prvog elementa niza/
for(i=0; i<10; i++)
printf("%d\n",ptr++);
}
primer9_3
( 8.), ptr
int ( 9.).
: ( )
( ).
10. (ptr = niz;) ptr
( ).
( )
.
1,
. int ptr;
, ptr++;
: 4 ( int),
.
.
.
(
.)
for 12. 13. :
for(i=0; i<10; i++)
{
printf("%d\n",ptr);
ptr++;
}
,
.
( 9.3).
9.3 primer9_3
123
primer9_4
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
/primer9_4.c/
/Prikaz na ekranu sadrzaja znakovne promenljive/
/na dva nacina: direktno i indirektno (pomocu pokazivaca)/
#include <stdio.h>
main( )
{
char c;
char ptr;
ptr = &c;
c = 'A';
printf("\nDirektna dodela vrednosti:\tc = %c", c);
ptr = 'a';
printf("\nIndirektna dodela vrednosti:\tc = %c", c);
primer9_4
char ( 9.) o c
( 10.).
12. 13. (ASCII A)
c,
, .
15. 16. (ASCII a)
c, ,
, .
19. c
, . 9.4 .
9.4 primer9_4
124
primer9_5
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
/primer9_5.c/
/Prikaz na ekranu sadrzaja znakovnog niza/
/na dva nacina: direktno i indirektno (pomocu pokazivaca)/
#include <stdio.h>
main( )
{
int i;
char ptr;
char string[] = "Jedan znakovni niz.\n";
/Primena indeksiranja za prikaz znakovnog niza/
printf("\nPrikaz znakovnog niza pomocu indeksiranja:\t");
for(i=0; string[i]!='\0'; i++)
putchar(string[i]);
/Primena pokazivaca na znak za prikaz znakovnog niza/
printf("\nPrikaz znakovnog niza pomocu pokazivaca na niz:\t");
for(ptr = string; ptr != '\0'; ptr++)
putchar(ptr);
putchar('\n');
}
primer9_5
char ( 9.)
char ( 10.).
for 14. 15.
('\0'- )
( putchar()). for
(string[i], i
).
for 19. 20.
('\0'- )
( putchar()).
.
for
(ptr = string). , ptr!='\0',
(putchar(ptr);)
(ptr++).
( 9.5)
.
125
9.5 primer9_5
primer9_6
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
/primer9_6.c/
/Prikaz na ekranu sadrzaja niza karaktera/
/u direktnom i inverznom poretku/
#include <stdio.h>
main( )
{
char string[] = "abcdefg", ptr;
ptr = string;
/ptr sadrzi adresu prvog znaka u nizu/
printf("\nZadati znakovni niz u direktnom poretku:\t");
while(ptr)
putchar(ptr++);
/putchar(ptr++);{putchar(ptr);ptr++;}/
printf("\n\nZadati znakovni niz u inverznom poretku:\t");
while(--ptr >= string)
putchar(ptr);
printf("\n\n");
}
primer9_6
, ptr char (
) ( 8.). ptr
( ) ( 9.).
while 12. 13. ptr.
0 ('\0') while
ptr ptr
.
( 9.6).
while 16. 17. (
(\0') )
ptr.
(string) while ( 12.)
126
ptr.
( ) ( 9.6).
9.6 primer9_6
primer9_7
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
/primer9_7.c/
/Prikaz na ekranu odredjenog znaka u jednom redu teksta/
/na dva nacina: pomocu indeksa i pomocu pokazivaca/
#include <stdio.h>
#include <string.h>
#define MAX 80
main( )
{
int rbr, l;
char tekst[MAX+1], ptr;
ptr = tekst;
127
primer9_7
tekst, ptr ( 11. 12.).
( 9.7 ))
, ( 14. 15.). ,
do..while
( 9.7 ))
( 17. 20.).
24. ( )
.
28. ( )
. , (rbr-1)
(ptr) ,
(rbr-1). n ptr :
1.
2.
niz[0]
niz[1]
:
niz[i]
:
niz[n-1]
niz
(niz+1)
:
(niz+i)
:
(niz+n-1)
ptr
(ptr+1)
:
(ptr+i)
:
(ptr+n-1)
, .
,
, .
( 9.7)).
9.7 ) primer9_7 ( )
9.7 ) primer9_7 ( )
9.7 ) primer9_7 ( )
128
primer9_8
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
/primer9_8.c/
/Pomeranje pozitivnih elemenata zadatog niza celih brojeva/
/na pocetak niza i popunjavanje ostatka niza nulama/
#include <stdio.h>
#define MAX 10
main()
{
int i, n1, n2, niz[MAX];
int ptr1, ptr2;
ptr1 = ptr2 = niz;
do
{
129
primer9_8
: ,
.
( 9.)
ptr1 ptr2 ( 10.),
, .
11.
(ptr1 ptr2) ( ).
n1 ( 9.8 ))
( 9.8 )) ( 13. 20.).
for , 23.,
. , (
ptr1) 0, if 24.
25. 26.: ptr2
ptr1 ptr2
. ptr1
( 28.).
: ptr1
, ptr2
, .
,
ptr2. for n2
, ptr2 niz
( 31.).
( )
, for 35. 36.
.
for 39. 40. ,
( 9.8 ).
9.8 ) primer9_8 ( )
9.8 ) primer9_8 ( )
130
9.8 ) primer9_8 ( )
.
int
int,
int...
( )
( ).
(
).
( int)
( float).
(
).
,
1, .
131
9.
_____________________________________________
1.
:
#include <stdio.h>
main( )
{
char c, ptr_c;
ptr_c = X;
putchar(ptr_c);
2.
e :
int i, x = 10, y = 20, z[ ] = {10, 20, 30, 40};
int ptr;
ptr = &x;
:
y = ptr; ptr = 0; ptr = z; ptr = 1; (ptr+1) = 2; (ptr+2) = 3; (ptr+3) = 4;
:
printf(%d %d\n, x, y);
for(i=0; i<4; i++)
printf(%d ,(z+i));
3.
n (n10) ( : ,
). .
132
9.
_____________________________________________
.
1.
n (n80)
k :
) k ,
) k ,
) k.
2.
n (n80)
:
) ( :
, ...),
) ( :
, ...).
3.
n (n10),
. ,
.
4.
n
(n80) ,
: , \t, \v,
, \0.
133
134
10.
135
_____________________________________________
primer10_1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
/primer10_1.c/
/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;
}
/Definicija funkcije koja odredjuje veci od dva broja/
int max(int x, int y)
{
if(x == y)
return 0;
else
return ((x>y)?x:y);
}
primer10_1
main(). ,
a, (printf(),
scanf(), getchar(), putchar(), gets(), puts()Z).
, ,
. , ,
, .
,
.
,
, ANSII C
: (), .
136
. 6. :
max,
(
x y, int),
( int)
.
( 6.)
. (
) , (
).
( ) . ,
,
(
, ,
). , void
() .
( 10.1 )), max 14.
max
a b ( ) c.
max 14. ,
( 23. 28.).
.
23. () max. ,
,
(;),
( 24. 28.). , (
), , ,
. 24. max
,
return; 0 ( 25.)
. ( 26.) return;
( (x>y)?x:y).
, ,
. ( ,
int return 0;.)
void
return (
return ,
return. ).
max (x y)
(a b).
. max
, (
,
). .
, , .
137
max, return,
(0 )
c ( 14.). ( 15. 18.)
c ( 10.1 )).
20. (return 0;)
( )
. ,
.
.
return 0;.
,
,
.
10.1 ) primer10_1 ( )
10.1 ) primer10_1 ( )
primer10_2
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
138
/primer10_2.c/
/Odredjivanje najveceg od cetiri broja pomocu odgovarajucih funkcija/
/ (ako ima jednakih brojeva, vazi redosled zadavanja) /
#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;
}
20:
21:
22:
23:
24:
25:
26:
27:
primer10_2
.
7. 8.
7. max()
int int.
21. 23. max().
( 22.)
(
).
8. max4(),
int int.
25. 27. max4().
( 26.)
max() : max()
(x,y), max()
(z,w).
( 10.2 ))
( 14.)
printf() ( 10.2 )) max4()
(a, b, c d).
10.2 ) primer10_2 ( )
10.2 ) primer10_2 ( )
139
primer10_3
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
/primer10_3.c/
/ Odredjivanje faktorijela n! = n(n-1) (n-2) `321 /
/ zadatog prirodnog broja n, pomocu iterativne funkcije /
#include <stdio.h>
#define OPSEG 12
primer10_3
(n!=n(n-1)(n-2)Z321)
(n) ( while ).
8. ifakt(),
int long.
23. 32. ifakt(). ,
:
- rezultat
1 ( 24.),
- while 26. 29.
x ( ) 1 :
rezultat
140
x
x ( x, (x-1), (x-2),, 2),
- 31., rezultat.
( 10.3 )) .
1 12 ( long) (
18.)
ifakt() ( 10.3 )). 5
ifakt() (5)
: rezultat = 15432.
10.3 ) primer10_3 ( )
10.3 ) primer10_3 ( )
primer10_4
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
/primer10_4.c/
/Izracunavanje faktorijela zadatog broja pomocu rekurzivne funkcije/
#include <stdio.h>
#define OPSEG 12
primer10_4
(n!=n(n-1)(n-2)Z321)
(n), .
,
(
).
7. rfakt(),
int long.
22. 24. rfakt().
:
- 1
,
- 1, 1.
( 10.4 )) ( 1
12), long.
17.
rfakt() ( 5):
- a printf() rfakt(5),
- rfakt(5) rfakt(4) : 5 rfakt(4),
- rfakt(4) rfakt(3) : 4 rfakt(3),
- rfakt(3) rfakt(2) : 3 rfakt(2),
- rfakt(2) rfakt(1) : 2 rfakt(1),
- rfakt(1) : 1.
( 10.4 ))
(54321).
(
,
).
10.4 ) primer10_4 ( )
10.4 ) primer10_4 ( )
142
primer10_5
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
/primer10_5.c*/
/Izracunavanje vrednosti izraza a!/(b!(a-b)!)/
/pomocu funkcije koja odredjuje faktorijel broja/
#include <stdio.h>
#define OPSEG 12
primer10_5
: a!/(b!(a-b)!)
a b ( 10.5 )).
( 8.
25. 27.) .
( 10.5
)) :
( rfakt()), b ( rfakt(b)) a
b ( rfakt(a-b)),
( 20.).
10.5 ) primer10_5 ( )
143
10.5 ) primer10_5 ( )
primer10_6
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
144
/primer10_6.c/
/Postavljanje vrednosti bita na zadatoj poziciji/
/u zadatom broju, pomocu odgovarajucih funkcija/
#include <stdio.h>
#define JEDAN_BAJT
#define BAJTOVA
#define MASKA
8
/broj bitova u bajtu/
2
/opseg od dva bajta/
0xffff /svi bitovi maske imaju vrednost 1/
40:
41:
42:
43:
44:
45:
46:
47:
primer10_6
e e
1 (set) 0 (reset) .
10. 11. bit_set()
bit_reset(), int
unsigned.
41. 43. bit_set().
: x | (1 <<
(y-1)). (x) 1,
(y) ( ).
(|).
45. 47. bit_ reset ().
:
x & (MASKA ^ (1 << (y-1))). , (x)
0, (y) (
). (^)
(0xfff).
( 17.)
, (1 set 0 reset).
, ( 34.
36.) : broj (
) poz( ), .
, 0x4444 5,
x | (1 << (y-1)) 10.6 a):
01000100 01000100
00000000 00010000
01000100 01010100
(0x4444)
(1 << (5-1))
(0x4454)
, 0x4444 3,
x & (MASKA ^ (1 << (y-1))) 10.6 ):
&
01000100 01000100
11111111 11111011
01000100 01000000
(0x4444)
(0xffff ^ (1 << (3-1))
(0x4440)
145
10.6 )
primer10_6 ( )
146
10.6 )
Primer10_6 ( )
primer10_7
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
/primer10_7.c/
/Pomeranje bitova u zadatom broju, za zadati broj mesta,/
/u zadatom smeru i pomocu odgovarajucih funkcija/
#include <stdio.h>
#include <ctype.h>
#define JEDAN_BAJT
#define BAJTOVA
#define OPSEG
8
/broj bitova u bajtu/
2
/opseg od dva bajta/
0xffff /svi bitovi maske imaju vrednost 1/
147
primer10_7
.
11. pomeren(),
int int.
42. 44. .
, (z),
('D') (x)
(y).
( 43.). (x)
.
(broj), (pomeraj)
(smer) ( 10.7 ), 10.7 ) 10.7 )). ( 36.)
pomeren(), (broj,
pomeraj smer).
(%#x).
0x, 3 (D),
10.7 ):
10101010 10101010
(0x)
00010101 01010101
(0xaaaa >> 3: 0x1555 )
while(1)
( 16. 37.) 0 ( 23. 24.)
10.7 ) primer10_7 ( )
10.7 ) primer10_7 ( )
10.7 ) primer10_7 ( )
10.7 ) primer10_7 ( )
148
primer10_8
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
/primer10_8.c/
/Crtanje na ekranu okvira zadatih dimenzija./
#include <stdio.h>
#define HLIN
#define VLIN
#define UGAO
#define PRAZNO
#define MAX1
#define MAX2
'-'
'|'
'+'
''
50
20
149
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
primer10_8
. (
.
12., 13. 14. hokvir(),
vokvir() znakovi() :
hokvir() int ( )
(
),
vokvir() int (
) (
),
znakovi() int ( )
char (ASCII ).
42. 47. hokvir().
'+'
( 7. ), znakovi()
( 44.),
( 45.) ( 46.).
49. 54. vokvir().
:
( 50.), znakovi()
( 51.),
( 52.) ( 53.).
56. 61. znakovi(),
n (
ASCII ).
( 19. 22.)
( 24. 27.) ( 10.8 ) 10.8 )), :
hokvir(),
( 30.),
150
10.8 ) primer10_8 ( )
10.8 ) primer10_8 ( )
10.8 ) primer10_8 ( )
.
.
(),
(
) .
() -.
,
.
.
(int x, int) (int x, y).
.
return, .
151
10.
1.
:
) f1, k int float,
) f2, k float .
2.
:
void duplo_vece(int x);
}
{
return (2x);
3.
:
#include <stdio.h>
void stampa_poruku(void);
main()
{
stampa_poruku(\nU ovom kodu postoje sintaksne greske); }
void stampa_poruku(void);
{
printf(\nU ovom kodu postoje sintaksne greske);
return 0;
}
4.
a b k
0, b 0 ( a, b k
).
152
10.
1.
, min(x,y) max(x,y).
2.
:
( : ,
...).
3.
n (n80)
,
, ...,
, (L D).
4.
:
1
1
1
+
...
2!! 3!! 4!!
:
S =1+
n * (n 2) * ... * 3 *1, _ _ n
dupli _ fakt (n) = n!!=
n * (n 2) * ... * 4 * 2, _ _ n
,
.
5.
:
F(k,x) = f(f(Zf(x)Z)).
f k : f(x) = 2x x2. x k
.
153
154
155
1.
C
(1)
+
(1)
(x ) =
0
et
dt
1 + xt
( 2)
f ( x ) = 1 1! x + 2! x 2 3! x 3 + ... = ( 1) n ! x n
n
n =0
n. (2) x
x=0
(x
> xn+1 , xn = ( 1) n ! x n
n
, .
x (0<x<1).
1.
/Program za odredjivanje priblizne vrednosti zadatog integrala/
#include <stdio.h>
main()
{
double x,s=1,znak=-1,preth;
int i;
do
{
2.
,
(p1, p2, p3 p4), , disk parity (dp)
:
dp = p1 p2 p3 p4
XOR ( )
)
,
,
)
p3,
,
p3 dp
p1, p2 p4 (p3 = dp p1 p2 p4),
)
disk parity (dp)
dp p3 (dp = dp p3).
2.
/Program za izracunavanje vrednosti disk parity na osnovu zadatih
odgovarajucih podataka/
#include <stdio.h>
main()
{
unsigned short int p1,p2,p3,p4,dp,preth,i;
printf("Unesite cetiri prirodna broja\n");
scanf("%u%u%u%u",&p1,&p2,&p3,&p4);
printf("p1= %d u binarnom zapisu ",p1);
for(i=0;i<16;i++)
printf("%d",(p1>>(15-i))&1);
printf("\n");
printf("p2= %d u binarnom zapisu ",p2);
for(i=0;i<16;i++)
printf("%d",(p2>>(15-i))&1);
printf("\n");
printf("p3= %d u binarnom zapisu ",p3);
for(i=0;i<16;i++)
printf("%d",(p3>>(15-i))&1);
printf("\n");
printf("p4= %d u binarnom zapisu ",p4);
for(i=0;i<16;i++)
printf("%d",(p4>>(15-i))&1);
printf("\n");
157
158
3.
C
x ( ) ,
y n x,
p, . :
x=0000 1001 1101 1111, p=3,
y=0000 1001 0010 0111.
n=5
3.
/Program za invertovanje odredjenih bitova u zadatom podatku/
#include <stdio.h>
main()
{
unsigned short x,y,i,p,n,pom;
printf("Unesite vrednost promenljive x:");
scanf("%u",&x);
printf("x= %d u binarnom zapisu x=",x);
for(i=0;i<16;i++){
if(i%4==0) printf(" ");
printf("%d",(x>>(15-i))&1);
}
printf("\n");
do
{
159
4.
, Lagranzovog .
,
. ,
.
:
n
(x x
n
L =
n
i =1
j =1
j i
j =1
j i
(Lagranov )
(x
xj)
4.
/Program za izracunavanje vrednosti funkcije u nekoj tacki iz zadatog
intervala, pomocu Lagranzovog polinoma/
#include<stdio.h>
#define MAX 20
main()
{
float cvor[MAX],vrednost[MAX],tacka,s,p;
int n,imin=0,imax=0,i,j;
/*unosi se broj tacaka*/
while(1)
{
printf("\nKoliko ima tacaka (najvise %i)? ",MAX);
scanf("%i",&n);
if(n>0 && n<=MAX) break;
printf("\nVan opsega");
}
/*unos tacaka i vrednosti funkcije u tim tackama*/
printf("\nZadati tacke i vrednosti funkcije u datim tackama\n");
for(i=0;i<n;i++)
{
printf("\n%i. tacka i vrednost funkcije u datoj tacki:\n ",i+1);
scanf("%f%f",&cvor[i],&vrednost[i]);
for(j=0;j<i;j++)
if(cvor[i]==cvor[j])
{
printf("\nTacka vec postoji\n");i--;break;}
/*trazenje gornje i donje granice intervala*/
if(cvor[i]>cvor[imax]) imax=i;
if(cvor[i]<cvor[imin]) imin=i;
}
160
while(1)
{
printf("\nUneti tacku iz intervala (%.2f,%.2f)", cvor[imin],cvor[imax]);
printf(" u kojoj se izracunava vrednost funkcije ");
scanf("%f",&tacka);
if(tacka<cvor[imin] || tacka>cvor[imax])
{
printf("\nTacka se nalazi van zadatog intervala\n");break;
}
s=0.0;
for(i=0;i<n;i++)
{
p=1.0;
for(j=0;j<n;j++)
if(i!=j) p*=(tacka-cvor[j])/(cvor[i]-cvor[j]);
s+=p*vrednost[i];
}
printf("\nTrazena vrednost je %f\n",s);
}
}
161
5.
:
16- 16
: 1 , 0
.
, :
) ,
) ,
) ,
) .
5.
/Program za kontrolu osvetljenosti pomocu bitova odgovarajuceg registra/
#include <stdio.h>
main()
{
unsigned short int registar,i, m;
printf("Pocetni (slucajan) sadrzaj registra:\t");
for(i=0;i<16;i++)
{
if(i%4==0)
printf(" ");
printf("%d",(registar>>(15-i))&1);
}
/*Svetle sve sijalice*/
printf("\nSvetle sve sijalice:\t\t\t");
registar=registar|(~registar);
for(i=0;i<16;i++)
{
if(i%4==0)
printf(" ");
printf("%d",(registar>>(15-i))&1);
}
/*Svetli svaka druga sijalica*/
for(i=0;i<4;i++)
{
registar<<=4;
registar|=10;
}
printf("\nSvetli svaka druga sijalica:\t\t");
for(i=0;i<16;i++)
{
if(i%4==0)
printf(" ");
printf("%d",(registar>>(15-i))&1);
}
162
163
6.
.
:
+)
-)
*)
')
x)
i)
6.
/Program za realizaciju dozvoljenih operacija nad zadatim polinomima/
#include<stdio.h>
#include<ctype.h>
#define MAX 20
main()
{
float prvi[MAX+1],drugi[MAX+1],rezultat[2*MAX+1],s,x;
int n,m,i,j,znak,p,izvod;
char opcija;
while(1)
{
printf("\n\nOvo je program za rad sa polinomima\n");
printf("\n+) Sabiranje polinoma");
printf("\n-) Oduzimanje polinoma");
printf("\n*) Mnozenje polinoma");
printf("\n') Izvod polinoma");
printf("\nx) Vrednost polinoma u tacki");
printf("\ni) Izlaz");
printf("\n\nIzaberite opciju ");
opcija=tolower(getchar());
if(opcija=='i') break;
if(
opcija !='+' && opcija !='-' &&
opcija !='*' && opcija !='\'' && opcija !='x')
{
printf("\nNepoznata opcija\n");getchar();continue;
for(i=0;i<=MAX;i++)
prvi[i]=drugi[i]=rezultat[i]=rezultat[MAX+i]=0;
/*stepen prvog polinoma*/
do
{
printf("\nUnesite stepen prvog polinoma (<=%i)",MAX);
scanf("%i",&n);
}while (n<0 || n>20);
164
165
for(i=p;i>=0;i--)
rezultat[i]=prvi[i];
for(j=1;j<=izvod;j++)
{
p--;
for(i=0;i<=p;i++)
rezultat[i]=rezultat[i+1]*(i+1);
}
break;
case 'x':
printf("\nUnesite tacku u kojoj se racuna vrednost polinoma ");
scanf("%f",&x);
s=prvi[n];
for(i=n-1;i>=0;i--)
s=s*x+prvi[i];
rezultat[0]=s;
p=0;
break;
default:
break;
}
/*stampanje rezultata*/
printf("\nRezultat je:\n");
for(i=p;i>0;i--)
printf("(%.2f)*x^%i+",rezultat[i],i);
printf("(%.2f)",rezultat[0]);
fflush(stdin);
}
}
166
7.
(
: , , , , , )
( )
.
7.
/Program za sortiranje zadatih vremena/
/*Program pakuje vreme u 32 bita na sledeci nacin, od bita najvece tezine redom:*/
/*godina: 6 bitova (uzimaju se u obzir posledenje 2 cifre u godini)*/
/*mesec (<=12): 4 bita*/
/*dan (<=31): 5 bitova*/
/*sat (<24): 5 bitova*/
/*minute (<60): 6 bitova*/
/*sekunde(<60): 6 bitova*/
#include<stdio.h>
#include<ctype.h>
#define MAX 100
main()
{
unsigned int vremena[MAX]={0},pom,ispravno,n,i,j;
unsigned int godina,mesec,dan,sat,minut,sekunda, prestupna;
int z;
char opcija;
do
{
167
168
/*sredjivanje vremena*/
for(i=1;i<n;i++)
for(j=0;j<i;j++)
if (z*vremena[i]<z*vremena[j])
{
pom=vremena[i],vremena[i]=vremena[j],vremena[j]=pom;}
/*vracanje vremena i stampanje*/
putchar('\n');
for(i=0;i<n;i++)
{
printf("%2u.",(vremena[i]<<10)>>27);
printf("%2u.",(vremena[i]<<6)>>28);
printf("%4u. ",(vremena[i]>>26)+2000);
printf("%2u:",(vremena[i]<<15)>>27);
printf("%2u:",(vremena[i]<<20)>>26);
printf("%2u\n",(vremena[i]<<26)>>26);
}
putchar('\n');
}
169
8.
e (
) .
8.
/Program za proveru pravilno napisanih svih vrsta zagrada u zadatom tekstu/
#include<stdio.h>
#include<string.h>
#define VO '{'
#define VZ '}'
#define SO '['
#define SZ ']'
#define MO '('
#define MZ ')'
#define MAX 100000
main()
{
char tekst [MAX],tekst_c[MAX],znak;
int i=0,polazak=-1,duzina,pravilno=1,vo,vz,so,sz,mo,mz;
int levo=-1,desno=-1;
vo=vz=so=sz=mo=mz=0;
printf("\nUnesite tekst, za kraj Ctrl+z\n");
while((znak=getchar())!=EOF)
tekst[i++]=znak;
tekst[i]='\0';
duzina=i;
/*pravi se kopija, jer se ispravno napisan par zagrada
zamenjuje prazninom i bio bi izgubljen originalan sadrzaj*/
strcpy(tekst_c,tekst);
i=0;
/*prvo se proverava da li je isti broj otvorenih i zatvorenih zagrada
istog tipa i odredjuje se pozicija prve zatvorene zagrade*/
while(i<duzina)
{
switch(tekst_c[i])
{
170
case VO:
case SO:
case MO:
case VZ:
vo++;break;
so++;break;
mo++;break;
if(desno==-1)
desno=i;
vz++;
break;
case SZ:
case MZ:
default:
if(desno==-1)
desno=i;
sz++;
break;
if(desno==-1)
desno=i;
mz++;
break;
break;
}
i++;
}
if(vo!=vz || so!=sz || mo!=mz)
pravilno=0;
else
/*ako je jednak broj otvorenih i zatvorenih zagrada
proverava se da li su odgovarajuce*/
{
levo=desno-1;
while(pravilno && levo>=0 && desno<duzina)
{
/*ako se nadje otvorena zagrada, proverava se da li
odgovara zatvorenoj*/
if(tekst_c[levo]==VO || tekst_c[levo]==SO || tekst_c[levo]==MO)
if(tekst_c[levo]==tekst_c[desno]-2 ||
tekst_c[levo]==tekst_c[desno]-1)
{
tekst_c[levo]=tekst_c[desno]=' ';
/*ako jeste brisanje zagrada*/
while(tekst_c[desno]!=VZ && tekst_c[desno]!=SZ
&& tekst_c[desno]!=MZ && desno<duzina)
desno++ ;
levo=desno-1;
}
else
else levo--;
}
}
if(pravilno)
printf("\nSve zagrade su pravilno napisane\n");
else
printf("\nSve zagrade nisu pravilno napisane\n");
}
171
9.
. ,
1 4.
, 10.
,
.
9.
/Program za formatiranje zadatog teksta po kolonama/
#include<stdio.h>
#include<string.h>
#define PRAZNO 3
/*razmak izmedju kolona*/
#define EKRAN 80
/*sirina ekranskog reda*/
#define MAXKOL 4
/*maksimalan broj kolona*/
#define REDOVI 10
/*broj redova po strani*/
#define TEKST 100000
/*maksimalan broj znakova u tekstu*/
main()
{
char znak, prethodni;
char tekst[TEKST], red[TEKST/10][EKRAN+1], prazno[PRAZNO+1];
int i=0,kolona,sirina,duzina_teksta,n=0,pocetak_reda,kraj_reda,p,j;
int blok,pocetak_bloka,kraj_bloka, poslednja, maxn=0;
for(i=0;i<PRAZNO;i++)
prazno[i]=' ';
prazno[i]='\0';
printf("\nUnesite tekst, za kraj Ctrl+z\n");
p=0;
while((znak=getchar())!=EOF)
tekst[p++]=znak;
tekst[p]='\0';
duzina_teksta=p;
do
{
for(i=0;i<duzina_teksta;i++)
{
if(tekst[i]=='\n' || tekst[i]=='\t')
{
tekst[i--]=' ';
continue;
}
if(!(tekst[i]==' ' && prethodni==' '))
tekst[p++]=tekst[i];
prethodni=tekst[i];
}
tekst[p++]=' ';tekst[p]='\0';
/*provera da li je duzina reci veca od sirine kolone*/
for(i=0;i<p;i++)
if (tekst[i]!=' ')
n++;
else
{
if (n>maxn)
maxn=n;
n=0;
}
/*ako je duzina najduze reci veca od sirine kolone */
/*smanjuje se broj kolona na najveci moguci broj*/
if(maxn>sirina)
{
printf("\nPostoji rec cija je duzina veca od sirine kolone\n");
while(maxn>sirina)
{
kolona--;
sirina=(EKRAN-(kolona-1)*PRAZNO)/kolona;
}
printf("\nNajveci moguci broj kolona je: %i\n\n", kolona);
}
/*odvajaju se redovi velicine jedne kolone*/
poslednja=0;n=0;
pocetak_reda=0;
while(1)
{
kraj_reda=pocetak_reda+sirina-1;
if(kraj_reda>=duzina_teksta)
{
kraj_reda=duzina_teksta-1;
poslednja=1;
}
/*ako je registrovan kraj teksta, poslednji red nece imati punu duzinu
praznina se dodaje na kraj ako se kraj reda poklopi sa krajem stringa
da se tekst ne bi prekidao u pola reci*/
while(tekst[kraj_reda]!=' ')
kraj_reda--;
p=0;
for(i=pocetak_reda;i<kraj_reda;i++)
red[n][p++]=tekst[i];
173
red[n][p]='\0';
if(poslednja)
break;
pocetak_reda=kraj_reda+1;n++;
}
n++;
/*sada se svaki red dopunjuje do pune sirine kolone*/
for(i=0;i<n;i++)
{
for(j=strlen(red[i]);j<sirina;j++)
red[i][j]=' ';
red[i][j]='\0';
}
blok=REDOVI*kolona; /*blok je broj stringova po jednoj strani*/
/*stampanje formatiranog teksta na ekranu*/
getchar();
pocetak_bloka=0;
poslednja=0;
while(1)
{
printf("\n\n");
kraj_bloka=pocetak_bloka+blok-1;
if(kraj_bloka>=n)
poslednja=1;
for(i=0;i<REDOVI;i++)
for(j=0;j<kolona;j++)
{
p=j*REDOVI+i+pocetak_bloka;
if(j==0 && p>=n)
break;
else if(p>=n)
{
if(j==kolona-1)
printf("\n");
continue;
}
printf("%s",red[p]);
if(j!=kolona-1)
printf("%s",prazno);
else if(kolona!=1)
printf("\n");
}
if((j==0 && p>=n) || poslednja)
break;
printf("\nPritisni bilo koji taster za nastavak ");
pocetak_bloka=kraj_bloka+1;
getchar();
}
printf("\n\n");
}
174
10.
1 15,
44 :
, , ,
,
.
,
, .
10.
/Program za uredjivanje slucajno rasporedjenih brojeva u kvadratu 4x4/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 16
#define GRANICA 4
main()
{
int i,j,broj,p,imax,jmax,slozeno,identicno;
int mat[GRANICA+2][GRANICA+2],pom[MAX];
time_t timer;
printf("\nKoristeci prazno mesto, svaki broj postaviti na svoje mesto.");
printf("\nMoguce je samo horizontalno i vertikalno pomeranje broja.\n");
/*pokretanje generatora slucajnih brojeva pomocu tekuceg vremena*/
srand(time(&timer));
/*formiranje matrice 4x4*/
for(i=0;i<MAX;i++)
{
broj=rand();
if( broj>MAX || broj==0 )
{
i--;continue;
for(j=0;j<i;j++)
if(broj==pom[j])
{
i--;break;
}
if(j==i)
pom[i]=broj;
else
i--;
}
p=0;
for(i=1;i<GRANICA+1;i++)
for(j=1;j<GRANICA+1;j++)
mat[i][j]=pom[p++];
175
"); }
176
11.
.
n (n<=50) . ,
. , k-
. , k
. k
( , ).
,
.
11.
/Program za igru Vitezovi okruglog stola/
#include<stdio.h>
#include<string.h>
#define MAX 50
/*dozvoljen broj vitezova*/
#define MAXS 30
/*najveci broj znakova u imenu*/
main()
{
int n,i,indeks,k,rbr,izbacujemo,j;
char vitez[MAX][MAXS+1],pv[MAXS+1];
/*unos broja vitezova*/
do
{
printf("\nKoliko ima vitezova ");
scanf("%d",&n);
}while (n<0 || n>MAX);
/*Unos imena vitezova i provera da li ima istih*/
getchar();
printf("\nUnesite imena vitezova:\n");
for(i=0;i<n;i++)
{
gets(vitez[i]);
for(j=0;j<i;j++)
if(strcmp(vitez[i],vitez[j])==0)
{
printf("\nIme je vec uneto\n");
i--;
break;
}
}
/*Pronalazenje imena viteza koji je proglasen pocetnim*/
rbr=-1;
while(1)
{
printf("\nUnesite ime viteza od koga se krece\n");
gets(pv);
177
for(i=0;i<n;i++)
if(strcmp(vitez[i],pv)==0)
{
rbr=i;
break;
}
if(rbr<0)
printf("\nTaj vitez ne postoji\n");
else
break;
}
/*Ako je k negativno smer je u levo a ako je pozitivno smer je u desno*/
while(1)
{
printf("\nKoji po redu vitez odlazi? \n");
printf("(minus je za smer u levo, plus za smer u desno) ");
scanf("%i",&k);
if(k!=0)
break;
printf("\nBroj mora biti razlicit od nule.\n");
}
/*Ako je k<0 invertujemo niz*/
if(k<0)
{
for(i=0;i<n/2;i++)
{
strcpy(pv,vitez[i]);
strcpy(vitez[i],vitez[n-1-i]);
strcpy(vitez[n-1-i],pv);
}
indeks=n-1-rbr;
k=-k;
}
else
indeks=rbr;
/*Uklanjanje vitezova*/
printf("\nVitezovi odlaze sledecim redom:\n");
while(n!=1)
{
izbacujemo =(indeks+k-1)%n;
printf("%s\n",vitez[izbacujemo]);
for(i=izbacujemo;i<n-1;i++)
strcpy(vitez[i],vitez[i+1]);
n--;
indeks=izbacujemo;
}
printf("\n\nPoslednji ostaje: %s\n\n",vitez[0]);
}
178
12.
Master Mind.
4 , 1 6 .
10 ,
.
. 10.
12.
/Program za igru Master Mind/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include <time.h>
#define POKUSAJ 10
#define MAX 4
#define BROJ 6
main()
{
int i,j,na_mestu,van_mesta, broj_pokusaja,u_opsegu;
int zadata[MAX],czadata[MAX],pogadjam[MAX];
char c;
time_t timer;
/*pokretanje generatora slucajnih brojeva pomocu tekuceg vremena*/
srand(time(&timer));
printf("\nOvo je igra pogadjanja zadate kombinacije od 4 broja");
printf("\nU igri su brojevi od 1 do %i i mogu se ponavljati\n",BROJ);
do
{
for(i=0;i<MAX;i++)
{
scanf("%i",&pogadjam[i]);
if(pogadjam[i]<=0 || pogadjam[i]>BROJ)
u_opsegu=1;
}
na_mestu=0; van_mesta=0;
/*pravi se kopija zadate kombinacije */
for(i=0;i<MAX;i++)
czadata[i]=zadata[i];
/*trazenje broja koji je na svom mestu*/
for(i=0;i<MAX;i++)
if(zadata[i]==pogadjam[i])
{
na_mestu++;
pogadjam[i]=0;czadata[i]=0;
}
if(na_mestu==MAX)
{
printf("\nBravo, pogodili ste zadatu kombinaciju ");
printf("iz %i. puta\n\n",broj_pokusaja);
break;
}
/*trazenje broja koji je van svog mesta*/
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++)
if(czadata[i]!=0)
if(czadata[i]==pogadjam[j])
{
pogadjam[j]=czadata[i]=0;
van_mesta++;
}
printf("%37i%18i\n",na_mestu,van_mesta);
if(u_opsegu)
printf("\nNAPOMENA: Birati brojeve od 1 do %i\n",BROJ);
}
if(na_mestu!=MAX)
{
printf("\nZao mi je niste uspeli da pogodite kombinaciju ");
for(i=0;i<MAX;i++)
printf("%d ",zadata[i]);printf("\n");
}
getchar();
puts("Da li zelite jos da igrate (d/n) ?");
c=getch();
} while (tolower(c)=='d');
}
180
_____________________________________________
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
______________________________
______________________________
______________________________
181
182
_____________________________________________
1.
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
2.
\n
\t
\v
\b
\r
\f
\a
\\
\'
\''
(NewLine NL)
(HorizontalTabulation HT)
(VerticalTabulation VT)
(BackSpace BS)
(CarriageReturn CR)
(FormFeed FF)
/ (Alarm/Bell BELL)
(BackSlash)
3.
Character
Short integer
Integer
char
short
int
()
1
2
2/4
Long integer
long
Unsigned character
Unsigned short integer
Unsigned integer
Unsigned long integer
Single-precision
Floating_point
Double-precision
Floating-point
unsigned char
unsigned short
unsigned
unsigned long
1
2
2/4
4
float
double
-128 do 127
-32768 do 32767(1)
(1)/(2)
-2,147,483,648
2,147,438,647(2)
0 do 255
0 do 65535 (3)
(3)/(4)
0 4,294,967,295 (4)
1.2E-38 3.4E38
(=7 )
2.2E-308 1.8E308
(=16 )
183
4.
%c
%d
%u
%o
%x (X)
%f
%e
%g
char
int ( )
unsigned int ( )
int/unsigned int ( )
int/unsigned int ( )
float, double ( )
float, double ( )
float, double ( )
5.
%c
%d
%u
%o
%x (X)
%i
%f
%e
%g
%lf
%le
%lg
char
int ( )
unsigned int ( )
int/unsigned int ( )
int/unsigned int ( )
int ( )
float ( )
float ( )
float ( )
double ( )
double ( )
double ( )
6.
15
2
[ ] ( ) . ->
14
1
! ~ ++ -- + - * & () sizeof
13
2
* / %
12
2
+ 11
2
<< >>
10
2
< <= > >=
9
2
== !=
8
2
&
7
2
^
6
2
|
5
2
&&
4
2
||
3
3
?:
2
2
= += -= *= /= %= &= ^= |= <<= >>=
1
2
,
184
7.
ctype.h
ctype.h
int 0 (true), c
( c int ASCII ).
isalnum(c)
0 c
ASCII .
isalpha(c)
0 c
ASCII .
isdigit(c)
0 c
ASCII .
islower(c)
0 c
ASCII .
isupper(c)
0 c
ASCII .
tolower(c)
c ASCII ,
ASCII .
toupper(c)
c ASCII ,
ASCII .
8.
math.h
math.h
x y double double.
cos( x)
cos x
fabs( x)
|x|
log( x)
loge x, x>0.
log10(x)
log10 x, x>0.
pow( x, y)
xy
sin( x)
sin x.
sqrt( x)
tan( x)
tg x.
185
9.
stdlib.h
stdlib.h.
atof(s)
a double,
s.
atoi(s)
a int,
s.
atoll(s)
a long,
s.
rand()
a - int,
0 RAND_MAX (32767).
10. string.h
string.h, s, s1 s2
, n int.
strcat(s1, s2)
s2
s1 s1.
strcmp(s1, s2)
s1 s2
int:
<0, s1 ASCII s2,
=0, s1 ASCII s2,
>0, s1 ASCII s2.
strcpy(s1, s2)
s2 s1
( \0) s1.
strlen(s)
s ( \0).
strncat(s1, s2, n)
n s2
s1
s1.
strncmp(s1, s2, n)
n s1
s2 int:
<0, n s1 ASCII
n s2,
=0, n s1 ASCII
n s2,
>0, n s1 ASCII
n s2.
strncpy(s1, s2, n)
186
n s2
s1 ( \0)
s1.
11. ASCII
187
188
_____________________________________________
[1]
, ,
, 2004.
[2]
,
e , 1997.
[3]
, , , 1996.
[4]
[5]
Augie Hansen,
, , 1991.
[6]
[7]
189