Professional Documents
Culture Documents
OR Skripta Rokovi
OR Skripta Rokovi
c) Pretvorite broj A1 iz
heksadecimalnog u broj u
dekadskom brojnom sistemu.
175(10)=
155(8)=
A1(16) =
1 bod
1 bod
1 bod
2.
5.
3.
1 bod
e) Upotrebom tablica istinitosti dokaite jednakost (A B C) = A B C
1 bod
2. zadatak
a) Koje vrijednosti poprimaju varijable a, b i c
nakon izvrenog bloka naredbi?
int i=0;
do
{
printf("A");
i++;
} while (i<=5);
b=
c=
0.5 bodova
c) Koju vrijednost e imati varijabla t nakon
izvoenja bloka naredbi:
Odgovor:
a=
int i, t=0;
for (i=1;i<20;i++)
{
if (i%5==0) continue;
t++;
if (i==10) break;
}
Odgovor:
t=
Odgovor:
0.5 bodova
d) Koje vrijednosti poprimaju varijabla i, j i k
nakon izvrenja programa?
int main()
{
int i=0, j=0, k=0;
while (!(i==5))
{
k++;
j=j+k;
i++;
}
return 0;
}
Odgovor:
1 bod
i=
j=
1 bod
skinuto sa www.etf.ba
k=
#include <stdio.h>
int main()
{
char a,b,c,d;
a=B;
b=4;
c=a+3,
d=b+1;
printf(\n %c,%c,%c,%c,a,b,c,d);
printf(\n %d,%d,%d,%d,a,b,c,d);
return 0;
}
int main()
{
int x,y,z;
x=y=z=1;
do
{
do
{
y=z++;
} while (y<5);
x=y++;
} while (x<6);
return 0;
}
Odgovor:
Odgovor:
x=
1 bod
y=
1 bod
z=
3. zadatak
Napisati C-program koji izraunava priblinu vrijednost funkcije ex prema slijedeoj formuli:
e x suma = 1 +
n
x x 2 x3
x
+ + + ...
1! 2! 3!
n!
Realan broj x tipa float i broj n tipa int se unose sa standardnog ulaza. Nakon izraunate sume program treba
izraunati razliku apsolutnu vrijednost d prema formuli:
d=|suma-exp(x)|
gdje je exp(x) vrijednost funkcije ex u taki x izraunata pomou funkcije exp koja se nalazi u biblioteci
funkcija, pri emu je prototip funkcije exp() sadran u datoteci math.h.
Za izraunavanje apsolutne vrijednosti treba koristiti funkciju fabs(). (Prototip funkcije fabs() je takoer
sadran u datoteci math.h).
Nakon izraunate sume, ovisno o vrijednosti d program treba ispisati poruku:
- Ako je d>0.1 program ispisuje poruku VELIKA GRESKA.
- Ako je 0.01<=d<= 0.1 program ispisuje poruku SREDNJA GRESKA
- Ako je d<0.01 program ispisuje poruku MALA GRESKA.
Pri rjeavanju zadatka obavezno koristiti petlju while.
10 bodova
skinuto sa www.etf.ba
OSNOVE RAUNARSTVA
PRIMJER PRVOG PARCIJALNOG ISPITA
Prezime i ime:______________________
Broj indeksa:_______________________
1. zadatak
a) Pretvorite broj 175 iz
dekadskog u broj u binarnom
brojnom sistemu.
c) Pretvorite broj A1 iz
heksadecimalnog u broj u
dekadskom brojnom sistemu.
175(10)=
155(8)=
A1(16) =
1 bod
1 bod
1 bod
2.
5.
3.
1 bod
e) Upotrebom tablica istinitosti dokaite jednakost (A B C) = A B C
1 bod
2. zadatak
a) Koje vrijednosti poprimaju varijable a, b i c
nakon izvrenog bloka naredbi?
int i=0;
do
{
printf("A");
i++;
} while (i<=5);
b=
c=
0.5 bodova
c) Koju vrijednost e imati varijabla t nakon
izvoenja bloka naredbi:
Odgovor:
a=
int i, t=0;
for (i=1;i<20;i++)
{
if (i%5==0) continue;
t++;
if (i==10) break;
}
Odgovor:
t=
Odgovor:
0.5 bodova
d) Koje vrijednosti poprimaju varijabla i, j i k
nakon izvrenja programa?
int main()
{
int i=0, j=0, k=0;
while (!(i==5))
{
k++;
j=j+k;
i++;
}
return 0;
}
Odgovor:
1 bod
i=
j=
1 bod
skinuto sa www.etf.ba
k=
#include <stdio.h>
int main()
{
char a,b,c,d;
a=B;
b=4;
c=a+3,
d=b+1;
printf(\n %c,%c,%c,%c,a,b,c,d);
printf(\n %d,%d,%d,%d,a,b,c,d);
return 0;
}
int main()
{
int x,y,z;
x=y=z=1;
do
{
do
{
y=z++;
} while (y<5);
x=y++;
} while (x<6);
return 0;
}
Odgovor:
Odgovor:
x=
1 bod
y=
1 bod
z=
3. zadatak
Napisati C-program koji izraunava priblinu vrijednost funkcije ex prema slijedeoj formuli:
e x suma = 1 +
n
x x 2 x3
x
+ + + ...
1! 2! 3!
n!
Realan broj x tipa float i broj n tipa int se unose sa standardnog ulaza. Nakon izraunate sume program treba
izraunati razliku apsolutnu vrijednost d prema formuli:
d=|suma-exp(x)|
gdje je exp(x) vrijednost funkcije ex u taki x izraunata pomou funkcije exp koja se nalazi u biblioteci
funkcija, pri emu je prototip funkcije exp() sadran u datoteci math.h.
Za izraunavanje apsolutne vrijednosti treba koristiti funkciju fabs(). (Prototip funkcije fabs() je takoer
sadran u datoteci math.h).
Nakon izraunate sume, ovisno o vrijednosti d program treba ispisati poruku:
- Ako je d>0.1 program ispisuje poruku VELIKA GRESKA.
- Ako je 0.01<=d<= 0.1 program ispisuje poruku SREDNJA GRESKA
- Ako je d<0.01 program ispisuje poruku MALA GRESKA.
Pri rjeavanju zadatka obavezno koristiti petlju while.
10 bodova
skinuto sa www.etf.ba
ELEKTROTEHNIKIFAKULTETSARAJEVO
Predmet:OSNOVERAUNARSTVA
Prviparcijalniispit(09.11.2006)
Varijanta
Imeiprezime(itko):____________________________
Bodova
Grupa:___________Brojindexa:__________________
Potpis:________________________________________
1.Napiitebrojutraenombrojnomsistemu.Procesrjeavanjanapiitenaslobodnim
listovima.
a)(1bod)Pretvoritebrojizdekadskogsistemaubinarni:
198(10)=_____________________________________(2)
b)(1bod)Pretvoritebrojizbinarnogsistemauoktalni:
10110111(2)=__________________________________(8)
c)(1bod)Pretvoritebrojizdekadskogsistemauheksadecimalni:
262(10)=______________________________________(16)
2.Uslobodanprostorispodkodaupiiteizlazdatogblokanaredbi.
a)(1bod)
b)(2boda)
inta=8,b=3;
switch(a%b){
case2:
printf("AA");
case1:
printf("AA");
default:
printf("AA");break;
}
inti,t=1;
for(i=1;i<20;i++){
if(i%4==0)continue;
t++;
if(i==8||i==12||i==16)
break;
}
printf("t=%d",t);
skinuto sa www.etf.ba
c)(2boda)
chara='C',b='A',c='B';
a=a+c;
c=ab;
b=b+c'C';
a=ab;
printf("a=%c,b=%d,c=%c",
a,b,c);
d)(1bod)
inta=8,b=5;
do{
b*=2;
}while(++a<9);
b=b%a;
printf("a=%d,b=%d",a,b);
e)(1bod)
inta=10;
floats;
a+=a++;
s=a/2+1;
printf("s=%.2f",s);
3.Naslobodnimlistovimapapiranapiitetraeneprograme.
a)(4boda)Napiiteprogramkojiizraunavavrijednostsljedeesume:
S=
1
2!
3!
n!
n1
...1
,
2
3
n
x1 x1 x1
x1
n1
Napomena:Zastepenovanjekoristitebibliotenufunkcijupow(b,e)priemujebbazaaeje
eksponent.Funkcijasenalaziubibliotecimath.h.
b)(4boda)Napiiteprogramkojiuitavasatastature5realnihelemenatadvanizaAiBazatim
izraunavaelementetreegnizaC(kojitakoerima5elemenata)priemuseitielementnizaC
dobivapremasljedeojformuli:
2
C i= Ai 3Bi1,
i=0,1 ,2 ,3 ,4
Uprostorispodtekstazadatkaupiitetraenibloknaredbi.Nemoratepisati#include
direktive,deklaracijevarijabliilifunkcijemain().
c)(1bod)Napiitebloknaredbikojinaekranu d)(1bod)Napiitebloknaredbikojinaekranu
ispisujeAAAAA(petslovaA)pomoupetljefor. ispisujesveneparnebrojeveizmeu1i100.
Savjet:Upitanjusu2linijekoda.
Savjet:Upitanjusu23linijekoda.
skinuto sa www.etf.ba
ELEKTROTEHNIKIFAKULTETSARAJEVO
Predmet:OSNOVERAUNARSTVA
Prviparcijalniispit(09.11.2006)
Varijanta
Imeiprezime(itko):____________________________
Bodova
Grupa:___________Brojindexa:__________________
Potpis:________________________________________
1.Napiitebrojutraenombrojnomsistemu.Procesrjeavanjanapiitenaslobodnim
listovima.
a)(1bod)Pretvoritebrojizdekadskogsistemaubinarni:
137(10)=_____________________________________(2)
b)(1bod)Pretvoritebrojizbinarnogsistemauoktalni:
11110101(2)=__________________________________(8)
c)(1bod)Pretvoritebrojizdekadskogsistemauheksadecimalni:
329(10)=______________________________________(16)
2.Uslobodanprostorispodkodaupiiteizlazdatogblokanaredbi.
a)(1bod)
inta=7,b=5;
switch(a%b){
case3:
printf("X");
case1:
printf("X");
default:
printf("X");break;
}
b)(2boda)
inti,t=0;
for(i=1;i<50;i++){
if(i%5==0)continue;
t++;
if(i==15||i==20||i==25)
break;
}
printf("t=%d",t);
skinuto sa www.etf.ba
c)(2boda)
chara='B',b='A';
while(a>5){
printf("%c",b);
a=a/2;
}
printf("a=%d",a);
d)(1bod)
inta=5,b=3;
do{
b*=2;
}while(++a<6);
b=b%a;
printf("a=%d,b=%d",a,b);
e)(1bod)
inta=5;
floats;
a+=a++;
s=a/3+1;
printf("s=%.2f",s);
3.Naslobodnimlistovimapapiranapiitetraeneprograme.
a)(4boda)Napiiteprogramkojiizraunavavrijednostsljedeesume:
2
x
x
n1 x
S=x ...1
,
2 ! 3!
n!
n1
Napomena:Zastepenovanjekoristitebibliotenufunkcijupow(b,e)priemujebbazaaeje
eksponent.Funkcijasenalaziubibliotecimath.h.
b)(4boda)Napiiteprogramkojiuitavasatastature5realnihelemenatadvanizaAiBazatim
izraunavaelementetreegnizaC(kojitakoerima5elemenata)priemuseitielementnizaC
dobivapremasljedeojformuli:
C i=2A 2i
Bi
5,
2
i=0,1 ,2 ,3 ,4
Uprostorispodtekstazadatkaupiitetraenibloknaredbi.Nemoratepisati#include
direktive,deklaracijevarijabliilifunkcijemain().
c)(1bod)Napiitebloknaredbikojinaekranu
ispisujeBABABApomoupetljefor.
d)(1bod)Napiitebloknaredbikojinaekranu
ispisujesveparnebrojeveizmeu1i50.
Savjet:Upitanjusu2linijekoda.
Savjet:Upitanjusu23linijekoda.
skinuto sa www.etf.ba
ELEKTROTEHNIKIFAKULTETSARAJEVO
Predmet:OSNOVERAUNARSTVA
Prviparcijalniispit(09.11.2006)
Varijanta
Imeiprezime(itko):____________________________
Bodova
Grupa:___________Brojindexa:__________________
Potpis:________________________________________
1.Napiitebrojutraenombrojnomsistemu.Procesrjeavanjanapiitenaslobodnim
listovima.
a)(1bod)Pretvoritebrojizdekadskogsistemaubinarni:
252(10)=_____________________________________(2)
b)(1bod)Pretvoritebrojizbinarnogsistemauoktalni:
1100010(2)=__________________________________(8)
c)(1bod)Pretvoritebrojizdekadskogsistemauheksadecimalni:
259(10)=______________________________________(16)
2.Uslobodanprostorispodkodaupiiteizlazdatogblokanaredbi.
a)(1bod)
b)(2boda)
inta=5,b=4;
switch(a%b){
case0:
a++;b++;
case1:
a++;b++;break;
case2:
a;b;
case3:
a;b++;break;
}
printf("a=%d,b=%d",a,b);
inta=5,b=6;
do{
b+=a++;
}while(a<5);
b%=a1;
printf("a=%d,b=%d",a,b);
skinuto sa www.etf.ba
c)(2boda)
chara='B',b='C',c='A';
a=a+c;
b=b+'A'a;
a=c+b;
printf("a=%c,b=%d,c=%c",
a,b,c);
d)(1bod)
inti,j;
for(i=1;i<4;i++)
for(j=i;j<3;j++)
printf("A");
e)(1bod)
inta=1;floatb=20;
while(a<4){
b=b/a;
a++;
}
printf("b=%.2f",b);
3.Naslobodnimlistovimapapiranapiitetraeneprograme.
a)(4boda)Napiiteprogramkojiizraunavavrijednostsljedeesume:
2
2
2
2
n1
S=1
...1
,
2x1 2x1
2x1
n2
Napomena:Zastepenovanjekoristitebibliotenufunkcijupow(b,e)priemujebbazaaeje
eksponent.Funkcijasenalaziubibliotecimath.h.
b)(4boda)Napiiteprogramkojiuitavasatastature5realnihelemenatadvanizaAiBazatim
izraunavaelementetreegnizaC(kojitakoerima5elemenata)priemuseitielementnizaC
dobivapremasljedeojformuli:
3
A
C i= i B2i 2 Ai Bi ,
3
i=0,1,2,3 ,4
Uprostorispodtekstazadatkaupiitetraenibloknaredbi.Nemoratepisati#include
direktive,deklaracijevarijabliilifunkcijemain().
c)(1bod)Napiitebloknaredbikojinaekranu
ispisujeabecedu(ABC.....Z).
d)(1bod)Napiitebloknaredbikojiizraunava
sumusvihbrojevaizmeu1i20.
Savjet:Upitanjusu2linijekoda.
Savjet:Upitanjusu23linijekoda.
skinuto sa www.etf.ba
ELEKTROTEHNIKIFAKULTETSARAJEVO
Predmet:OSNOVERAUNARSTVA
Prviparcijalniispit(09.11.2006)
Varijanta
Imeiprezime(itko):______________________
Bodova
Grupa:___________Brojindexa:____________
Potpis:__________________________________
1.Napiitebrojutraenombrojnomsistemu.Procesrjeavanjanapiitenaslobodnim
listovima.
a)(1bod)Pretvoritebrojizdekadskogsistemaubinarni:
198(10)=_____________________________________(2)
b)(1bod)Pretvoritebrojizbinarnogsistemauoktalni:
101101011(2)=__________________________________(8)
c)(1bod)Pretvoritebrojizdekadskogsistemauheksadecimalni:
262(10)=______________________________________(16)
2.Uslobodanprostorispodkodaupiiteizlazdatogblokanaredbi.
a)(1bod)
b)(2boda)
inta=7,b=6;
switch(a%b){
case0:
a;b;
case1:
a;b;break;
case2:
a++;b++;
case3:
a;b++;break;
}
printf("a=%d,b=%d",a,b);
inta=7,b=8;
do{
b+=a++;
}while(a<7);
b%=a1;
printf("a=%d,b=%d",a,b);
skinuto sa www.etf.ba
c)(2boda)
chara='B',b='A';
while(a<'Z'){
if(a%5==0)
printf("%c",b);
a++;
}
d)(1bod)
inti,j;
for(i=0;i<4;i++)
for(j=0;j<i;j++)
printf("A");
e)(1bod)
floatb=40;inti;
for(i=1;i<4;i++)
b=b/i;
printf("b=%.2f",b);
3.Naslobodnimlistovimapapiranapiitetraeneprograme.
a)(4boda)Napiiteprogramkojiizraunavavrijednostsljedeesume:
2
S=1
x 1 x 1
n1 x 1
...1
,
x 1 x2
xn
n2
Napomena:Zastepenovanjekoristitebibliotenufunkcijupow(b,e)priemujebbazaaeje
eksponent.Funkcijasenalaziubibliotecimath.h.
b)(4boda)Napiiteprogramkojiuitavasatastature5realnihelemenatadvanizaAiBazatim
izraunavaelementetreegnizaC(kojitakoerima5elemenata)priemuseitielementnizaC
dobivapremasljedeojformuli:
2
C i= Ai 4 Ai Bi 8 Bi 1,
i=0,1 ,2 ,3,4
Uprostorispodtekstazadatkaupiitetraenibloknaredbi.Nemoratepisati#include
direktive,deklaracijevarijabliilifunkcijemain().
c)(1bod)Napiitebloknaredbikojinaekranu
ispisujesvebrojeveizmeu1i25.
d)(1bod)Napiitebloknaredbikojiizraunava
sumusvihbrojevaizmeu5i55.
Savjet:Upitanjusu2linijekoda.
Savjet:Upitanjusu23linijekoda.
skinuto sa www.etf.ba
Bodova
Ime i prezime (itko):
____________________________
11000110
(2)
267
(8)
106
(16)
b) (2 boda)
AAAAAA
t=16
skinuto sa www.etf.ba
c) (2 boda)
char a='C',b='A',c='B';
a=a+c; a='C'+'B'
c=a-b; c='C'+'B''A'='C'+1='D'
b=b+c-'C';
b='A'+'D'-'C'='A'+1='B'
a=a-b; a='C'+'B'-'B'='C'
printf ("a=%c,b=%d,c=%c",
a,b,c);
d) (1 bod)
int a=8, b=5;
do {
b*=2;
b=10
} while (++a<9); a=9
uslov NIJE ispunjen!
b=b%a;
b=10%9=1
printf ("a=%d,b=%d",a,b);
a=C,b=66,c=D
a=9,b=1
e) (1 bod)
int a=10;
float s;
a+=a++; a=21
s=a/2+1; s=10+1=11 int/int!
printf ("s=%.2f",s);
s=11.00
3. Na slobodnim listovima papira napiite traene programe.
a) (4 boda) Napiite program koji izraunava vrijednost sljedee sume:
S=
1
x 1
2!
2
x 1
3!
...
3
x 1
n 1
n!
,
n
x 1
n 1
C i= Ai
3Bi 1,
i= 0,1 ,2 ,3 ,4
U prostor ispod teksta zadatka upiite traeni blok naredbi. Ne morate pisati #include
direktive, deklaracije varijabli ili funkcije main().
c) (1 bod) Napiite blok naredbi koji na ekranu
ispisuje AAAAA (pet slova A) pomou petlje
for.
for (i=2;i<100;i++)
if( i%2 != 0 )
printf("%d",i);
skinuto sa www.etf.ba
Zadatak 3 a)
#include <stdio.h>
#include <math.h>
int main() {
int i,n,brojnik,nazivnik,predznak;
float x,s;
printf ("Unesite n: ");
scanf ("%d",&n);
printf ("Unesite x: ");
scanf ("%f",&x);
S=0;
brojnik=1; nazivnik = x+1; predznak=1;
for (i=1;i<=n;i++) {
S = S + predznak* (float) brojnik/nazivnik;
brojnik = brojnik*i;
nazivnik = nazivnik*(x+1);
predznak = - predznak;
}
// Alternativno rjeenje
//
f=1;
//
for (i=1;i<=n;i++) {
//
S = S + pow(-1,i-1) * (float) f / pow(x+1,i);
//
f *= i;
//
}
printf ("\nSuma glasi: %.2f",suma);
return 0;
}
Zadatak 3b)
#include <stdio.h>
int main() {
int i;
float A[5],B[5],C[5];
for (i=0;i<5;i++) {
printf ("Unesite %d. clan niza A: ",i+1);
scanf ("%f",A[i]);
printf ("Unesite %d. clan niza B: ",i+1);
scanf ("%f",B[i]);
}
for (i=0;i<5;i++) {
C[i]=A[i]*A[i]+3*B[i]+1;
printf ("\nC[%d] = %.2f",i+1,C[i]);
}
return 0;
}
skinuto sa www.etf.ba
skinuto sa www.etf.ba
Bodova
Ime i prezime (itko):
____________________________
10001001
(2)
365
(8)
149
(16)
b) (2 boda)
int i,t=0;
for (i=1; i<50; i++) {
if (i%5==0) continue;
t++;
if (i==15||i==20||i==25)
break;
} t = 49 - 9 = 40
printf ("t=%d",t);
t=40
skinuto sa www.etf.ba
c) (2 boda)
char a='B',b='A';
while (a>5) {
printf ("%c",b);
a=a/2;
}
printf (" a=%d",a);
a=65 a=32 a=16 a=8 a=4->IZLAZ
d) (1 bod)
int a=5, b=3;
do {
b*=2; b=6
} while (++a<6); a=6
uslov NIJE ispunjen
b=b%a;
b = 6%6 = 0
printf ("a=%d,b=%d",a,b);
AAAA a=4
a=6,b=0
e) (1 bod)
int a=5;
float s;
a+=a++; a=11
s=a/3+1; s=3+1=4 - int/int !
printf ("s=%.2f",s);
s=4.00
3. Na slobodnim listovima papira napiite traene programe.
a) (4 boda) Napiite program koji izraunava vrijednost sljedee sume:
2
S= x
x
2!
x
...
3!
n 1
x
,
n!
n 1
Bi
5,
2
i= 0,1 ,2 ,3 ,4
U prostor ispod teksta zadatka upiite traeni blok naredbi. Ne morate pisati #include
direktive, deklaracije varijabli ili funkcije main().
c) (1 bod) Napiite blok naredbi koji na ekranu
ispisuje BABABA pomou petlje for.
for (i=0;i<3;i++)
printf("BA");
for (i=1;i<50;i++)
if (i%2 == 0)
printf("%d",i);
Zadatak 3a)
skinuto sa www.etf.ba
#include <stdio.h>
#include <math.h>
int main() {
int i,n,brojnik,nazivnik,predznak;
float x,s;
printf ("Unesite n: ");
scanf ("%d",&n);
printf ("Unesite x: ");
scanf ("%f",&x);
S=0;
brojnik=x; nazivnik = 1; predznak=1;
for (i=1;i<=n;i++) {
S = S + predznak * (float) brojnik/nazivnik;
brojnik = brojnik*x;
nazivnik = nazivnik*i;
predznak = - predznak;
}
// Alternativno rjeenje
//
f=1;
//
for (i=1;i<=n;i++) {
//
S = S + pow(-1,i-1) * (float) pow(x,i) / f;
//
f *= i;
//
}
printf ("\nSuma glasi: %.2f",suma);
return 0;
}
Zadatak 3b)
#include <stdio.h>
int main() {
int i;
float A[5],B[5],C[5];
for (i=0;i<5;i++) {
printf ("Unesite %d. clan niza A: ",i+1);
scanf ("%f",A[i]);
printf ("Unesite %d. clan niza B: ",i+1);
scanf ("%f",B[i]);
}
for (i=0;i<5;i++) {
C[i]=2*A[i]*A[i]-B[i]/2+5;
printf ("\nC[%d] = %.2f",i+1,C[i]);
}
return 0;
}
skinuto sa www.etf.ba
Bodova
Ime i prezime (itko):
____________________________
11111100
(2)
142
(8)
103
(16)
b) (2 boda)
a=6,b=5
skinuto sa www.etf.ba
c) (2 boda)
char a='B',b='C',c='A';
a=a+c; a='B'+'A'
b=b+'A'-a;
b='C'+'A'-('B'+'A')='C'-'B' = 1
a=c+b; a='A'+1 = 'B'
printf ("a=%c,b=%d,c=%c",
a,b,c);
d) (1 bod)
int i,j;
for (i=1; i<4; i++)
for (j=i; j<3; j++)
printf ("A");
i=1: j=1, j=2
i=2: j=2
i=3: /
a=B,b=1,c=A
AAA
e) (1 bod)
int a=1; float b=20;
while (a<4) {
b=b/a;
a++;
}
printf("b=%.2f",b);
b=20/1=20 b=20/2=10 b=10/3=3.33
b=3.33
3. Na slobodnim listovima papira napiite traene programe.
a) (4 boda) Napiite program koji izraunava vrijednost sljedee sume:
2
2
S= 1
2x 1
2
...
2x 1
n 1
2
,
2x 1
n 2
C i=
Ai
3
B2i 2 Ai Bi ,
i= 0,1,2,3,4
U prostor ispod teksta zadatka upiite traeni blok naredbi. Ne morate pisati #include
direktive, deklaracije varijabli ili funkcije main().
c) (1 bod) Napiite blok naredbi koji na ekranu
ispisuje abecedu (ABC.....Z).
for (i='A';i<='Z';i++)
printf("%c",i);
S=0;
for (i=2;i<20;i++)
S=S+i;
Zadatak 3a)
#include <stdio.h>
skinuto sa www.etf.ba
#include <math.h>
int main() {
int i,n,brojnik,nazivnik,predznak;
float x,s;
printf ("Unesite n: ");
scanf ("%d",&n);
printf ("Unesite x: ");
scanf ("%f",&x);
S=1; // prvi lan sume je dat
brojnik=4; nazivnik = 2*x+1; predznak=-1;
for (i=2;i<=n;i++) {
S = S + predznak * (float) brojnik/nazivnik;
brojnik = brojnik*2;
// nazivnik ostaje isti
predznak = - predznak;
}
// Alternativno rjeenje
//
for (i=2;i<=n;i++)
//
S = S + pow(-1,i-1) * (float) pow(2,i) / (2*x+1);
printf ("\nSuma glasi: %.2f",suma);
return 0;
}
Zadatak 3b)
#include <stdio.h>
int main() {
int i;
float A[5],B[5],C[5];
for (i=0;i<5;i++) {
printf ("Unesite %d. clan niza A: ",i+1);
scanf ("%f",A[i]);
printf ("Unesite %d. clan niza B: ",i+1);
scanf ("%f",B[i]);
}
for (i=0;i<5;i++) {
C[i]=A[i]*A[i]*A[i]/3+B[i]*B[i]-2*A[i]*B[i];
printf ("\nC[%d] = %.2f",i+1,C[i]);
}
return 0;
}
skinuto sa www.etf.ba
Bodova
Ime i prezime (itko): ______________________
11000110
(2)
267
(8)
106
(16)
b) (2 boda)
a=6,b=5
c) (2 boda)
char a='B',b='A';
d) (1 bod)
int i,j;
skinuto sa www.etf.ba
while (a<'Z') {
if (a%5==0)
printf("%c",b);
a++;
}
'B'==66 'Z'==90 :
a=70 a=75 a=80 a=85
AAAA
AAAAAA
e) (1 bod)
float b=40; int i;
for (i=1; i<4; i++)
b=b/i;
printf("b=%.2f",b);
40/1=40 40/2=20 20/3=6.666...
b=6.67
3. Na slobodnim listovima papira napiite traene programe.
a) (4 boda) Napiite program koji izraunava vrijednost sljedee sume:
2
x1
S= 1
x 1
x 1
...
x 2
n 1
x 1
,
x n
n 2
C i= Ai
4 Ai Bi 8 Bi
1,
i= 0,1 ,2 ,3,4
U prostor ispod teksta zadatka upiite traeni blok naredbi. Ne morate pisati #include
direktive, deklaracije varijabli ili funkcije main().
c) (1 bod) Napiite blok naredbi koji na ekranu
ispisuje sve brojeve izmeu 1 i 25.
for (i=2;i<25;i++)
printf("%d",i);
S=0;
for (i=6;i<55;i++)
S=S+i;
Zadatak 3a)
#include <stdio.h>
skinuto sa www.etf.ba
#include <math.h>
int main() {
int i,n,brojnik,nazivnik,predznak;
float x,s;
printf ("Unesite n: ");
scanf ("%d",&n);
printf ("Unesite x: ");
scanf ("%f",&x);
S=1; // prvi lan sume je dat
brojnik=x*x+1; nazivnik = x+1; predznak=-1;
for (i=2;i<=n;i++) {
S = S + predznak* (float) brojnik/nazivnik;
brojnik = pow(x,i+1)+1;
nazivnik = nazivnik + 1;
predznak = - predznak;
}
// Alternativno rjeenje
//
for (i=2;i<=n;i++)
//
S = S + pow(-1,i-1) * (float) (pow(x,i)+1) / (x+i-1);
printf ("\nSuma glasi: %.2f",suma);
return 0;
}
Zadatak 3b)
#include <stdio.h>
int main() {
int i;
float A[5],B[5],C[5];
for (i=0;i<5;i++) {
printf ("Unesite %d. clan niza A: ",i+1);
scanf ("%f",A[i]);
printf ("Unesite %d. clan niza B: ",i+1);
scanf ("%f",B[i]);
}
for (i=0;i<5;i++) {
C[i]=A[i]*A[i]+4*A[i]*B[i]+8*B[i]*B[i]+1;
printf ("\nC[%d] = %.2f",i+1,C[i]);
}
return 0;
}
skinuto sa www.etf.ba
A0829705
1. Napiite broj u traenom brojnom sistemu. Proces rjeavanja napiite na slobodnim listovima.
a) (1 bod) Pretvorite broj iz dekadskog sistema u binarni:
151(10) = _________________________________________ (2)
b) (1 bod) Pretvorite broj iz binarnog sistema u oktalni:
11110010(2) = _________________________________________ (8)
c) (1 bod) Pretvorite broj iz dekadskog sistema u heksadecimalni:
467(10) = _________________________________________ (16)
int i,j=1;
for(i=1;i<=30;i++) {
if(i%4==1) continue;
j++;
if (i==5||i==10||i==15)
break;
}
printf("j=%d",j);
char s='T',t='S';
while(s>1) {
printf("%c",t);
s=s/2;
}
skinuto sa www.etf.ba
n redova
skinuto sa www.etf.ba
3. a) zadatak
Napraviti program koji, za uneseni broj n, na ekranu iscrtava sljedei oblik (na slici je n=7):
Onemoguiti da korisnik unese paran broj n.
Grupa A):
n
n
+-----+-----+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+-----+-----+
n redova
#include <stdio.h>
int main() {
int i,j,n;
do {
printf ("Unesite broj n: ");
scanf ("%d", &n);
} while (n%2==0);
/* prvi red */
for (i=0; i<2*n-1; i++) {
if (i==0 || i==n-1 || i==2*n-2)
printf ("+");
else
printf ("-");
}
printf ("\n");
/* sredina */
for (j=0; j<n-2; j++) {
for (i=0; i<2*n-1; i++) {
if (i==0 || i==n-1 || i==2*n-2)
printf ("+");
else
printf ("-");
}
printf ("\n");
}
/* zadnji red */
for (i=0; i<2*n-1; i++) {
if (i==0 || i==n-1 || i==2*n-2)
printf ("+");
else
printf ("-");
skinuto sa www.etf.ba
}
printf ("\n");
return 0;
Grupa B):
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
#include <stdio.h>
int main() {
int i,j,n;
do {
printf ("Unesite broj n: ");
scanf ("%d", &n);
} while (n%2==0);
for (i=0; i<n; i++) {
if (i%3==0)
printf (" ");
for (j=0; j<n; j++)
printf ("* ");
printf ("\n");
}
return 0;
}
Grupa C):
n kolona
+-----+
|\
|
| \
|
| \ |
n redova
|
\ |
|
\|
+-----+
#include <stdio.h>
int main() {
int i,j,n;
do {
skinuto sa www.etf.ba
/* zadnji red */
printf ("+");
for (i=0; i<n-2; i++) {
printf ("-");
}
printf ("+\n");
return 0;
Grupa D):
n kolona
+--+--+
| | |
| | |
| | |
| | |
| | |
+--+--+
n redova
#include <stdio.h>
int main() {
int i,j,n;
do {
printf ("Unesite broj n: ");
scanf ("%d", &n);
} while (n%2==0);
/* prvi red */
for (i=0; i<n; i++) {
if (i==0 || i==n-1 || i==n/2)
printf ("+");
else
skinuto sa www.etf.ba
printf ("-");
}
printf ("\n");
/* sredina */
for (j=0; j<n-2; j++) {
for (i=0; i<n; i++) {
if (i==0 || i==n-1 || i==n/2)
printf ("+");
else
printf ("-");
}
printf ("\n");
}
/* zadnji red */
for (i=0; i<n; i++) {
if (i==0 || i==n-1 || i==n/2)
printf ("+");
else
printf ("-");
}
printf ("\n");
return 0;
}
3. b) zadatak
Napraviti program u kojem korisnik sa tastature unosi niz od 10 cijelih brojeva, a zatim se u
unesenom nizu pronalazi i na ekranu ispisuje
Grupa A) minimum parnih brojeva.
Primjer: 10,7,8,6,3,1,2,2,5,4. Rjeenje je 2 (jer 1 nije paran broj).
Grupa A):
#include <stdio.h>
int main() {
int niz[10],i,min;
for (i=0; i<10; i++) {
printf ("Unesite %d. clan niza: ", i+1);
scanf ("%d",&niz[i]);
}
/* Pocetna vrijednost za min */
for (i=0; i<10; i++) {
if (niz[i]%2==0) { min=niz[i]; break; }
}
if (i==10) {
printf ("\nNema parnih brojeva!\n");
} else {
for (i=0; i<10; i++) {
if (niz[i]%2==0 && niz[i]<min) min=niz[i];
}
printf ("\nNajmanji parni clan je: %d\n", min);
skinuto sa www.etf.ba
return 0;
skinuto sa www.etf.ba
maxmin )
Grupa D):
#include <stdio.h>
#include <math.h>
int main() {
int niz[10],i,max,min;
float korijen;
for (i=0; i<10; i++) {
printf ("Unesite %d. clan niza: ",i+1);
scanf ("%d",&niz[i]);
}
max=niz[0];
min=niz[0];
for (i=1; i<10; i++) {
if (niz[i]>max)
max = niz[i];
if (niz[i]<min)
min = niz[i];
}
korijen = sqrt(max*min);
printf ("Korijen proizvoda maksimuma i minimuma je %.3f\n", korijen);
return 0;
}
skinuto sa www.etf.ba
I PARCIJALNI ISPIT
3a) ZADATAK (4 boda)
1. Napraviti program koji, za uneseni broj n, na ekranu iscrtava sljedei oblik (na slici je n=7):
+-----+
|\
/|
| \ / |
| X |
| / \ |
|/
\|
+-----+
Onemoguiti da korisnik unese paran broj n.
#include <stdio.h>
int main()
{
int i, j, n;
do {
printf ("Unesite broj n: ");
scanf ("%d", &n);
} while (n%2==0);
printf("+");
for(i=0; i<n-2; i++)
printf("-");
printf("+\n");
for(i=1; i<n-1; i++){
printf("|");
for(j=1; j<n-1; j++)
if(i==n/2 && j==n/2) printf("X");
else if(i==j ) printf("\\");
else if(i==n-1-j ) printf("/");
else printf(" ");
printf("|\n");
}
printf("+");
for(i=0; i<n-2; i++)
printf("-");
printf("+\n");
}
return 0;
2. Napraviti program koji, za uneseni broj n, na ekranu iscrtava sljedei oblik (na slici je n=7):
+-----+
| | |
| | |
skinuto sa www.etf.ba
|--+--|
| | |
| | |
+-----+
Onemoguiti da korisnik unese paran broj n.
#include <stdio.h>
int main()
{
int i, j, n;
do {
printf ("Unesite broj n: ");
scanf ("%d", &n);
} while (n%2==0);
printf("+");
for(i=0; i<n-2; i++)
printf("-");
printf("+\n");
for(i=1; i<n-1; i++){
printf("|");
for(j=1; j<n-1; j++)
if(i==n/2 && j==n/2) printf("+");
else if(j==n/2 ) printf("|");
else if(i==n/2 ) printf("-");
else printf(" ");
printf("|\n");
}
printf("+");
for(i=0; i<n-2; i++)
printf("-");
printf("+\n");
}
return 0;
3. Napraviti program koji, za uneseni broj n, na ekranu iscrtava sljedei oblik (na slici je n=7):
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
Onemoguiti da korisnik unese paran broj n.
#include <stdio.h>
int main()
{
int i, j, n;
do {
printf ("Unesite broj n: ");
skinuto sa www.etf.ba
4. Napraviti program koji, za uneseni broj n, na ekranu iscrtava sljedei oblik (na slici je n=7):
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
Onemoguiti da korisnik unese paran broj n.
#include <stdio.h>
int main()
{
int i, j, n;
do {
skinuto sa www.etf.ba
int main()
{
int niz[10],i,max;
for (i=0; i<10; i++) {
printf ("Unesite %d. clan niza: ", i+1);
scanf ("%d",&niz[i]);
}
max=niz[1];
for(i=0; i<10; i++)
if(i%2!=0 && niz[i]>max) max=niz[i];
printf("\nmax= %d", max);
return 0;
}
2. Napraviti program u kojem korisnik sa tastature unosi niz od 10 cijelih brojeva, a zatim u
unesenom nizu pronalazi i na ekranu ispisuje sumu svih brojeva koji su djeljivi sa 3, a nisu djeljivi
sa 9.
Npr. za niz: 3, 2, 5, 4, 3, 2, 8, 9, 6, 2
Rjeenje je 12. Brojevi koji su djeljivi sa 3 a nisu sa 9 su: 3, 3, 6.
#include <stdio.h>
int main()
{
int niz[10],i,suma=0;
for (i=0; i<10; i++) {
printf ("Unesite %d. clan niza: ", i+1);
scanf ("%d",&niz[i]);
}
for(i=0; i<10; i++)
if(niz[i]%3==0 && niz[i]%9!=0) suma+=niz[i];
printf("\nsuma= %d", suma);
return 0;
}
3. Napraviti program u kojem korisnik sa tastature unosi niz od 10 cijelih brojeva, a zatim se u
unesenom nizu pronalazi i na ekranu ispisuje srednja vrijednost neparnih brojeva.
Npr. za niz: 3, 2, 5, 4, 3, 2, 8, 9, 6, 2
Sv=(3+5+3+9)/4
program treba ispisati 5.00.
#include <stdio.h>
int main()
{
int niz[10],i,suma =0, brojac=0;
float sv;
for (i=0; i<10; i++) {
printf ("Unesite %d. clan niza: ", i+1);
skinuto sa www.etf.ba
scanf ("%d",&niz[i]);
4. Napraviti program u kojem korisnik sa tastature unosi niz od 10 cijelih brojeva, a zatim se u
unesenom nizu pronalazi i na ekranu ispisuje vea od dvije vrijednosti Sp i Sn, pri emu je Sp suma
parnih elemenata (brojeva), a Sn suma neparnih elemenata.
Npr. za niz: 3, 2, 5, 4, 3, 2, 8, 9, 6, 2
Sp=2+4+2+8+6+2 = 24
Sn=3+5+3+9 = 20
program treba ispisati 24.
#include <stdio.h>
int main()
{
int niz[5],i,sp =0,sn=0 ;
for (i=0; i<5; i++) {
printf ("Unesite %d. clan niza: ", i+1);
scanf ("%d",&niz[i]);
}
for(i=0; i<5; i++){
if(niz[i]%2==0) sp+=niz[i];
else sn+=niz[i];
}
if(sp>sn)
printf("\nsp= %d", sp);
else
printf("\nsn= %d", sn);
return 0;
II PARCIJALNI ISPIT
2a) ZADATAK (4 boda)
skinuto sa www.etf.ba
1. Napraviti funkciju koja u datom nizu realnih brojeva pronalazi srednju vrijednost decimalnih
dijelova (dio iza zareza) tih brojeva.
Primjer:
Dat je niz
3.21 5.853 1.95 5.92 8.7 3.1
Decimalni dijelovi su
0.21 0.853 0.95 0.92 0.7 0.1
Srednja vrijednost ovih brojeva je 0.622167.
float max_dec(float *niz, int vel) {
int i;
float svdec=0;
for (i=0; i<vel; i++) {
svdec += niz[i] - (int)niz[i];
}
svdec /= vel;
return svdec;
}
2. Napraviti funkciju koja u datom nizu cijelih brojeva pronalazi lan koji je najdalji od srednje
vrijednosti i vraa taj lan. Ako postoje dva razliita lana koji su podjednako udaljeni od srednje
vrijednosti, funkcija treba vratiti vei.
Primjer:
Dat je niz
10 5 4 9 8 3
Srednja vrijednost elemenata niza je 6,5
Najdalji lanovi u nizu su 10 i 3 (oba se razlikuju za 3,5). Poto je broj 10 vei, funkcija
treba vratiti broj 10.
3. Napraviti funkciju koja u datom nizu cijelih brojeva pronalazi broj ija je posljednja cifra najvea
i vraa njegov indeks. Ukoliko dva broja imaju jednaku posljednju cifru, poredi se pretposljednja,
zatim trea zdesna itd.
skinuto sa www.etf.ba
Primjer:
Dat je niz
Najveu posljednju cifru imaju brojevi 87 i 127, ali kako je 8 vee od 2, traeni broj je 87. Ovaj broj
je peti po redu, dakle ima indeks 4.
int najveca_cifra(int* niz, int vel) {
int max=niz[0];
int maxi=0;
int i;
for (i=1; i<vel; i++) {
if (niz[i]%10>max%10) {
max=niz[i];
maxi=i;
} else if (niz[i]%10==max%10) {
int k=niz[i]/10;
int j=max/10;
while (k%10==j%10 && (k!=0 || j!=0)) {
k /= 10;
j /= 10;
}
if (k%10>j%10) {
max=niz[i];
maxi=i;
}
}
}
return maxi;
}
4. Napraviti funkciju koja u datom nizu cijelih brojeva pronalazi trei po veliini i vraa indeks tog
lana u nizu.
Primjer:
Za niz
10 5 4 9 8 3 -1
funkcija vraa
4
Jer se trei po veliini lan (8) nalazi na 5. mjestu odnosno oznaen je indeksom 4 (prvi lan ima
indeks 0, drugi indeks 1 itd.)
int treci(int* niz, int vel) {
int i,max,maxi,drugi,drugii,treci,trecii;
/* Funkcija nema smisla za manje od 3 elementa... */
if (vel<3) return 0;
/* Pocetne vrijednosti */
max=niz[0]; maxi=0; drugi=niz[1]; drugii=1; treci=niz[2]; trecii=2;
for (i=1; i<vel; i++) {
if (niz[i]>max) {
treci=drugi;
trecii=drugii;
drugi=max;
drugii=maxi;
max=niz[i];
maxi=i;
} else if (niz[i]>drugi) {
treci=drugi;
skinuto sa www.etf.ba
trecii=drugii;
drugi=niz[i];
drugii=i;
} else if (niz[i]>treci) {
treci=niz[i];
trecii=i;
}
return drugii;
}
skinuto sa www.etf.ba
koja u datom stringu recenica pronalazi sve rijei due od n znakova i prepisuje ih u string
velike_rijeci. Pretpostaviti da je duina niza velike_rijeci vea ili jednaka od duine niza recenica.
Radi jednostavnosti, ne trebate posebno tretirati znakove interpunkcije. Rije je svaki dio teksta koji
je ogranien sa jednim ili vie razmaka.
Napomena: Pri rjeavanju zadatka je dozvoljeno (ali ne i nuno) koritenje funkcija iz biblioteke
string.h.
Abeceda
skinuto sa www.etf.ba
jer slova A i E se javljaju po dva puta, a poto funkcija ne razlikuje velika i mala slova, veliko i
malo A se ne broje odvojeno.
Primjer 2:
Za string
Ovo je neki primjer
Po dva puta javljaju se slova O, I, J i R.
A1b2C123
A1b2C1234
funkcija vraa
funkcija vraa
123
-1 (jer je 1234 etverocifren)
skinuto sa www.etf.ba
}
}
return rezultat;
3) ZADATAK (6 bodova)
1. U gradu Sarajevu tokom dvije godine vrena su svakodnevna mjerenja temperatura i to u 9, 13,
16 i 20 sati. Ta mjerenja zapisana su u datoteku mjerenja-sarajevo.txt i to u obliku:
9.2 16.4 15.2 10.5
12.7 21.1 20.5 15.6
13.2 21.6 21.0 15.5
11.9 20.5 19.8 14.9
itd. Ova mjerenja potrebno je uitati u niz struktura oblika:
struct mjerenja {
float u9, u13, u16, u20;
} sarajevo[731];
Ovaj niz treba sortirati po mjerenju u 13 sati i zatim upisati u datoteku sortirano13-sarajevo.txt.
Takoe na ekranu treba ispisati ukupan broj uitanih mjerenja, broj dana u kojima temperatura u 9
sati nije bila najmanja te broj dana u kojima temperatura u 13 sati nije bila najvea. Primjer:
Iz datoteke su ucitani podaci za 730 dana.
Od toga, ima 25 dana u kojima temperatura u 9 nije najmanja,
a 27 dana u kojima temperatura u 13 nije najveca.
RJEENJE
#include <stdio.h>
struct mjerenja {
float u9, u13, u16, u20;
} sarajevo[731];
int main() {
FILE *ulaz, *izlaz;
int i=0,j,k,brojac1,brojac2;
ulaz=fopen("mjerenja-sarajevo.txt","r");
if (ulaz==NULL) {
printf ("Greska kod otvaranja datoteke mjerenja-sarajevo.txt.\n");
return 1;
}
/* NAPOMENA: prilikom testiranja mozete staviti %f%f%f%f */
while (fscanf(ulaz, "%5.1f %5.1f %5.1f %5.1f\n", &sarajevo[i].u9,
&sarajevo[i].u13, &sarajevo[i].u16, &sarajevo[i].u20)==4)
i++;
fclose(ulaz);
/* Ispis na ekran */
printf ("Iz datoteke su ucitani podaci za %d dana.\n",i);
skinuto sa www.etf.ba
brojac1=brojac2=0;
for (j=0; j<i; j++) {
/* Temperatura u 9 sati nije najmanja */
if (sarajevo[j].u9>sarajevo[j].u13 || sarajevo[j].u9>sarajevo[j].u16
|| sarajevo[j].u9>sarajevo[j].u20)
brojac1++;
/* Temperatura u 13 sati nije najveca */
if (sarajevo[j].u13<sarajevo[j].u9 ||
sarajevo[j].u13<sarajevo[j].u16 || sarajevo[j].u13<sarajevo[j].u20)
brojac2++;
}
printf ("Od toga, ima %d dana u kojima temperatura u 9 nije najmanja,\na
%d dana u kojima temperatura u 13 nije najveca.\n",brojac1,brojac2);
/* Sortiranje i upis u izlaz */
izlaz=fopen("sortirano13-sarajevo.txt","w");
if (izlaz==NULL) {
printf ("Greska kod otvaranja datoteke sortirano13sarajevo.txt.\n");
return 2;
}
for (j=0; j<i; j++) {
for (k=j+1; k<i; k++) {
if (sarajevo[j].u13>sarajevo[k].u13) {
struct mjerenja temp = sarajevo[j];
sarajevo[j] = sarajevo[k];
sarajevo[k] = temp;
}
}
}
for (j=0; j<i; j++)
fprintf (izlaz,"%5.1f %5.1f %5.1f %5.1f\n", sarajevo[j].u9,
sarajevo[j].u13, sarajevo[j].u16, sarajevo[j].u20);
fclose(izlaz);
}
return 0;
3 b). U gradu Sarajevu tokom dvije godine vrena su svakodnevna mjerenja temperatura i to u 9,
13, 16 i 20 sati. Ta mjerenja zapisana su u datoteku mjerenja-sarajevo.txt i to u obliku:
9.2 16.4 15.2 10.5
12.7 21.1 20.5 15.6
13.2 21.6 21.0 15.5
11.9 20.5 19.8 14.9
itd. Ova mjerenja potrebno je uitati u niz struktura oblika:
struct mjerenja {
float u9, u13, u16, u20;
} sarajevo[731];
Ovaj niz treba sortirati po mjerenju u 16 sati i zatim upisati u datoteku sortirano16-sarajevo.txt.
Takoe na ekranu treba ispisati ukupan broj uitanih mjerenja, te prosjene vrijednosti za sva etiri
mjerenja. Primjer:
Iz datoteke su ucitani podaci za 730 dana.
Prosjecna temperatura u 9 sati: 11.77
Prosjecna temperatura u 13 sati: 19.10
Prosjecna temperatura u 16 sati: 17.81
skinuto sa www.etf.ba
RJEENJE
#include <stdio.h>
struct mjerenja {
float u9, u13, u16, u20;
} sarajevo[731];
int main() {
FILE *ulaz, *izlaz;
int i=0,j,k,brojac1,brojac2;
ulaz=fopen("mjerenja-sarajevo.txt","r");
if (ulaz==NULL) {
printf ("Greska kod otvaranja datoteke mjerenja-sarajevo.txt.\n");
return 1;
}
/* NAPOMENA: prilikom testiranja mozete staviti %f%f%f%f */
while (fscanf(ulaz, "%5.1f %5.1f %5.1f %5.1f\n", &sarajevo[i].u9,
&sarajevo[i].u13, &sarajevo[i].u16, &sarajevo[i].u20)==4)
i++;
fclose(ulaz);
/* Ispis na ekran */
printf ("Iz datoteke su ucitani podaci za %d dana.\n",i);
float prosjek9,prosjek13,prosjek16,prosjek20;
prosjek9=prosjek13=prosjek16=prosjek20=0;
for (j=0; j<i; j++) {
prosjek9 += sarajevo[j].u9;
prosjek13 += sarajevo[j].u13;
prosjek16 += sarajevo[j].u16;
prosjek20 += sarajevo[j].u20;
}
prosjek9 /= i;
prosjek13 /= i;
prosjek16 /= i;
prosjek20 /= i;
printf ("Prosjecna temperatura u 9 sati: %2.2f\nProsjecna temperatura u 13
sati: %2.2f\nProsjecna temperatura u 16 sati: %2.2f\nProsjecna temperatura u 20
sati: %2.2f\n",prosjek9,prosjek13,prosjek16,prosjek20);
/* Sortiranje i upis u izlaz */
izlaz=fopen("sortirano16-sarajevo.txt","w");
if (izlaz==NULL) {
printf ("Greska kod otvaranja datoteke sortirano16sarajevo.txt.\n");
return 2;
}
for (j=0; j<i; j++) {
for (k=j+1; k<i; k++) {
if (sarajevo[j].u16>sarajevo[k].u16) {
struct mjerenja temp = sarajevo[j];
sarajevo[j] = sarajevo[k];
sarajevo[k] = temp;
skinuto sa www.etf.ba
}
for (j=0; j<i; j++)
fprintf (izlaz,"%5.1f %5.1f %5.1f %5.1f\n", sarajevo[j].u9,
sarajevo[j].u13, sarajevo[j].u16, sarajevo[j].u20);
fclose(izlaz);
return 0;
}
skinuto sa www.etf.ba
int main() {
FILE *ulaz, *izlaz;
int i=0,j,k,max_broj_polozenih,broj_polozenih,max_id_studenta;
int brojaci[100];
ulaz=fopen("ispiti.txt","r");
if (ulaz==NULL) {
printf ("Greska kod otvaranja datoteke ispiti.txt.\n");
return 1;
}
max_id_studenta=0;
while (fscanf(ulaz, "%2d%2d%2f\n", &ispiti[i].id_studenta,
&ispiti[i].id_predmeta, &ispiti[i].bodovi)==3) {
/* Provjera ponavljanja */
for (j=0; j<i; j++) {
if (ispiti[j].id_studenta==ispiti[i].id_studenta &&
ispiti[j].id_predmeta==ispiti[i].id_predmeta) {
printf ("Podaci se ponavljaju za studenta %d, ispit %d
(%.0f bodova) !\n", ispiti[i].id_studenta, ispiti[i].id_predmeta,
ispiti[i].bodovi);
i--; /* Ne uzimamo ovaj ispit u obzir */
break;
}
}
/* max_id_studenta nam treba malo kasnije */
if (ispiti[i].id_studenta > max_id_studenta)
max_id_studenta=ispiti[i].id_studenta;
i++;
}
fclose(ulaz);
/* Izracunavanje statistike */
for (j=0; j<100; j++) brojaci[j]=0;
max_broj_polozenih=0;
/* Petlja studenata */
for (j=1; j<=max_id_studenta; j++) {
/* Koliko ispita je polozio student sa IDom j ? */
broj_polozenih=0;
for (k=0; k<i; k++) {
if (ispiti[k].id_studenta==j && ispiti[k].bodovi>=10)
broj_polozenih++;
}
if (broj_polozenih>max_broj_polozenih)
max_broj_polozenih=broj_polozenih;
/* Niz brojaci oznacava koliko ima studenata koji su polozili n
ispita */
brojaci[broj_polozenih]++;
}
/* Ispis u datoteku */
izlaz=fopen("statistike.txt","w");
if (izlaz==NULL) {
printf ("Greska kod otvaranja datoteke statistike.txt.\n");
return 2;
}
for (j=0; j<=max_broj_polozenih; j++)
fprintf (izlaz,"Polozilo %d ispita: %d studenata\n", j, brojaci[j]);
fclose(izlaz);
}
return 0;
skinuto sa www.etf.ba
skinuto sa www.etf.ba
&ispiti[i].id_predmeta, &ispiti[i].bodovi)==3) {
/* Provjera ponavljanja */
for (j=0; j<i; j++) {
if (ispiti[j].id_studenta==ispiti[i].id_studenta &&
ispiti[j].id_predmeta==ispiti[i].id_predmeta) {
printf ("Podaci se ponavljaju za studenta %d, ispit %d
(%.0f bodova) !\n", ispiti[i].id_studenta, ispiti[i].id_predmeta,
ispiti[i].bodovi);
i--; /* Ne uzimamo ovaj ispit u obzir */
break;
}
}
/* max_id_predmeta nam treba malo kasnije */
if (ispiti[i].id_predmeta > max_id_predmeta)
max_id_predmeta=ispiti[i].id_predmeta;
i++;
}
fclose(ulaz);
/* Izracunavanje prosjeka */
for (j=0; j<100; j++) prosjeci[j]=0;
/* Petlja predmeta */
for (j=1; j<=max_id_predmeta; j++) {
/* Koji je prosjek za predmet sa IDom j ? */
broj_ispita=0;
for (k=0; k<i; k++) {
if (ispiti[k].id_predmeta==j) {
broj_ispita++;
prosjeci[j] += ispiti[k].bodovi;
}
}
prosjeci[j] /= broj_ispita;
}
/* Ispis u datoteku */
izlaz=fopen("prosjeci.txt","w");
if (izlaz==NULL) {
printf ("Greska kod otvaranja datoteke prosjeci.txt.\n");
return 2;
}
for (j=1; j<=max_id_predmeta; j++)
fprintf (izlaz,"%4d %4.4f\n", j, prosjeci[j]);
fclose(izlaz);
}
return 0;
skinuto sa www.etf.ba
skinuto sa www.etf.ba
skinuto sa www.etf.ba
koja vraa broj rijei u stringu recenica ija je duina tano n slova. Rije je niz znakova koji se
sastoji od velikih i malih slova, dakle ukoliko se unutar rijei nalazi neki znak koji nije slovo, u
pitanju su dvije rijei.
Npr. rije:
Auto-cesta
trebate tretirati kao dvije rijei duine 4 i 5 slova.
Rjeenje:
int rijeci_duzine(char* recenica, int n) {
int rezultat=0;
char *p = recenica;
int brojac=0;
/* Glavna petlja */
while (*p != '\0') {
if ((*p>='A' && *p<='Z') || (*p>='a' && *p<='z'))
brojac++;
else {
if (brojac==n) rezultat++;
brojac=0;
}
*p++;
}
}
return rezultat;
3) ZADATAK (6 bodova)
Na Olimpijadi u Pekingu gimnastiari se takmie u pet disciplina: parter, konj, preskok, razboj i
karike. Iz svake od ovih disciplina takmiar dobija odreeni broj bodova izmeu 0 i 10 koji moe
skinuto sa www.etf.ba
Rjeenje:
#include <stdio.h>
struct bodovi {
float parter, konj, preskok, razboj, karike;
};
int main() {
FILE *ulaz, *izlaz;
int i=0,j,k,brojac1,brojac2;
struct bodovi peking[731];
ulaz=fopen("peking2008.txt","r");
if (ulaz==NULL) {
printf ("Greska kod otvaranja datoteke peking2008.txt.\n");
return 1;
}
/* NAPOMENA: prilikom testiranja mozete staviti %f%f%f%f%f */
while (fscanf(ulaz, "%5.1f %5.1f %5.1f %5.1f %5.1f\n", &peking[i].parter,
&peking[i].konj, &peking[i].preskok, &peking[i].razboj, &peking[i].karike)==5)
i++;
fclose(ulaz);
/* Ispis na ekran */
float max1=0, max2=0, max3=0;
for (j=0; j<i; j++) {
if (peking[j].parter > max1) {
max3=max2; max2=max1; max1=peking[j].parter;
} else if (peking[j].parter > max2) {
max3=max2; max2=peking[j].parter;
} else if (peking[j].parter > max3) {
max3=peking[j].parter;
}
}
printf ("Prva tri mjesta iz discipline parter: %3.1f, %3.1f, %3.1f\n",
max1, max2, max3);
max1=max2=max3=0;
skinuto sa www.etf.ba
return 0;
skinuto sa www.etf.ba