You are on page 1of 273

Programski jazik C PISI

1. Broevi
1. Da se napi{e programa vo programskiot jazik C so koja }e se
presmeta sumata 1k+2k+3k+...nk kade {to n i k se vnesuvaat od
tastatura.
Re{enie:
Vlezni promenlivi Izlezni promenlivi
n kraj na intervalot
i broja~ vo interval s suma (zbir)
k stepen vo intervalot
stepen(n,m) funkcija koja ja presmetuva vrednosta nm

#include<stdio.h>
long int stepen(int n,int m)
{
if(m==0)
return 1;
if(m==1)
return 1;
else
return(n*stepen(n,m-1));
}
int main()
{
int n,k,i;
long int s=0;
printf("Vnesete n: ");
scanf("%d",&n);
printf("Vnesete k: ");
scanf("%d",&k);
for(i=1;i<=n;i++)
s+=stepen(i,k);
printf("Sumata e: %ld \n",s);
return 0;
}
_______________________________________________________Test
primer:
VLEZ:
Vnesete n: 5
Vnesete k: 3
Sumata e: 225.

1
Programski jazik C PISI

2. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta sumata 1+4+7+...(n pati) kade {to n se vnesuva od
tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


n kraj na intervalot
i broja~ vo interval s suma (zbir)
j ~lenovi na sumata

#include<stdio.h>
int main()
{
int i,n,j,s=0;
printf("Vnesete n=");
scanf("%d",&n);
j=1;
for(i=0;i<n;i++)
{
s+=j;
j+=3;
}
printf("Sumata e: %d\n",s);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:
Vnesete n: 8
Sumata e: 92.

2
Programski jazik C PISI

3. Da se napi{e programa vo programskiot jazik C koja }e gi


ispe~ati site trojki broevi od daden interval za koi e
ispolnet uslovot a2+b2=c2 (Pitagorini broevi).

Re{enie:

Vlezni promenlivi Izlezni promenlivi


poc po~etokot na interval
kraj kraj na intervalot
a,b,c broja~i vo intervalot

#include<stdio.h>
int main()
{
int poc,kraj,a,b,c;
printf("Vnesete pocetok i kraj na intervalot:");
scanf("%d %d",&poc,&kraj);
for(a=poc;a<kraj;a++)
for(b=poc;b<kraj;b++)
for(c=poc;c<kraj;c++)
if(a*a+b*b==c*c)
{
printf("Uslovot go zadovoluvaat
broevite %d, %d i %d.\n",a,b,c);

printf("%d+%d=%d\n\n",a*a,b*b,c*c);
}
return 0;
}

3
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:
Vnesete po~etok i kraj na intervalot:5 15
Programata pe~ati:
Uslovot go zadovoluvaat broevite 5, 12 i 13.
25+144=169
Uslovot go zadovoluvaat broevite 6, 8 i 10.
36+64=100
Uslovot go zadovoluvaat broevite 8, 6 i 10.
64+36=100
Uslovot go zadovoluvaat broevite 8, 15 i 17.
64+225=289
Uslovot go zadovoluvaat broevite 9, 12 i 15.
81+144=225
Uslovot go zadovoluvaat broevite 12, 5 i 13.
144+25=169
Uslovot go zadovoluvaat broevite 12, 9 i 15.
144+81=225

4
Programski jazik C PISI

4. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta sumata a+(a+c)+(a+2c)+...+b kade {to a e po~etok na
intervalot, b e kraj na intervalot, a c e ~ekor.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


a po~etok na interval
b kraj na interval
c ~ekor s suma
faktorot na zgolemuvawe
k
na ~ekorot c

#include<stdio.h>
int main()
{
int a,b,c,k=0,s=0;
printf("Vnesete pocetok i kraj na intervalot: ");
scanf("%d %d",&a,&b);
printf("Vnesete cekor: ");
scanf("%d",&c);
while((a+k*c)<b)
{
printf("%d+",a+k*c);
s=s+(a+k*c);
k++;
}
printf("0=%d\n",s);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete po~etok i kraj na intervalot: 1 15


Vnesete ~ekor: 3

Programata pe~ati:
1+4+7+10+13+0=35

5
Programski jazik C PISI

5. Da se napi{e programa vo programskiot jazik C so koja }e se


izbrojat broevite bliznaci do n. (Broevi bliznaci se dva
prosti broja koi se razlikuvaat za 2). Brojot n se vnesuva od
tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


n kraj na intervalot
pom prost broj
i broja~ vo interval
prima vrednost 1 za
deliteli na sekoj broj od prost prost broj i 0 za
j broj koj ne e prost
intervalot

#include<stdio.h>
int main()
{
int n,pom,i,j,prost;
printf("Vnesete n=");
scanf("%d",&n);
for(i=2;i<n;i++)
{
prost=1;
j=2;
while(prost && j<=(i/2))
{
if(i%j==0)
prost=0;
j++;
}
if (prost)
{
if(pom+2==i)
printf("Takvi broevi se %d i %d.\n",pom,i);
pom=i;
}
}
return 0;
}

6
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete n=50

Programata pe~ati:
Takvi broevi se 3 i 5.
Takvi broevi se 5 i 7.
Takvi broevi se 11 i 13.
Takvi broevi se 17 i 19.
Takvi broevi se 29 i 31.
Takvi broevi se 41 i 43.

7
Programski jazik C PISI

6. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~atat site broevi koi se delivi so svoite cifri vo
zadaden interval. Po~etokot i krajot na intervalot se
vnesuvaat od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


poc po~etok na interval
prima vrednost 1
kraj kraj na interval ako brojot e deliv
so svoite cifri i 0
pom pomo{na promenliva deliv
ako brojot ne e
i broja~ vo interval deliv so svoite
cifri
a cifra od interval

#include<stdio.h>
int main()
{
int pom,poc,kraj,i,a,deliv;
printf("Vnesete pocetok i kraj na intervalot=");
scanf("%d %d",&poc,&kraj);
for(i=poc;i<=kraj;i++)
{
pom=i;
deliv=1;
while(pom>0)
{
a=pom%10;
if(a!=0)
{
if(i%a!=0)
deliv=0;
}
pom/=10;

}
if(deliv==1)
printf("Uslovot e ispolnet kaj brojot %d\n",i);

8
Programski jazik C PISI

}
return 0;
}
_______________________________________________________

Test primer:

VLEZ:

Vnesete po~etok i kraj na intervalot=20 30

Programata pe~ati:
Uslovot e ispolnet kaj brojot 20
Uslovot e ispolnet kaj brojot 22
Uslovot e ispolnet kaj brojot 24
Uslovot e ispolnet kaj brojot 30

9
Programski jazik C PISI

7. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~atat broevite vo zadaden interval koi imaat odreden
broj na deliteli. Brojot na deliteli se vnesuva od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


poc po~etok na interval
kraj kraj na interval

i broja~ vo interval br broj na deliteli


n broj na deliteli
deliteli na
j
broevite

#include<stdio.h>
#include<math.h>
int main()
{
int poc,kraj,i,j,n,br;
printf("Vnesete pocetok i kraj na intervalot=");
scanf("%d %d",&poc,&kraj);
printf("Vnesete kolku deliteli da se baraat po broj=");
scanf("%d",&n);
for(i=poc;i<=kraj;i++)
{
j=2;
br=1;
while(j<=i/2)
{
if(i%j==0)
br++;
j++;
}
if(br==n)
printf("Uslovot e ispolnet kaj brojot %d.\n",i);
}
return 0;
}

10
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete po~etok i kraj na intervalot=1 20


Vnesete kolku deliteli da se baraat po broj=3

Programata pe~ati:
Uslovot e ispolnet kaj brojot 6.
Uslovot e ispolnet kaj brojot 8.
Uslovot e ispolnet kaj brojot 10.
Uslovot e ispolnet kaj brojot 14.
Uslovot e ispolnet kaj brojot 15.

11
Programski jazik C PISI

8. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat broevite od zadaden interval delivi barem so eden
od broevite 3, 5 ili 7.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


poc po~etok na interval
kraj kraj na interval

i broja~ vo interval

#include<stdio.h>
int main()
{
int poc,kraj,i;
printf("Vnesete pocetok i kraj na intervalot:");
scanf("%d %d",&poc,&kraj);
for(i=poc;i<=kraj;i++)
if(i%3==0 || i%5==0 || i%7==0)
printf("Brojot %d e deliv so eden od broevite 3, 5 ili 7.\n",i);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete po~etok i kraj na intervalot:10 20

Programata pe~ati:

Brojot 10 e deliv so eden od broevite 3, 5 ili 7.


Brojot 12 e deliv so eden od broevite 3, 5 ili 7.
Brojot 14 e deliv so eden od broevite 3, 5 ili 7.
Brojot 15 e deliv so eden od broevite 3, 5 ili 7.
Brojot 18 e deliv so eden od broevite 3, 5 ili 7.
Brojot 20 e deliv so eden od broevite 3, 5 ili 7.

12
Programski jazik C PISI

9. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat broevite od zadaden interval delivi so broevite 2,
3 i 6.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


poc po~etok na interval
kraj kraj na interval

i broja~ vo interval

#include<stdio.h>
int main()
{
int poc,kraj,i;
printf("Vnesete pocetok i kraj na intervalot:");
scanf("%d %d",&poc,&kraj);
for(i=poc;i<=kraj;i++)
if(i%2==0 && i%3==0 && i%6==0)
printf("Brojot %d e deliv so broevite 2, 3 i 6.\n",i);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete po~etok i kraj na intervalot:10 20

Programata pe~ati:

Brojot 12 e deliv so broevite 2, 3 i 6.


Brojot 18 e deliv so broevite 2, 3 i 6.

13
Programski jazik C PISI

10. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~atat site cifri upotrebeni vo zapisot na daden broj.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n proizvolen broj

a cifri od brojot

pomo{na promenliva
pom koja go pomni vneseniot
broj

#include<stdio.h>
int main()
{
int n,a,pom;
printf("Vnesete broj:");
scanf("%d",&n);
pom=n;
printf("Brojot e sostaven od cifrite: ");
while(pom>0)
{
a=pom%10;
printf("%d ",a);
pom/=10;
}
printf("\n");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete broj:9564

Programata pe~ati:

Brojot e sostaven od cifrite: 4 6 5 9

14
Programski jazik C PISI

11. Da se napi{e programa vo programskiot jazik C so koja }e


se ispe~atat site dekadni broevi vo zadaden interval koi se
palindromi vo binaren broen sistem.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
poc po~etok na intervalot
kraj kraj na intervalot
i broja~ vo intervalot
cifra vo dekaden ili
a
binaren broj
pomo{na promenliva vo bin binaren broj
pom koja se ~uva dekadniot
broj
obraten broj na
m
binarniot broj

poz pozicija na cifrata

#include<stdio.h>
int main()
{
int poc,kraj,i,pom,a,poz;
long int bin,bin2,m;
printf("Vnesete pocetok i kraj na intervalot:");
scanf("%d %d",&poc,&kraj);
for(i=poc;i<=kraj;i++)
{
pom=i;
bin=0;
poz=1;
while(pom>0)
{
a=pom%2;
bin+=a*poz;
poz*=10;
pom/=2;
}
bin2=bin;
m=0;

15
Programski jazik C PISI

while(bin2>0)
{
a=bin2%10;
m=m*10+a;
bin2/=10;
}
if(bin==m)
printf("Dekadniot broj %d, pretvoren vo binaren e
palindrom i e %d.\n",i,bin);
}
return 0;
}
_______________________________________________________Test
primer:

VLEZ:

Vnesete po~etok i kraj na intervalot:15 40

Programata pe~ati:

Dekadniot broj 15, pretvoren vo binaren e palindrom i e 1111.


Dekadniot broj 17, pretvoren vo binaren e palindrom i e
10001.
Dekadniot broj 21, pretvoren vo binaren e palindrom i e
10101.
Dekadniot broj 27, pretvoren vo binaren e palindrom i e
11011.
Dekadniot broj 31, pretvoren vo binaren e palindrom i e
11111.
Dekadniot broj 33, pretvoren vo binaren e palindrom i e
100001.

16
Programski jazik C PISI

12. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde najgolemiot od tri broja.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
a,b,c proizvolni broevi

#include<stdio.h>
int main()
{
float a,b,c;
printf("Vnesete gi trite broja:");
scanf("%f %f %f",&a,&b,&c);
if(a>=b && a>=c)
printf("Najgolem e %.1f\n",a);
if(b>=a && b>=c)
printf("Najgolem e %.1f\n",b);
if(c>=a && c>=b)
printf("Najgolem e %.1f\n",c);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete gi trite broja: 12.5 98.8 102.5

Programata pe~ati:
Najgolem e 102.5

17
Programski jazik C PISI

13. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde najmaliot delitel na daden broj ili da se utvrdi
deka toj broj e prost.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
x proizvolen broj

j delitel na brojot x najmal delitel na


i
brojot x

br broj na deliteli

#include<stdio.h>
int main()
{
int x,i,j,br=0;
printf("Vnesete broj=");
scanf("%d",&x);
j=2;
while(br==0 && j<=(x/2))
{
if(x%j==0)
{
br++;
i=j;
}
j++;
}
if(br!=0)
printf("Najmaliot delitel e %d.\n",i);
else
printf("Brojot e prost.\n");
return 0;
}

18
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete broj=39

Programata pe~ati:
Najmaliot delitel e 3.

19
Programski jazik C PISI

14. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde obratniot broj na daden broj. Obraten broj na daden
broj e broj zapi{an so istite cifri no vo obraten redosled.
Na primer obraten broj na brojot 3254 e brojot 4523.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n proizvolen broj

a cifra od brojot obratniot broj na


m
brojot n
pomo{na promenliva
pom vo koja se pomni
brojot n

#include<stdio.h>
int main()
{
int n,a,pom,m=0;
printf("Vnesete priroden broj=");
scanf("%d",&n);
pom=n;
while (pom>0)
{
a=pom%10;
m=m*10+a;
pom/=10;
}
printf("Obratniot broj e %d.\n",m);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete priroden broj=123456

Programata pe~ati:
Obratniot broj e 654321

20
Programski jazik C PISI

15. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat site broevi koi se palindromi vo daden interval.
(Eden broj e palindrom ako se ~ita isto od dvete strani).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
po~etok na
poc
intervalot

kraj kraj na intervalot

broja~i vo
i
intervalot
obraten broj na
m
brojot od intervalot

a cifra od brojot

pomo{na promenliva
pom vo koja se pomni broj
od intervalot

#include<stdio.h>
int main()
{
int m,poc,kraj,i,pom,a;
printf("Vnesete pocetok i kraj na intervalot: ");
scanf("%d %d",&poc,&kraj);
for(i=poc;i<=kraj;i++)
{
m=0;
pom=i;
while (pom>0)
{
a=pom%10;
m=m*10+a;
pom/=10;
}
if(i==m)
printf("Palindrom e brojot %d.\n",i);
}

21
Programski jazik C PISI

return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete po~etok i kraj na intervalot: 150 250


Programata pe~ati:
Palindrom e brojot 151.
Palindrom e brojot 161.
Palindrom e brojot 171.
Palindrom e brojot 181.
Palindrom e brojot 191.
Palindrom e brojot 202.
Palindrom e brojot 212.
Palindrom e brojot 222.
Palindrom e brojot 232.
Palindrom e brojot 242.

22
Programski jazik C PISI

16. Da se napi{e programa vo programskiot jazik C so koja }e


se pronajdat site dvojki broevi od intervalot od 1 do 100 ~ij
{to proizvod e obraten broj od nivniot zbir.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
i,j broja~i

m obraten broj
s zbir na dva broja

a cifra od brojot

pomo{na promenliva proizvod na dva


pom p
vo koja se ~uva broj broja

#include<stdio.h>
int main()
{
int i,j,s,p,a,pom,m;
for(i=1;i<100;i++)
for(j=1;j<100;j++)
{
m=0;
s=i+j;
p=i*j;
pom=p;
while(pom>0)
{
a=pom%10;
m=m*10+a;
pom/=10;
}
if(s==m)
{
printf("Uslovot e zadovolen kaj parot broevi %d i
%d.\n",i,j);
printf("%d+%d=%d, a %d*%d=%d\n",i,j,s,i,j,p);
printf("\n");
}
}

23
Programski jazik C PISI

return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Programata pe~ati:

Uslovot e zadovolen kaj parot broevi 2 i 2.


2+2=4, a 2*2=4

Uslovot e zadovolen kaj parot broevi 2 i 47.


2+47=49, a 2*47=94

Uslovot e zadovolen kaj parot broevi 3 i 24.


3+24=27, a 3*24=72

Uslovot e zadovolen kaj parot broevi 5 i 26.


5+26=31, a 5*26=130

Uslovot e zadovolen kaj parot broevi 9 i 9.


9+9=18, a 9*9=81

Uslovot e zadovolen kaj parot broevi 24 i 3.


24+3=27, a 24*3=72

Uslovot e zadovolen kaj parot broevi 26 i 5.


26+5=31, a 26*5=130

Uslovot e zadovolen kaj parot broevi 47 i 2.


47+2=49, a 47*2=94

24
Programski jazik C PISI

17. Da se napi{e programa vo programskiot jazik C so koja }e se


najdat site prosti broevi vo zadaden interval.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
poc po~etok na intervalot

kraj kraj na intervalot

i broja~ vo intervalot

deliteli na brojot od
j
intervalot
prima vrednost 1 ako
prost brojot e prost i 0 ako
brojot ne e prost

#include<stdio.h>
#include<math.h>
int main()
{
int poc,kraj,i,j,prost=1;
printf("Vnesete pocetok i kraj na intervalot=");
scanf("%d %d",&poc,&kraj);
for(i=poc;i<=kraj;i++)
{
prost=1;
j=2;
while(prost && j<(i/2))
{
if(i%j==0)
prost=0;
j++;
}
if (prost)
printf("Prost broj e %d.\n",i);
}
return 0;
}

25
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete po~etok i kraj na intervalot=20 60

Programata pe~ati:
Prost broj e 23.
Prost broj e 29.
Prost broj e 31.
Prost broj e 37.
Prost broj e 41.
Prost broj e 43.
Prost broj e 47.
Prost broj e 53.
Prost broj e 59.

26
Programski jazik C PISI

18. Da se napi{e programa vo programskiot jazik C so koja }e


se najdat prostite faktori na eden priroden broj. (Prosti
faktori na eden broj se negovite prosti mno`iteli).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
proizvolen priroden
n
broj
prost faktor (mno`itel)
x
na brojot
i deliteli na brojot

#include<stdio.h>
int main()
{
int n,x,i;
printf("Vnesete pozitiven cel broj:");
scanf("%d",&x);
n=x;
i=2;
do
{
if(n%i==0)
{
n=n/i;
printf("%d X ",i);
}
else
i++;
} while(n!=1);
printf("1=%d\n",x);
return 0;
}
_______________________________________________________
Test primer:

VLEZ:
Vnesete pozitiven cel broj: 228

Programata pe~ati:
2 X 2 X 3 X 19 X 1=228

27
Programski jazik C PISI

19. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat dvojkite tricifreni i ednocifreni broevi ~ii
zbirovi se obratni broevi so nivnite proizvodi.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
i,j broja~i
s suma na dva broja
a cifra od broj
pomo{na promenliva
pom proizvod na dva
vo koja se pomni broj p
broja
invS obraten broj

#include<stdio.h>
int main()
{
int i,j,pom,a,p,s,invS;
for(i=1;i<10;i++)
for(j=100;j<1000;j++)
{
p=i*j;
s=i+j;
pom=s;
invS=0;
while(pom>0)
{
a=pom%10;
invS=invS*10+a;
pom/=10;
}
if(p==invS)
printf("Parot broevi e: %d i %d.\n",i,j);
}
return 0;
}

28
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Programata pe~ati:

Parot broevi e 2 i 497


2+497=499
2*497=994

29
Programski jazik C PISI

20. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta vkupniot broj na deliteli na broevi vo daden
segment.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
poc po~etok na interval

kraj kraj na intervalot

i broja~ vo intervalot br broj na deliteli


pomo{na promenliva
pom vo koja se pomni
odreden broj

#include<stdio.h>
int main()
{
int i,poc,kraj,br=0,j=0,pom;
printf("Vnesete pocetok i kraj na intervalot: ");
scanf("%d %d",&poc,&kraj);
for(i=poc;i<=kraj;i++)
{
j=1;
pom=i;
while(j<=pom/2)
{
if(i%j==0)
br++;
j++;
}
}
printf("Vkupen broj na deliteli e %d.\n",br);
return 0;
}
_______________________________________________________
Test primer:
VLEZ:
Vnesete po~etok i kraj na intervalot: 10 30

Programata pe~ati:
Vkupen broj na deliteli e 67.

30
Programski jazik C PISI

21. Da se napi{e programa vo programskiot jazik C so koja }e


se pronajdat site tricifreni broevi koi go ispolnuvaat
uslovot: xyz=x+y2+z3.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
i broja~ vo intervalot
cifrite na stotkite,
desetkite i
x,y,z
edinicite na sekoj
broj od intervalot

#include<stdio.h>
int main()
{
int i,x,y,z;
for(i=100;i<1000;i++)
{
z=i%10;
y=(i/10)%10;
x=i/100;
if (i==x+y*y+z*z*z)
{
printf("%d",i);
printf("\n");
}
}
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Programata pe~ati:

135
175
518
598

31
Programski jazik C PISI

22. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat site broevi vo zadaden interval za koi e ispolnet
uslovot :
zbirot na cifrite⋅n=proizvodot na cifrite.
Vrednosta na n se vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
i broja~ vo intervalot

kraj kraj na intervalot

i broja~ vo intervalot
odnos pome|u
n proizvodot i zbirot
od cifrite
pomo{na promenliva
pom
vo koja se pomni broj
s zbir od cifrite
p proizvod od cifrite
a cifra od broj

#include<stdio.h>
int main()
{
int i,pom,n,p=1,s=0,a,poc,kraj;
printf("Vnesete pocetok i kraj na intervalot: ");
scanf("%d %d",&poc,&kraj);
printf("Vnesete n (kolku pati da e pomal zbirot od proizvodot na
cifrite) =");
scanf("%d",&n);
for(i=poc;i<=kraj;i++)
{
s=0;
p=1;
if(i<10)
{
printf("Mnogu mal broj!\n");
return 0;
}

32
Programski jazik C PISI

pom=i;
while(pom>0)
{
a=pom%10;
p*=a;
s+=a;
pom/=10;
}
if(s*n==p)
printf("Uslovot e ispolnet kaj brojot %d\n",i);
}
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete po~etok i kraj na intervalot: 50 1000


Vnesete n (kolku pati da e pomal zbirot od proizvodot na
cifrite) =4

Programata pe~ati:

Uslovot e ispolnet kaj brojot 88


Uslovot e ispolnet kaj brojot 189
Uslovot e ispolnet kaj brojot 198
Uslovot e ispolnet kaj brojot 246
Uslovot e ispolnet kaj brojot 264
Uslovot e ispolnet kaj brojot 426
Uslovot e ispolnet kaj brojot 462
Uslovot e ispolnet kaj brojot 624
Uslovot e ispolnet kaj brojot 642
Uslovot e ispolnet kaj brojot 819
Uslovot e ispolnet kaj brojot 891
Uslovot e ispolnet kaj brojot 918
Uslovot e ispolnet kaj brojot 981

33
Programski jazik C PISI

23. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat site broevi od zadaden interval na koi zbirot od
kubovite na cifrite i proizvodot od kubovite na cifrite go
davaat samiot broj.
Re{enie:
Vlezni promenlivi Izlezni promenlivi
poc po~etok na interval

kraj kraj na intervalot

i broja~ vo intervalot
s suma (zbir)
p proizvod
x cifra od brojot
pomo{na promenliva
pom vo koja se pomni broj
od intervalot
#include<stdio.h>
int main()
{
int i,x,s,p,poc,kraj,pom;
printf("Vnesete pocetok i kraj na intervalot =");
scanf("%d %d",&poc,&kraj);
for(i=poc;i<=kraj;i++)
{
s=0;
p=1;
pom=i;
while(pom>0)
{
x=pom%10;
s+=x*x*x;
p*=x*x*x;
pom/=10;
}
if(i==s+p)
printf("Uslovot e ispolnet kaj brojot %d.\n",i);
}
return 0;
}

34
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete po~etok i kraj na intervalot =100 1000

Programata pe~ati:

Uslovot e ispolnet kaj brojot 370.


Uslovot e ispolnet kaj brojot 407.

35
Programski jazik C PISI

24. Da se napi{e programa vo programskiot jazik C koja }e gi


ispe~ati site sovr{eni broevi pomali od daden broj n.
(Sovr{eni broevi se broevite koi se ednakvi na zbirot od
nivnite deliteli).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n kraj na intervalot

i broja~ vo intervalot
deliteli na broj od
j
intervalot
broj zbir na deliteli

#include<stdio.h>
int main()
{
int broj,i,j,n;
printf("Vnesete do koj broj da se proveruva:\t");
scanf("%d",&n);
printf("Sovrseni broevi pomali od brojot %d se brooevite: ",n);
for (i=1;i<=n;i++)
{
broj=0;
for (j=1;j<=i/2;j++)
{
if (i%j==0)
broj+=j;
}
if (broj==i)
printf("%d ,",i);
}
printf("\n\n");
system("pause");
return 0;
}

36
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete do koj broj da se proveruva: 100

Sovr{eni broevi pomali od brojot 100 se broevite 6, 28

37
Programski jazik C PISI

25. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~ati onoj priroden broj pomal od n ~ij zbir na deliteli e
najgolem kako i vrednosta na toj zbir.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n kraj na interval pomo{na promenliva
pom vo koja se pomni
broja~ vo brojot ~ij zbir na
i
intervalot deliteli e najgolem
deliteli na broj
j najgolema vrednost od
od intervalot max
zbirot na delitelite
zbird zbir na deliteli

#include<stdio.h>
int main()
{
int n,i,j,zbird,max=0,pom;
do
{
printf("Vneste do koj broj da se proveruva:\t");
scanf("%d",&n);
}
while (n<0);
for (i=1;i<=n;i++)
{
zbird=0;
for (j=1;j<=i;j++)
{
if (i%j==0)
zbird+=j;
}
if (max<zbird)
{
max=zbird;
pom=i;
}
}
printf("\n\nOd site broevi pomali od brojot %d najgolem zbir na
deliteli\n",n);
printf("ima brojot %d i toj zbir iznesuva %d.\n\n\n",pom,max);

38
Programski jazik C PISI

system("pause");
return 0;
}

_______________________________________________________
Test primer

VLEZ:

Vnesete do koj broj da se proveruva 748

Od site broevi pomali od brojot 748 najgolem zbir na deliteli


ima brojot 720 i toj zbir iznesuva 2418.

39
Programski jazik C PISI

2. Matemati~ki zada~i
1. Da se napi{e programa vo programskiot jazik C so koja }e se
presmeta koli~nikot na dva broja na n decimali.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
x,y broevi koi se delat

n broj na decimalni mesta

r cifra od rezultatot
i broja~

ostatok pri deleweto


ost
na brojot x so brojot y

#include<stdio.h>
int main()
{
int x,y,i;
int n,ost,r;
printf("Vnesete dva broja:");
scanf("%d %d",&x,&y);
printf("Na kolku decimali da se presmeta:");
scanf("%d",&n);
printf("%d/%d=%d.",x,y,x/y);
ost=x%y;
for(i=1;i<=n;i++)
{
ost*=10;
r=ost/y;
printf("%d",r);
ost=ost-y*r;
}
printf("\n");
return 0;
}

40
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete dva broja: 22 7


Na kolku decimali da se presmeta: 8

Programata pe~ati:

22/7=3.14285714

41
Programski jazik C PISI

2. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta plo{tinata na triagolnikot so zadadeni strani a,b i
c.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
strani na
a,b,c
triagolnikot
plo{tina na
p
vrednosta s vo triagolnikot
s
Heronovata formula

#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c;
double p,s;
printf("Vnesete gi stranite na triagolnikot: ");
scanf("%f %f %f",&a,&b,&c);
if(a+b>c && a+c>b && c+a>b)
{
s=(a+b+c)/(2*1.0);
p=sqrt(s*(s-a)*(s-b)*(s-c));
printf("Plostinata na triagolnikot so strani %.1f %.1f i %.1f
= %.1f\n",a,b,c,p);
}
else
printf("Vnesenite strani ne mozat da formiraat
triagolnik.\n");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete gi stranite na triagolnikot: 12 25 18

Programata pe~ati:
Plo{tinata na triagolnikot so strani 12.0 25.0 i 18.0 = 100.6

42
Programski jazik C PISI

3. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta kolku vreme pominalo od datumot na ra|awe.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
d1,m1, datum na ra|awe
g1 (den, mesec i godina)
starost vo denovi,
d3,m3,g3
d2,m2, dene{en datum (den, meseci i godini
g2 mesec i godina)

#include<stdio.h>
int main()
{
int g1,m1,d1,g2,m2,d2,g3,m3,d3;
printf("Vnesete datum na raganje (den, mesec, godina):");
scanf("%d %d %d",&d1,&m1,&g1);
printf("Vnesete denesen datum (den, mesec, godina):");
scanf("%d %d %d",&d2,&m2,&g2);
if(d2<d1)
{
d2=d2+30;
m2-=1;
}
d3=d2-d1;
if(m2<m1)
{
m2=m2+12;
g2-=1;
}
m3=m2-m1;
g3=g2-g1;
printf("Vasata starost e: %d godini, %d meseci, %d
dena.\n",g3,m3,d3);
return 0;
}

43
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete datum na ra|awe (den, mesec, godina): 1 6 1992


Vnesete dene{en datum (den, mesec, godina): 28 9 2005

Programata pe~ati:

Va{ata starost e: 13 godini, 3 meseci, 27 dena.

44
Programski jazik C PISI

4. Da se napi{e programa vo programskiot jazik C so koja }e se


izvr{i tabelirawe na funckiite x2 x i x3 vo intervalot od 1
do 10.
Re{enie:
Vlezni promenlivi Izlezni promenlivi
vrednost za
x
tabelirawe

#include<stdio.h>
#include<math.h>
int main()
{
int x;
printf(" Tabela na funkcii \n");
x=0;
printf("--------------------------------\n");
while(x<=10)
{
printf(" %d | %d %.2f %d
\n",x,x*x,float(sqrt(x)),x*x*x);
x++;
}
return 0;
}
_______________________________________________________
Test primer:
VLEZ:
Programata pe~ati:
Tabela na funkcii
--------------------------------
0 | 0 0.00 0
1 | 1 1.00 1
2 | 4 1.41 8
3 | 9 1.73 27
4 | 16 2.00 64
5 | 25 2.24 125
6 | 36 2.45 216
7 | 49 2.65 343
8 | 64 2.83 512
9 | 81 3.00 729
10 | 100 3.16 1000

45
Programski jazik C PISI

5. Da se napi{e programa vo programskiot jazik C so koja }e se


opredeli zaemniot odnos pome|u dve kru`nici.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
koordinati na
x1,y1,r1 centarot i radiusot
na prvata kru`nica
koordinati na
x2,y2,r2 centarot i radiusot
na vtorata kru`nica
rastojanie pome|u
d centrite na dvete
kru`nici

#include<stdio.h>
#include<math.h>
int main()
{
int x1,y1,x2,y2,r1,r2;
float d;
printf("Vneste ja x koordinatata na centarot na prvata kruznica\t");
scanf("%d",&x1);
printf("Vneste ja y koordinatata na centarot na prvata kruznica\t");
scanf("%d",&y1);
printf("Vneste go radiusot na prvata kruznica\t");
scanf("%d",&r1);
printf("Vneste ja x koordinatata na centarot na vtorata kruznica\t");
scanf("%d",&x2);
printf("Vneste ja y koordinatata na centarot na vtorata kruznica\t");
scanf("%d",&y2);
printf("Vneste go radiusot na vtorata kruznica\t");
scanf("%d",&r2);
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf("\n\n");
if (d==(r1+r2))
printf("Kruznicite se dopiraat od nadvor\n\n");
if (d>(r1+r2))
printf("Kruznicite se razminuvaat\n\n");
if ((d>abs(r1-r2)) && (d<(r1+r2)))
printf("Kruznicite se secat\n\n");
if (d==abs(r1-r2))

46
Programski jazik C PISI

printf("Kruznicite se dopiraat od vnatre\n\n");


if (d<abs(r1-r2))
printf("Kruznicite se edna vo druga\n\n");
system ("pause");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete ja x koordinatata na centarot od prvata kru`nica 5


Vnesete ja y koordinatata na centarot od prvata kru`nica -6
Vnesete go radiusot na prvata kru`nica 4
Vnesete ja x koordinatata na centarot od vtorata kru`nica -4
Vnesete ja y koordinatata na centarot od vtorata kru`nica 3
Vnesete go radiusot na prvata kru`nica 2

Kru`nicite se razminuvaat.

47
Programski jazik C PISI

6. Da se napi{e programa vo programskiot jazik C so koja }e se


n
 1
presmeta vrednosta na izrazot En = 1 +  za n=1,2,3,... se
 n
dodeka e ispolnet uslovot En − En−1 < ε . (Vrednosta na ε se
vnesuva preku tastatura).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
vrednost za to~nost do
e
koja }e se proveruva
i broja~ vo intervalot
prethodna vrednost na E vrednost na izrazot
prethodna
E
vrednost na sekoj ~len
x od razvojot E koja se
stepenuva na n
#include<stdio.h>
#include<math.h>
int main()
{
float n=1,x,prethodna=2,E,e;
printf("Vneste vrednost do koja ke se proveruva\t");
scanf("%f",&e);
n++;
x=1+1/n;
E=pow(x,n);
while ((E-prethodna)>e)
{
prethodna=E;
n++;
x=1+1/n;
E=pow(x,n);
}
printf("\n\nVrednosta na brojot e so tocnost do %8.7f iznesuva
e=%8.7f.",e,E);
printf("\n\n\n");
system("pause");
return 0;
}

48
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete vrednost do koja }e se proveruva 0.0001

Vrednosta na brojot e so to~nost do 0.0001 iznesuva


e=2.7060256

49
Programski jazik C PISI

7. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta najmaliot broj na banknoti od po 10, 20 i 50 denari so
koi mo`e da se isplati sumata S.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
vkupen broj na
brojbank
suma vrednost na sumata banknoti
broj na banknoti od
bank10
po 10 denari
broj na banknoti od
pomo{na promenliva bank20
po 20 denari
pom vo koja se pomni
broj na banknoti od
vkupnata suma bank50
po 50 denari

#include<stdio.h>
int main()
{
int suma,brojbank=0,bank50=0,bank20=0,bank10=0,pom;
do
{
printf("Vnesete ja vkupnata suma (sumata da e deliva so 10):\t");
scanf("%d",&suma);
}
while (suma%10!=0);
pom=suma;
bank50=suma/50;
brojbank+=bank50;
suma-=bank50*50;
if (suma>0)
{
bank20=suma/20;
brojbank+=bank20;
suma-=bank20*20;
}
if (suma>0)
{
bank10=suma/10;
brojbank+=bank10;
}
printf("\n\nVkupnata suma od %d denari moze da se isplati so pomos
na %d banknoti\n",pom,brojbank);

50
Programski jazik C PISI

printf("i toa so %d banknoti od 50 den., %d banknoti od 20 den. i %d


banknoti od 10 den.",bank50,bank20,bank10);
printf("\n\n\n");
system("pause");
return 0;
}
_______________________________________________________
Test primer:

VLEZ:

Vnesete ja vkupnata suma (sumata da e deliva so 10) 5440

Vkupnata suma od 5440 denari mo`e da se isplati so pomo{ na


110 banknoti i toa so 108 banknoti od 50 denari, 2 banknoti od
20 denari i 0 banknoti od 10 denari

51
Programski jazik C PISI

8. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta geometriska sredina od n broevi x1,x2,...,xn koi se
vnesuvaat preku tastatura. (Geometriska sredina na broevite
se presmetuva spored formulata: GS = n x1 ⋅ x 2 ⋅ L ⋅ x n ).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n vkupen broj na broevi

i broja~

x proizvolen broj geometriska


gsredina
sredina od n broevi
proizvod od
proizvod
broevite
me|uvrednost vo
t
presmetkite

#include<stdio.h>
#include<math.h>
main()
{
int i,n,x;
float gsredina,t,proizvod=1;
printf("Vnesete od kolku broevi da se bara geometriska sredina\t");
scanf("%d",&n);
for (i=1;i<=n;i++)
{
printf("Vnesete go %d-iot broj: \t",i);
scanf("%d",&x);
proizvod=proizvod*x;
};
t=log(proizvod)/n;
gsredina=exp(t);
printf("\n\n\nGeometriskata sredina od broevite iznesuva
%6.3f\n",gsredina);
system("Pause");
}

52
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:
Vnesete od kolku broevi da se bara geometriska sredina 6

Vnesete go 1-iot broj 3


Vnesete go 2-iot broj 5
Vnesete go 3-iot broj 6
Vnesete go 4-iot broj 4
Vnesete go 5-iot broj 8
Vnesete go 6-iot broj 7

Geometriskata sredina od broevite iznesuva 5.217

53
Programski jazik C PISI

9. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat site re{enija na kvadratnata ravenka
a⋅ x +b⋅x +c = 0.
2

Re{enie:
Vlezni promenlivi Izlezni promenlivi
vrednost na prvoto realno
a koeficientot pred koren1 re{enie na kvad-
kvadratniot ~len ratnata ravenka
vrednost na vtoroto realno
b koeficientot pred koren 2 re{enie na kvad-
linearniot ~len ratnata ravenka
realen del od
vrednost na kompleksnoto re-
c re
slobodniot ~len {enie na kvad-
ratnata ravenka
imaginarniot del
vrednost na od kompleksnoto
d diskriminantata na im re{enie na
kvadratnata ravenka kvadratnata
ravenka

#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c;
float d,koren1,koren2,re,im;
do
{
printf("Vneste go koeficientot pred kvadratniot clen (a!=0):\t");
scanf("%f",&a);
}
while (a==0);
printf("Vneste go koeficientot pred linearniot clen(b):\t");
scanf("%f",&b);
printf("Vnesete go slobodniot clen (c):\t");
scanf("%f",&c);
d=b*b-4*a*c;
if (d>=0)
{
koren1=(-b-sqrt(d)/(2*a);

54
Programski jazik C PISI

koren2=(-b+sqrt(d)/(2*a);
printf("\n\nResenijata na kvadratnata ravenka se: x1=%4.2f i x2=
%4.2 f\n\n" ,koren1, koren2);
}
else
{
re=-b/(2*a);
im=sqrt(-1*d)/(2*a);
printf("\n\nResenijata na kvadratnata ravenkata se x1=%4.2f-
i*%4.2f i\n", re, im);
printf("x2=%4.2f+i*%4.2f\n\n\n",re,im);
}
system("pause");
return 0;
}
_______________________________________________________
Test primer

VLEZ

Vnesete go koeficientot pred kvadratniot ~len (a!=0) 2


Vnesete go koeficientot pred linearniot ~len (b) 3
Vnesete go slobodniot ~len (c) -4

Re{enijata na kvadratnata ravenka se x1=-2.35 i x2=0.85

55
Programski jazik C PISI

10. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta vrednosta na izrazot 2 + 2 +L+ 2 .
144 42444 3
n
Re{enie:
Vlezni promenlivi Izlezni promenlivi
n vkupen broj na koreni

i broja~ koren vrednost na izrazot


me|uvrednost pri
zbir
presmetkite

#include<stdio.h>
#include<math.h>
main()
{
float i,n;
float koren=0,zbir;
zbir=2+sqrt(2);
printf("Vnesete go brojot na korenite\t");
scanf("%f",&n);
for (i=1; i<n; i++)
{
koren =sqrt(zbir);
zbir=koren+2;
}
printf("\n\nVrednosta na izrazot iznesuva %6.4f.\n\n",koren);
system("pause");
}

_______________________________________________________
Test primer

VLEZ:

Vnesete go brojot na korenite 4

Vrednosta na izrazot iznesuva 1.9904

56
Programski jazik C PISI

11. Da se napi{e funkcija vo programskiot jazik C {to prima


dva parametri x i n i vra}a vrednost :
 x n x n+ 2
 x + − ,x ≥0
f (x ) =  n n + 2 . Potoa da se sostavi programa {to
n −1 n +1
− x + x , x < 0
 n − 1 n + 1
}e ja tabelira ovaa funkcija za vrednost na n koja se vnesuva
preku tastatura vo interval x ∈ [− 4,4] , so ~ekor 0.5.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
vrednost na
n
parametarot n y vrednost na funkcijata
x broja~ vo intervalot

#include<stdio.h>
#include<math.h>
int main()
{
float n,x,y;
printf("Vneste vrednost za parametarot n:\t");
scanf("%f",&n);
printf("\n\n_______________________________________\n");
printf(" x y\n");
printf("_______________________________________\n");
for (x=-4;x<=4;x+=0.5)
{
if (x>=0)
{
y=x+pow(x,n)/n-pow(x,n+2)/(n+2);
printf(" %4.2f %6.4f\n",x,y);
}
else
{
y=-pow(x,n-1)/(n-1)+pow(x,n+1)/(n+1);
printf(" %4.2f %6.4f\n",x,y);
}
}
printf("\n____________________________________\n\n\n");

57
Programski jazik C PISI

system("pause");
return 0;
}

_______________________________________________________
Test primer

VLEZ:

Vnesete vrednost za parametarot n: 5

___________________________________
x y
___________________________________
-4.00 618.6667
-3.50 268.8620
-3.00 101.2500
-2.50 30.9245
-2.00 6.6667
-1.50 0.6328
-1.00 -0.0833
-0.50 -0.0130
0.00 0.0000
0.50 0.5051
1.00 1.0571
1.50 0.5779
2.00 -9.8857
2.50 -65.1618
3.00 -260.8286
3.50 -810.5891.
4.00 -2131.7715
______________________________________

58
Programski jazik C PISI

3. Nizi
1. Da se napi{e programa vo programskiot jazik C so koja }e se
izbri{at site elementi od dadena niza koi se javuvaat pove}e
od edna{. Nizata se vnesuva od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


niza od celi broevi
a[100] koja mo`e da ima
najmnogu 100 elementi
brojot na elementi na
n nizata
p,i,j broja~i za nizata

#include<stdio.h>
int main()
{
int a[100],j,i,n,p;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}

i=0;
while(i<n)
{
for(j=i+1;j<n;j++)
if(a[i]==a[j])
{
for(p=j;p<n;p++)
{
a[p]=a[p+1];
}
n--;

59
Programski jazik C PISI

}
if(a[i]!=a[i+1])
i++;
}
printf("Novata niza e: ");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 10


Vnesete ja nizata.
a[0]=5
a[1]=15
a[2]=22
a[3]=38
a[4]=15
a[5]=5
a[6]=57
a[7]=38
a[8]=102
a[9]=89

Programata pe~ati:

Novata niza e: 5 15 22 38 57 102 89

60
Programski jazik C PISI

2. Da se napi{e programa vo programskiot jazik C so koja }e se


izbri{e prvoto pojavuvawe na daden element vo nizata.
Nizata i elementot se vnesuvaat od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


nizi od celi broevi
koi mo`e da imaat
a[100],b[100]
najmnogu 100
elementi
brojot na elementite
n vo nizata
elementot {to treba
x da se izbri{e od
nizata
i broja~ vo prvata niza
broja~ vo vtorata
j
niza
broja~ so koj se vr{i
br popolnuvawe na
vtorata niza

#include<stdio.h>
int main()
{
int i,n,a[100],b[100],j,x,br;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Vnesete broj=");
scanf("%d",&x);
br=0;
j=0;
i=0;
while(br==0 && i<n)

61
Programski jazik C PISI

{
if(a[i]!=x)
{
b[j]=a[i];
j++;
}
else
br++;
i++;
}
for(i=j;i<n-1;i++)
b[i]=a[i+1];
printf("Novata niza e:\n");
for(i=0;i<n-1;i++)
printf("%d ",b[i]);
printf("\n");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 5


Vnesete ja nizata:
a[0]=15
a[1]=2
a[2]=48
a[3]=15
a[4]=8
Vnesete broj=15

Programata pe~ati:

Novata niza e:
2 48 15 8

62
Programski jazik C PISI

3. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~atat polnite kvadrati vo dadena niza i nivnite
kvadratni koreni. Nizata se vnesuva od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


nizi od celi broevi
koi mo`e da imaat
a[100]
najmnogu 100
kvadraten koren od
elementi pom elementite od
brojot na elementite nizata
n vo nizata
i broja~ vo nizata

#include<stdio.h>
#include<math.h>
int main()
{
int a[100],i,n,pom;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
pom=int(sqrt(a[i]));
if(sqrt(a[i])==pom)
printf("Broj koj sto e poln kvadrat e %d, a
korenuvan e %d.\n",a[i],pom);
}
return 0;
}

63
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=15 a[1]=25 a[2]=48 a[3]=36 a[4]=59 a[5]=49

Programata pe~ati:

Broj koj {to e poln kvadrat e 25, a korenuvan e 5.


Broj koj {to e poln kvadrat e 36, a korenuvan e 6.
Broj koj {to e poln kvadrat e 49, a korenuvan e 7.

64
Programski jazik C PISI

4. Da se napi{e programa vo programskiot jazik C koja }e gi


izbroi pojavuvawata na maksimalniot i minimalniot element
od dadena niza. Nizata se vnesuva od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


niza od celi broevi
ima min najmaliot element
a[100] koja mo`e da
najmnogu 100 elementi
najgolemiot
max
brojot na elementite vo element
n broj na pojavuvawa
nizata
brMin na najmaliot
element
i broja~ vo nizata broj na pojavuvawa
brMax na najgolemiot
element

#include<stdio.h>
int main()
{
int a[100],brMin=0,brMax=0,min,max,i,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
max=a[0];
for(i=0;i<n;i++)
if(a[i]>max)
max=a[i];
min=a[0];
for(i=0;i<n;i++)
if(a[i]<min)
min=a[i];
for(i=0;i<n;i++)
if(a[i]==max)
brMax++;

65
Programski jazik C PISI

for(i=0;i<n;i++)
if(a[i]==min)
brMin++;
printf("Najgolemiot broj se javuva %d pati.\n",brMax);
printf("Najmaliot broj se javuva %d pati.\n",brMin);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 8


Vnesete ja nizata:
a[0]=20 a[1]=5 a[2]=64 a[3]=2 a[4]=59 a[5]=64 a[6]=54 a[7]=2

Programata pe~ati:
Najgolemiot broj se javuva 2 pati.
Najmaliot broj se javuva 2 pati.

66
Programski jazik C PISI

5. Da se napi{e programa vo programskiot jazik C so koja }e se


najde elementot od nizata koj e najblisku do daden element
(koj se vnesuva od tastatura) na brojna oska.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


niza od celi broevi koja element od nizata
pom
a[100] mo`e da ima najmnogu najblizok do brojot m
100 elementi

brojot na elementite vo
n
nizata
razlika pome|u
ras vrednosta vo pom i
i broja~ vo nizata brojot m

m proizvolen broj

#include<stdio.h>
#include<math.h>
int main()
{
int a[100],i,ras=0,m,n,pom;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Vnesete broj=");
scanf("%d",&m);
ras=abs(m-a[0]);
pom=a[0];
for(i=1;i<n;i++)
if(abs(m-a[i])<ras)
{
pom=a[i];

67
Programski jazik C PISI

ras=abs(m-a[i]);
}
printf("Najblisku do %d e %d.\n",m,pom);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 5


Vnesete ja nizata.
a[0]=1 a[1]=5 a[2]=6 a[3]=8 a[4]=10
Vnesete broj=2

Programata pe~ati:
Najblisku do 2 e 1.

68
Programski jazik C PISI

6. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde na koja pozicija i kolku pati se pojavil daden
element vo nizata. Nizata se vnesuva od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


niza od celi broevi koja
mo`e da ima najmnogu
a[100]
100 elementi

brojot na elementite vo
n broj na pojavuvawa na
nizata br
brojot m
i broja~ vo nizata

proizvolen broj koj se


m
bara

#include<stdio.h>
int main()
{
int a[100],i,br=0,m,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Koj broj da se bara? ");
scanf("%d",&m);
for(i=0;i<n;i++)
{
if(a[i]==m)
{
printf("Brojot e najden na %d-ta pozicija.\n",i+1);
br++;
}
}

69
Programski jazik C PISI

printf("I se pojavil %d pati.\n",br);


return 0;
}

_______________________________________________________
Test primer:

VLEZ:
Kolku elementi da ima nizata? 6
Vnesete ja nizata.
a[0]=5 a[1]=8 a[2]=2 a[3]=3 a[4]=8 a[5]=10
Koj broj da se bara? 8

Programata pe~ati:
Brojot e najden na 2-ta pozicija.
Brojot e najden na 5-ta pozicija.
I se pojavil 2 pati.

70
Programski jazik C PISI

7. Da se napi{e programa vo programskiot jazik C so koja }e se


izbroi kolku pati dadena bukva se pojavila vo daden zbor.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od karakteri koja
mo`e da ima najmnogu 20
str[20]
karakteri

ch element od nizata broj na pojavuvawe na


br
bukvata

i broja~ vo nizata

a bukva koja se proveruva

#include<stdio.h>
int main()
{
char ch,str[20],a,i=0,br=0;
printf("Vnesete go zborot: ");
while(i<20 && (ch=getchar())!='\n')
{
str[i]=ch;
i++;
}
str[i]='\0';
printf("Vnesete ja bukvata: ");
scanf("%c",&a);
i=0;
while(i<20 && (str[i])!='\0')
{
if(str[i]==a)
br++;
i++;
}
printf("Bukvata %c se pojavila %d pati\n",a,br);
return 0;
}

71
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete go zborot: Makedonija


Vnesete ja bukvata: a

Programata pe~ati:

Bukvata a se pojavila 2 pati

72
Programski jazik C PISI

8. Da se napi{e programa vo programskiot jazik C so koja }e se


normalizira eden zbor. (So prva golema bukva a ostanatite
mali)

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od karakteri koja
mo`e da ima najmnogu 20
zbor[20]
karakteri

a element od nizata

i broja~ vo nizata

#include<stdio.h>
#include<ctype.h>
int main()
{
char zbor[20],a;
int i=0;
printf("Vnesete go zborot: ");
while(i<20 && (a=getchar())!='\n')
zbor[i++]=a;
zbor[i]=0;
i=1;
zbor[0]=toupper(zbor[0]);
while(zbor[i]!=0)
{
zbor[i]=tolower(zbor[i]);
i++;
}
printf("Normaliziraniot zbor e %s\n",zbor);
return 0;
}

73
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete go zborot: kompJutER

Programata pe~ati:

Normaliziraniot zbor e Kompjuter

74
Programski jazik C PISI

9. Da se napi{e programa vo programskiot jazik C so koja }e se


proveri dali daden zbor e pravilno napi{an. (So prva golema
bukva, a ostanatite mali)

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od karakteri koja
mo`e da ima najmnogu 20
zbor[20]
karakteri

a element od nizata

i broja~ vo nizata

prima vrednost 1 ako


zborot e to~no napi{an
tocno
i 0 ako zborot ne e
to~no napi{an

#include<stdio.h>
int main()
{
char zbor[20],a;
int i=0, tocno=1;
printf("Vnesete go zborot: ");
while(i<20 && (a=getchar())!='\n')
{
zbor[i]=a;
i++;
}
zbor[i]=0;
if(zbor[0]>='A' && zbor[0]<='Z')
{
i=1;
while(tocno==1 && zbor[i]!='\0')
{
if(zbor[i]>='A' && zbor[i]<='Z')
tocno=0;
i++;
}

75
Programski jazik C PISI

}
else
tocno=0;
if(tocno)
printf("Zborot e pravilno napisan.\n");
else
printf("Zborot e nepravilno napisan.\n");
return 0;
}
_______________________________________________________
Test primer:

VLEZ:
Vnesete go zborot: list

Programata pe~ati:

Zborot list e nepravilno napi{an.

76
Programski jazik C PISI

10. Da se napi{e programa vo programskiot jazik C so koja }e se


proveri dali eden zbor e palindrom. Zborot se vnesuva od
tastatura. (Eden zbor e palindrom ako se ~ita isto i od ednata
i od drugata strana).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od karakteri koja
mo`e da ima najmnogu 20
zbor[20]
karakteri

a element od nizata

i,j broja~i vo nizata

prima vrednost 1 ako


zborot e palindrom i
tocno
vrednost 0 ako zborot
ne e palindrom

#include<stdio.h>
int main()
{
char zbor[20],a;
int i=0,j,tocno;
printf("Vnesete go zborot: ");
while(i<20 && (a=getchar())!='\n')
zbor[i++]=a;
zbor[i]=0;
j=0;
while(j<i/2)
{
if(zbor[j]==zbor[i-j-1])
tocno=1;
else
tocno=0;
j++;
}
if(tocno)
printf("Zborot %s e palindrom.\n",zbor);

77
Programski jazik C PISI

else
printf("Zborot %s ne e palindrom.\n",zbor);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete go zborot: rotor

Programata pe~ati:

Zborot rotor e palindrom.

78
Programski jazik C PISI

11. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~ati unijata na dve nizi koi se vnesuvaat od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
nizi od celi broevi
a[100],b[100] koi mo`e da imaat
c[100] najmnogu 100 elementi

broj na elementi vo
n
prvata niza

elementi vo vtorata
m
niza

i,j,k,p broja~i vo intervalot

#include<stdio.h>
int main()
{
int a[100],b[100],c[100],j,i,m,n,p,k=0;
printf("Kolku elementi da ima prvata niza: ");
scanf("%d",&n);
printf("Vnesete ja prvata niza.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Kolku elementi da ima vtorata niza: ");
scanf("%d",&m);
printf("Vnesete ja vtorata niza.\n");
for(i=0;i<m;i++)
{
printf("b[%d]=",i);
scanf("%d",&b[i]);
}
printf("Unijata na nizite e: ");

for(i=0;i<n;i++)

79
Programski jazik C PISI

{
c[k]=a[i];
k++;
}
for(j=0;j<m;j++)
{
c[k]=b[j];
k++;
}
i=0;
while(i<k)
{
for(j=i+1;j<k;j++)
if(c[i]==c[j])
{
for(p=j;p<k;p++)
{
c[p]=c[p+1];
}
k--;
}
if(c[i]!=c[i+1])
i++;
}
for(i=0;i<k;i++)
printf("%d ",c[i]);

printf("\n",k);
return 0;
}

80
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima prvata niza: 5


Vnesete ja prvata niza.
a[0]=5 a[1]=9 a[2]=4 a[3]=3 a[4]=6
Kolku elementi da ima vtorata niza: 3
Vnesete ja vtorata niza.
b[0]=8 b[1]=4 b[2]=6

Programata pe~ati:

Unijata na nizite e: 5 9 4 3 6 8

81
Programski jazik C PISI

12. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~ati presekot na dve nizi koi se vnesuvaat od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
nizi od celi broevi
a[100],b[100] koi mo`e da imaat
c[100] najmnogu 100 elementi

broj na elementi vo
n
prvata niza

elementi vo vtorata
m
niza

i,j,k,p broja~i vo intervalot

#include<stdio.h>
int main()
{
int a[100],b[100],c[100],j,i,m,n,p,k=0;
printf("Kolku elementi da ima prvata niza: ");
scanf("%d",&n);
printf("Vnesete ja prvata niza.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Kolku elementi da ima vtorata niza: ");
scanf("%d",&m);
printf("Vnesete ja vtorata niza.\n");
for(i=0;i<m;i++)
{
printf("b[%d]=",i);
scanf("%d",&b[i]);
}
printf("Presekot na nizite e: ");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(a[i]==b[j])

82
Programski jazik C PISI

{
c[k]=a[i];
k++;
}
i=0;
while(i<k)
{
for(j=i+1;j<k;j++)
if(c[i]==c[j])
{
for(p=j;p<k;p++)
{
c[p]=c[p+1];
}
k--;
}
if(c[i]!=c[i+1])
i++;
}
for(i=0;i<k;i++)
printf("%d ",c[i]);

printf("\n",k);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima prvata niza: 5


Vnesete ja prvata niza.
a[0]=5 a[1]=9 a[2]=4 a[3]=3 a[4]=6
Kolku elementi da ima vtorata niza: 3
Vnesete ja vtorata niza.
b[0]=8 b[1]=4 b[2]=6

Programata pe~ati:

Presekot na nizite e: 4 6

83
Programski jazik C PISI

13. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~ati razlikata na dve nizi koi se vnesuvaat od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
nizi od celi broevi
a[100]
koi mo`e da imaat
b[100]
najmnogu 100 ele-menti
c[100]

broj na elementi vo
n
prvata niza

elementi vo vtorata
m
niza

i,j,k,p broja~i vo intervalot


prima vrednost 1 ako
se pronajdat zaedni~ki
nasol
elementi i 0 ako nema
zaedni~ki elementi

#include<stdio.h>
int main()
{
int a[100],b[100],c[100],j,i,m,n,p,k=0,nasol=0;;
printf("Kolku elementi da ima prvata niza: ");
scanf("%d",&n);
printf("Vnesete ja prvata niza.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Kolku elementi da ima vtorata niza: ");
scanf("%d",&m);
printf("Vnesete ja vtorata niza.\n");
for(i=0;i<m;i++)
{
printf("b[%d]=",i);
scanf("%d",&b[i]);
}

84
Programski jazik C PISI

printf("Razlikata na nizite e: ");


for(i=0;i<n;i++)
{
nasol=0;
for(j=0;j<m;j++)
if(a[i]==b[j])
nasol=1;
if(nasol==0)
{
c[k]=a[i];
k++;
}
}
i=0;
while(i<k)
{
for(j=i+1;j<k;j++)
if(c[i]==c[j])
{
for(p=j;p<k;p++)
{
c[p]=c[p+1];
}
k--;
}
if(c[i]!=c[i+1])
i++;
}
for(i=0;i<k;i++)
printf("%d ",c[i]);

printf("\n",k);
return 0;
}

85
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima prvata niza: 5


Vnesete ja prvata niza.
a[0]=5 a[1]=9 a[2]=4 a[3]=3 a[4]=6
Kolku elementi da ima vtorata niza: 3
Vnesete ja vtorata niza.
b[0]=8 b[1]=4 b[2]=6

Programata pe~ati:

Razlikata na nizite e: 5 4 6

86
Programski jazik C PISI

14. Da se napi{e programa vo programskiot jazik C so koja }e se


pomestat elementite na nizata cikli~no na desno za k mesta.
Nizata se vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi koja
mo`e da ima najmnogu
a[100]
100 elementi

broj na elementi vo
n
prvata niza

vrednost za
k
pomestuvawe

i,j broja~i vo intervalot


pomo{na promenliva
pom koja se upotrebuva za
smena

#include<stdio.h>
int main()
{
int a[100],i,k,n,j,pom;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Za kolku mesta da se pomesti nizata na desno: ");
scanf("%d",&k);
for(j=0;j<k;j++)
{
pom=a[n-1];
for(i=n-1;i>0;i--)
{
a[i]=a[i-1];

87
Programski jazik C PISI

}
a[0]=pom;
}
printf("Novodobienata niza e: ");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:
Kolku elementi da ima nizata? 5
Vnesete ja nizata.
a[0]=4 a[1]=7 a[2]=5 a[3]=9 a[4]=8
Za kolku mesta da se pomesti nizata na desno: 3

Programata pe~ati:
Novodobienata niza e: 5 9 8 4 7

88
Programski jazik C PISI

15. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde najgolemata raste~ka podniza na dadena niza.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi koja
mo`e da ima najmnogu
a[100]
100 elementi

broj na elementi vo
n
prvata niza
dol`ina na
dolz
i,j broja~i vo nizata podnizata

pomo{na promenliva vo
pom koja se pomni dol`inata
na podnizata
poz1 po~etok na podnizata

#include<stdio.h>
int main()
{
int i,j,n,a[100],dolz,pom,poz1;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
dolz=0;
for(i=0;i<n;i++)
{
pom=1;
j=i;
while(a[j]<a[j+1])
{
pom++;
j++;

89
Programski jazik C PISI

}
if(pom>dolz)
{
poz1=i;
dolz=pom;
}
}
printf("Najgolemata rastecka podniza ima dolzina %d i taa e:
",dolz);
for(i=poz1;i<=poz1+dolz-1;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
_______________________________________________________
Test primer:

VLEZ:
Kolku elementi da ima nizata? 5
Vnesete ja nizata: a[0]=5 a[1]=4 a[2]=1 a[3]=2 a[4]=3
Programata pe~ati:
Najgolemata raste~ka podniza ima dol`ina 3 i taa e: 1 2 3

90
Programski jazik C PISI

16. Da se napi{e programa vo programskiot jazik C so koja }e se


generiraat elementite na Fibona~ievata niza do n-tiot
element. (Fibona~ieva niza se generira na toj na~in {to sekoj
sleden element e zbir na prethodnite dva elementi. Po
definicija se zema a1=1 i a2=1).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
broj na elementi vo niza od celi broevi
n
nizata koja mo`e da ima
a[100]
najmnogu 100
i broja~ vo intervalot elementi

#include<stdio.h>
int main()
{
int a[100],i,n;
printf("Vnesete n=");
scanf("%d",&n);
a[1]=1;
a[2]=1;
for(i=1;i<n-1;i++)
{
a[i+1]=a[i]+a[i-1];
}
printf("fibonacievata niza e: ");
for(i=1;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
_______________________________________________________
Test primer:

VLEZ:

Vnesete n=8

Programata pe~ati:

Fibona~ievata niza e: 1 1 2 3 5 8 13

91
Programski jazik C PISI

17. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~atat k-te najmali elementi od niza. Nizata i brojot na
najmalite elementi se vnesuvaat od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100 elementi

broj na elementi vo
n
vleznata niza niza od celi broevi
koja mo`e da ima
broj na elementi {to b[100] najmnogu 100
k
treba da se pronajdat elementi

i,j broja~i vo nizata


pomo{na promenliva vo
pom koja se pomni element
od nizata za smena

#include<stdio.h>
int main()
{
int a[100],b[100],pom;
int i,k,n,j;
printf("Kolku elementi da ima nizata? =");
scanf("%d",&n);
printf("Kolku najmali da se najdat? =");
scanf("%d",&k);
if(k>n)
return 0;
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
b[i]=a[i];
for(i=0;i<n;i++)

92
Programski jazik C PISI

for(j=0;j<n-i-1;j++)
if(b[j]>b[j+1])
{
pom=b[j];
b[j]=b[j+1];
b[j+1]=pom;
}
printf("%d-te najmali elementi se: ",k);
for(i=0;i<k;i++)
printf("%d ",b[i]);
printf("\n");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? =7


Kolku najmali da se najdat? =4
Vnesete ja nizata.
a[0]=16
a[1]=12
a[2]=5
a[3]=49
a[4]=48
a[5]=47
a[6]=20

Programata pe~ati:

4-te najmali elementi se: 5 12 16 20

93
Programski jazik C PISI

18. Da se napi{e programa vo programskiot jazik C so koja }e se


izbroi kolku pati se pojavil maksimalniot element vo dadena
niza.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo broj na pojavuvawe na
n
nizata br najgolemiot element vo
nizata
i broja~ vo nizata

najgolem element vo
max
nizata

#include<stdio.h>
int main()
{
int a[100],br=0,max,i,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
max=a[0];
for(i=1;i<n;i++)
if(a[i]>max)
max=a[i];
for(i=0;i<n;i++)
if(a[i]==max)
br++;
printf("Najgolemiot broj se javuva %d pati.\n",br);
return 0;
}

94
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 5


Vnesete ja nizata:
a[0]=15 a[1]=8 a[2]=4 a[3]=15 a[4]=9

Programata pe~ati:
Najgolemiot broj se javuva 2 pati.

95
Programski jazik C PISI

19. Da se napi{e programa vo programskiot jazik C so koja }e


se ispe~atat site kombinacii so i bez povtoruvawe na
zadadeni broevi od vtora klasa.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo
n
nizata

i,j broja~i vo nizata

#include<stdio.h>
int main()
{
int a[100],i,j,n;
printf("Vensete n=");
scanf("%d",&n);
printf("Vnesete gi broevite: ");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Kombinaciite bez povtoruvanje se :\n");
for(i=0;i<n;i++)
{
printf("\n");
for(j=i;j<n;j++)
if(a[i]!=a[j])
printf("%d%d ",a[i],a[j]);
}
printf("\n");
printf("\n");
printf("Kombinaciite so povtoruvanje se :\n");
for(i=0;i<n;i++)
{
printf("\n");
for(j=i;j<n;j++)
printf("%d%d ",a[i],a[j]);

96
Programski jazik C PISI

}
printf("\n");
printf("\n");

return 0;
}
_______________________________________________________
Test primer:

VLEZ:

Vnesete n=5
Vnesete gi broevite: 2 5 4 9 8

Programata pe~ati:

Kombinaciite bez povtoruvawe se :

25 24 29 28
54 59 58
49 48
98

Kombinaciite so povtoruvawe se :

22 25 24 29 28
55 54 59 58
44 49 48
99 98
88

97
Programski jazik C PISI

20. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~atat site varijacii so i bez povtoruvawe na zadadeni
broevi od vtora klasa.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo
n
nizata

i,j broja~ vo nizata

#include<stdio.h>
int main()
{
int a[100],i,j,n;
printf("Vensete n=");
scanf("%d",&n);
printf("Vnesete gi broevite: ");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Varijaciite bez povtoruvanje se :\n");
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
if(a[i]!=a[j])
printf("%d%d ",a[i],a[j]);
}
printf("\n");
printf("\n");
printf("Varijaciite so povtoruvanje se :\n");
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("%d%d ",a[i],a[j]);

98
Programski jazik C PISI

}
printf("\n");
printf("\n");

return 0;
}
_______________________________________________________
Test primer:

VLEZ:

Vnesete n=5
Vnesete gi broevite: 5 9 4 8 3

Programata pe~ati:

Varijaciite bez povtoruvawe se :

59 54 58 53
95 94 98 93
45 49 48 43
85 89 84 83
35 39 34 38

Varijaciite so povtoruvawe se :

55 59 54 58 53
95 99 94 98 93
45 49 44 48 43
85 89 84 88 83
35 39 34 38 33

99
Programski jazik C PISI

21. Na ispit po informatika u~estvuvale n<100 kandidati.


Minimalniot broj na poeni za upis e min. Da se napi{e
programa vo programskiot jazik C so koja }e se opredeli brojot
na kandidatite koi steknale pravo na upis i ke go presmeta
nivniot sreden uspeh poka`an na ispitot.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi

n broj na kandidati
broj na kandidati koi
br
i broja~ vo nizata polo`ile

najmal broj poeni


min potrebni za
polo`uvawe
vkupen broj na poeni
vk na site studenti koi
polo`ile

#include<stdio.h>
int main()
{
int a[100],i,br=0,min,n,vk=0;;
printf("Kolku kandidati ucestvuvale? ");
scanf("%d",&n);
printf("Vnesete gi bodovite za sekoj kandidat.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Kolku e minimumot na poenite: ");
scanf("%d",&min);
for(i=0;i<n;i++)
{
if(a[i]>=min)

100
Programski jazik C PISI

{
printf("Polozil %d-tiot ucenik,\n",i+1);
br++;
vk+=a[i];
}
}
printf("Sredniot uspeh na ucenicite sto polozile na broj %d, e
%.1f\n",br,float(vk)/float(br));
return 0;
}
_______________________________________________________
Test primer:

VLEZ:

Kolku kandidati u~estvuvale? 8


Vnesete gi bodovite za sekoj kandidat.
a[0]=20 a[1]=14 a[2]=18 a[3]=10 a[4]=13 a[5]=19 a[6]=20 a[7]=11
Kolku e minimumot na poenite: 15

Programata pe~ati:
Polo`il 1-tiot u~enik,
Polo`il 3-tiot u~enik,
Polo`il 6-tiot u~enik,
Polo`il 7-tiot u~enik,
Sredniot uspeh na u~enicite {to polo`ile na broj 4, e 19.3
poeni.

101
Programski jazik C PISI

22. Da se napi{e programa vo programskiot jazik C so koja }e se


promenat znacite na elementite vo edna niza. Nizata se
vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo
n
nizata

i broja~ vo nizata

#include<stdio.h>
int main()
{
int a[100],i ,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
a[i]*=(-1);
printf("Novata niza e: ");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

102
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 5


Vnesete ja nizata.
a[0]=5 a[1]=-2 a[2]=3 a[3]=-4 a[4]=6

Programata pe~ati:
Novata niza e: -5 2 -3 4 -6

103
Programski jazik C PISI

23. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde na koja najmalata i najgolemata pozicija se pojavil
zadaden element vo edna niza. Nizata se vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
a[100] koja mo`e da ima
najgolema pozicija
najmnogu 100 elementi
maxPoz na koja se javuva
broj na elementi vo elementot x
n
nizata

i broja~ vo nizata najmala pozicija na


minPoz koja se javuva
vrednost na elementot elementot x
x
koja se bara

#include<stdio.h>
int main()
{
int a[100],i,n,x,maxPoz,minPoz;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Koj element se bara:");
scanf("%d",&x);
maxPoz=-1;
minPoz=-1;
for(i=0;i<n;i++)
{
if(a[i]==x)
maxPoz=i;
}
i=0;
while(minPoz==-1 && i<n)
{

104
Programski jazik C PISI

if(a[i]==x)
minPoz=i;
i++;
}
if(minPoz!=-1 || maxPoz!=-1)
printf("Elementot se pojavuva na minimalna pozicija %d i
na maksimalna pozicija %d.\n",minPoz+1,maxPoz+1);
else
printf("Elementot ne se pojavuva.\n");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 8


Vnesete ja nizata:
a[0]=15 a[1]=4 a[2]=-10 a[3]=15 a[4]=68 a[5]=23 a[6]=15 a[7]=8
Koj element se bara:15

Programata pe~ati:
Elementot se pojavuva na minimalna pozicija 1 i na
maksimalna pozicija 7.

105
Programski jazik C PISI

24. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta n-tiot (n<100) element od nizata 0 1 3 6 10 ...

Re{enie:
Vlezni promenlivi Izlezni promenlivi
broj na elementi vo
n
nizata

i broja~ vo nizata niza od celi broevi


koja mo`e da ima
a[100]
najmnogu 100
ps parcijalna suma elementi

vkupna suma koja go


s
dava n-iot element

#include<stdio.h>
int main()
{
int a[100],n,i,s=0,ps=0;
printf("Vnesete n=");
scanf("%d",&n);
for(i=0;i<n;i++)
{
ps=ps+i;
s=s+ps;
a[i]=ps;
}
printf("%d-tiot element vo nizata e: %d\n",n,a[n-1]);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete n=26

Programata pe~ati:
26-tiot element vo nizata e: 325

106
Programski jazik C PISI

25. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde najgolemata razlika na dva sosedni elementi od niza
koja se vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
a[100] koja mo`e da ima
najmnogu 100 elementi
broj na elementi vo
n razlika pome|u dva
nizata
raz sosedni elementi
vo nizata
i broja~ vo nizata

pomo{na promenliva
pom vo koja se pomni
razlikata

#include<stdio.h>
#include<math.h>
int main()
{
int i,n;
float a[100],raz,pom;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%f",&a[i]);
}
raz=fabs(a[1]-a[0]);
for(i=2;i<n;i++)
{
pom=fabs(a[i]-a[i-1]);
if(pom>raz)
raz=pom;
}
printf("Najgolemata razlika na dva sosedni elementi vo nizata e
%.2f\n",raz);

107
Programski jazik C PISI

return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=12 a[1]=5 a[2]=59 a[3]=60 a[4]=72 a[5]=12

Programata pe~ati:
Najgolemata razlika na dva sosedni elementi vo nizata e 60.00

108
Programski jazik C PISI

26. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta najmaliot delitel razli~en od 1 i vkupniot broj na
deliteli na priroden broj koj se vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n proizvolen broj niza od celi broevi
koja mo`e da ima
a[100]
i broja~ najmnogu 100
elementi

j deliteli na brojot n
broj na deliteli na
br
vrednost na elementot brojot n
x
koja se bara

#include<stdio.h>
int main()
{
int n,br=0,j=2,a[100],i=0;
printf("Vnesete priroden broj:");
scanf("%d",&n);
while(j<=n/2)
{
if(n%j==0)
{
a[i]=j;
br++;
i++;
}
j++;
}
printf("Najmal delitel e %d, a vkupno gi ima %d.\n",a[0],br);
return 0;
}

109
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete priroden broj:48

Programata pe~ati:
Najmal delitel e 2, a vkupno gi ima 8.

110
Programski jazik C PISI

27. Da se napi{e programa vo programskiot jazik C so koja }e se


kopiraat neparnite elementi od edna niza vo nova i taa }e se
ispe~ati. Nizata se vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
a[100] koja mo`e da ima
najmnogu 100 elementi niza od celi broevi
broj na elementi vo koja mo`e da ima
n b[100]
nizata najmnogu 100
elementi
i,j broja~i vo nizata

#include<stdio.h>
int main()
{
int a[100],b[100],i,j,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
j=0;
for(i=0;i<n;i++)
{
if(a[i]%2!=0)
{
b[j]=a[i];
j++;
}
}
printf("Novata niza e: ");
for(i=0;i<j;i++)
printf("%d ",b[i]);
printf("\n");
return 0;
}

111
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=12 a[1]=546 a[2]=15 a[3]=225 a[4]=5 a[5]=97

Programata pe~ati:
Novata niza e: 15 225 5 97

112
Programski jazik C PISI

28. Da se napi{e programa vo programskiot jazik C so koja }e se


podredi edna niza vo neopa|a~ki redosled.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi koja
a[100] mo`e da ima najmnogu
100 elementi
broj na elementi vo
n
nizata

i,j broja~i vo nizata

pomo{na promenliva vo
p koja se ~uvaat
elementite za smena
#include<stdio.h>
int main()
{
int a[100],i,j,n,p;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
for(j=0;j<n-i-1;j++)
if(a[j]>=a[j+1])
{
p=a[j];
a[j]=a[j+1];
a[j+1]=p;
}
printf("Novata niza e:");
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}

113
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=15 a[1]=6 a[2]=89 a[3]=15 a[4]=2 a[5]=46

Programata pe~ati:
Novata niza e: 2 6 15 15 46 89

114
Programski jazik C PISI

29. Da se napi{e programa vo programskiot jazik C so koja }e se


soberat dve nizi. (Elementite na novodobienata niza se
dobivaat kako zbir na soodvetnite elementi od dadenite nizi
t.e. c[i]=a[i]+b[i]).
Re{enie:
Vlezni promenlivi Izlezni promenlivi
nizi od celi broevi
a[100], koi mo`e da imaat
b[100] najmnogu 100
elementi niza od celi broevi
koja mo`e da ima
broj na elementi vo c[100]
n najmnogu 100
nizite elementi

i broja~i vo nizite

#include<stdio.h>
int main()
{
int a[100],b[100],c[100],i,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja prvata niza.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Vnesete ja vtorata niza.\n");
for(i=0;i<n;i++)
{
printf("b[%d]=",i);
scanf("%d",&b[i]);
}
printf("Rezultantnata niza e:\n");
for(i=0;i<n;i++)
{
c[i]=a[i]+b[i];
printf("c[%d]=%d \n",i,c[i]);
}
return 0;
}

115
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:
Kolku elementi da ima nizata? 5
Vnesete ja prvata niza.
a[0]=15 a[1]=20 a[2]=5 a[3]=8 a[4]=64
Vnesete ja vtorata niza.
b[0]=70 b[1]=23 b[2]=58 b[3]=14 b[4]=3

Programata pe~ati:
Rezultantnata niza e:
c[0]=85 c[1]=43 c[2]=63 c[3]=22 c[4]=67

116
Programski jazik C PISI

30. Da se napi{e programa vo programskiot jazik C so koja }e se


pomno`at dve nizi. (Elementite na novodobienata niza se
dobivaat kako proizvod na soodvetnite elementi od dadenite
nizi t.e. c[i]=a[i]⋅b[i]).
Re{enie:
Vlezni promenlivi Izlezni promenlivi
nizi od celi broevi
a[100], koi mo`e da imaat
b[100] najmnogu 100
elementi niza od celi broevi
koja mo`e da ima
broj na elementi vo c[100]
n najmnogu 100
nizite elementi

i broja~i vo nizite

#include<stdio.h>
int main()
{
int a[100],b[100],c[100],i,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja prvata niza.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Vnesete ja vtorata niza.\n");
for(i=0;i<n;i++)
{
printf("b[%d]=",i);
scanf("%d",&b[i]);
}
printf("Rezultantnata niza e:\n");
for(i=0;i<n;i++)
{
c[i]=a[i]*b[i];
printf("c[%d]=%d \n",i,c[i]);
}
return 0;
}

117
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:
Kolku elementi da ima nizata? 5
Vnesete ja prvata niza.
a[0]=5 a[1]=9 a[2]=12 a[3]=24 a[4]=10
Vnesete ja vtorata niza.
b[0]=23 b[1]=48 b[2]=5 b[3]=5 b[4]=14

Programata pe~ati:
Rezultantnata niza e:
c[0]=115 c[1]=432 c[2]=60 c[3]=120 c[4]=140

118
Programski jazik C PISI

31. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde n-tiot po golemina prost priroden broj.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
red na prostiot na
m
broj
prima vrednost 1 ako
prost brojot e prost ili 0 niza od celi broevi
ako ne e prosr broj koja mo`e da ima
b[100]
najmnogu 100
i,k broja~i elementi

j deliteli na brojot

#include<stdio.h>
int main()
{
int b[100],m,i,j,k=0,prost;
printf("Koj po red prost priroden broj se bara? ");
scanf("%d",&m);
for(i=2;i<700;i++)
{
prost=1;
j=2;
while(prost && j<=(i/2))
{
if(i%j==0)
prost=0;
j++;
}
if (prost)
{
b[k]=i;
k++;
}
}
printf("Brojot e: %d\n",b[m-1]);
return 0;
}

119
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Koj po red prost priroden broj se bara? 15

Programata pe~ati:
Brojot e: 47

120
Programski jazik C PISI

32. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat pozitivnite elementi od niza i }e se ispe~ati
nivnite kvadratni koreni. Nizata se vnesuva od tastatura.

Vlezni promenlivi Izlezni promenlivi


niza od celi broevi
koja mo`e da ima
a[100],
najmnogu 100
elementi
broj na elementi vo
n
nizata

i broja~ vo nizata

#include<stdio.h>
#include<math.h>
int main()
{
int a[100],i,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
if(a[i]>0)
printf("%d, a korenot iznesuva: %.2f.\n",a[i],
sqrt(a[i]));
return 0;
}

121
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 5


Vnesete ja nizata.
a[0]=12
a[1]=225
a[2]=-55
a[3]=69
a[4]=-5

Programata pe~ati:
12, a korenot iznesuva: 3.46.
225, a korenot iznesuva: 15.00.
69, a korenot iznesuva: 8.31.

122
Programski jazik C PISI

33. Da se napi{e programa vo programskiot jazik C so koja }e


se podredi odreden del od niza vo raste~ki redosled.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo
n
nizata

i,j broja~i vo nizata

po~etok na podnizata
x
za podreduvawe
kraj na podnizata za
y
podreduvawe
pomo{na promenliva
vo koja se pomnat
pom
elementite od
nizata

#include<stdio.h>
int main()
{
int a[100],i,j,n,x,y,pom;
printf("Kolku elementi da ima nizata:");
scanf("%d",&n);
printf("Vnesete ja nizata: \n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Vnesete pocetok i kraj na podnizata sto treba da se
podredi:");
scanf("%d %d",&x,&y);
for(i=x;i<y;i++)
for(j=i+1;j<=y;j++)

123
Programski jazik C PISI

if(a[j]<a[i])
{
pom=a[j];
a[j]=a[i];
a[i]=pom;
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata: 6


Vnesete ja nizata:
a[0]=5 a[1]=1 a[2]=8 a[3]=4 a[4]=10 a[5]=2
Vnesete po~etok i kraj na podnizata {to treba da se podredi:
14

Programata pe~ati:
5 1 4 8 10 2

124
Programski jazik C PISI

34. Da se napi{e programa vo programskiot jazik C so koja }e


se pronajde ostatokot koj se dobiva pri delewe na elementite
od dadena niza so 3.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo
n
nizata

i broja~i vo nizata

#include<stdio.h>
int main()
{
int a[100],i,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
printf("Brojot %d ima ostatok pri delenje so 3 ->
%d.\n",a[i],a[i]%3);
return 0;
}

125
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 5


Vnesete ja nizata.
a[0]=12
a[1]=14
a[2]=20
a[3]=22
a[4]=25

Programata pe~ati:
Brojot 12 ima ostatok pri delewe so 3 -> 0.
Brojot 14 ima ostatok pri delewe so 3 -> 2.
Brojot 20 ima ostatok pri delewe so 3 -> 2.
Brojot 22 ima ostatok pri delewe so 3 -> 1.
Brojot 25 ima ostatok pri delewe so 3 -> 1.

126
Programski jazik C PISI

35. Da se napi{e programa vo programskiot jazik C so koja }e se


preuredi dadena niza taka {to }e ostanat samo parnite
elementi vo nea.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo
n
nizata

i broja~ vo nizata

broj na elementi vo
j
novata niza

#include<stdio.h>
int main()
{
int a[100],n,i,j;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
j=0;
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
if(a[i]%2==0)
{
a[j]=a[i];
j++;
}
}
printf("Novata niza e: ");
for(i=0;i<j;i++)

127
Programski jazik C PISI

printf("%d ",a[i]);
printf("\n");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=15
a[1]=50
a[2]=12
a[3]=4
a[4]=9
a[5]=22

Programata pe~ati:
Novata niza e: 50 12 4 22

128
Programski jazik C PISI

36. Da se napi{e programa vo programskiot jazik C so koja }e se


podredat tri broja po golemina.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od 3 realni
a[3]
broevi
pomo{na promenliva
vo koja se ~uvaat
pom
elementite od
nizata a

i,j broja~i

#include<stdio.h>
int main()
{
float a[3],pom;
int i,j;
printf("Vnesete gi trite broja:");
for(i=0;i<3;i++)
scanf("%f",&a[i]);
for(i=0;i<3;i++)
for(j=0;j<3-i-1;j++)
if(a[j]>a[j+1])
{
pom=a[j];
a[j]=a[j+1];
a[j+1]=pom;
}
printf("Podredeni se: ");
for(i=0;i<3;i++)
printf("%.1f ",a[i]);
printf("\n");
return 0;
}

129
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete gi trite broja:120 45 39

Programata pe~ati:
Podredeni se: 39.0 45.0 120.0

130
Programski jazik C PISI

37. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta aritmeti~kata sredina na elementite od nizata, a
potoa da se isfrlat elementite pomali od taa vrednost.
(Aritmeti~kata sredina se presmetuva spored formulata
a1 + a 2 + L + a n
).
n

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od realni broevi
a[100] koja mo`e da ima
najmnogu 100 elementi
broj na elementi vo
n
nizata niza od realni
broevi koja mo`e da
broj na elementi vo b[100]
j ima najmnogu 100
izleznata niza
elementi
i broja~ vo nizite

aritmeti~ka sredina
as
na elementite od niza

#include<stdio.h>
int main()
{
int i,j=0,n;
float as=0.0,a[100],b[100];
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%f",&a[i]);
}
for(i=0;i<n;i++)
as+=a[i];
as=as/float(n);
for(i=0;i<n;i++)
{

131
Programski jazik C PISI

if(a[i]>as)
{
b[j]=a[i];
j++;
}
}
printf("Novodobienata niza e: ");
for(i=0;i<j;i++)
printf("%.2f ",b[i]);
printf("\n");
return 0;
}
_______________________________________________________
Test primer:

VLEZ:
Kolku elementi da ima nizata? 5
Vnesete ja nizata.
a[0]=12
a[1]=60
a[2]=-18
a[3]=34
a[4]=27

Programata pe~ati:
Novodobienata niza e: 60.00 34.00 27.00

132
Programski jazik C PISI

38. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde na koja pozicija se pojavuva prviot element od dadena
podniza vo dadena niza. Nizite se vnesuvaat od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
nizi od realni broevi
a[100]
koi mo`e da imaat
b[100]
najmnogu 100 elementi
broj na elementi vo
n
prvata niza

broj na elementi vo
m
vtorata niza

i broja~ vo nizite

#include<stdio.h>
int main()
{
int a[100],b[100],i,n,m;
printf("Kolku elementi da ima prvata niza? ");
scanf("%d",&n);
printf("Vnesete ja prvata niza:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Kolku elementi da ima vtorata niza? ");
scanf("%d",&m);
printf("Vnesete ja vtorata niza:\n");
for(i=0;i<m;i++)
{
printf("b[%d]=",i);
scanf("%d",&b[i]);
}
for(i=0;i<n;i++)

if(a[i]==b[0])

133
Programski jazik C PISI

printf("Elementot se pojavuva na %d-ta


pozicija.\n",i+1);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima prvata niza? 5


Vnesete ja prvata niza:
a[0]=64 a[1]=24 a[2]=89 a[3]=15 a[4]=34
Kolku elementi da ima vtorata niza? 3
Vnesete ja vtorata niza:
b[0]=15 b[1]=2 b[2]=39

Programata pe~ati:

Elementot 5 se pojavuva na 4-ta pozicija.

134
Programski jazik C PISI

39. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta kolku pati se promenal znakot na sosednite
elementi vo dadena niza. Nizata se vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
a[100] koja mo`e da ima
najmnogu 100 elementi broj na promeni na
broj na elementi vo znacite pome|u dva
n br
nizata sosedni elementi vo
nizata
i broja~ vo nizata

#include<stdio.h>
int main()
{
int a[100],i,br=0,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=1;i<n;i++)
if(a[i]*a[i-1]<0)
br++;

printf("Promeni na znacite bo nizata se na broj: %d\n",br);


return 0;
}

135
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=5
a[1]=-4
a[2]=-2
a[3]=4
a[4]=3
a[5]=-10

Programata pe~ati:
Promeni na znacite vo nizata se na broj: 3

136
Programski jazik C PISI

40. Da se napi{e programa vo programskiot jazik C so koja }e


se izbrojat i prika`at site negativni elementi od dadena
niza. Nizata se vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
a[100] koja mo`e da ima
najmnogu 100 elementi
broj na elementi vo broj na negativni
n br
nizata elementi vo nizata

i broja~i vo nizite

#include<stdio.h>
int main()
{
int a[100],i,n,br=0;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
if(a[i]<0)
{
br++;
printf("%d ",a[i]);
}
printf("\nNivniot broj e %d.\n",br);
return 0;
}

137
Programski jazik C PISI

_______________________________________________________
Test primer:
VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata:
a[0]=15
a[1]=-64
a[2]=28
a[3]=-89
a[4]=-1
a[5]=55

Programata pe~ati:

-64 -89 -1
Nivniot broj e 3.

138
Programski jazik C PISI

41. Da se napi{e programa vo programskiot jazik C so koja }e


se smenat mestata na najmaliot i najgolemiot element od edna
niza. Nizata se vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo
n
nizata

i broja~ vo nizata
element so najmala
min
vrednost vo nizata
element so najgolema
max
vrednost vo nizata
pozicija na elemenot
iMin so najmala vrednost
vo nizata
pozicija na
elementot so
iMax
najgolema vrednost
vo nizata
pomo{na promenliva
pom vo koja se pomni
element vo nizata

#include<stdio.h>
int main()
{
int a[100],i,iMin,iMax,n,min,max,pom;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}

139
Programski jazik C PISI

min=a[0];
max=a[0];
iMin=0;
iMax=0;
for(i=0;i<n;i++)
{
if(a[i]<min)
{
min=a[i];
iMin=i;
}
if(a[i]>max)
{
max=a[i];
iMax=i;
}
}
pom=a[iMin];
a[iMin]=a[iMax];
a[iMax]=pom;
printf("Novata niza e: ");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
_______________________________________________________
Test primer:
VLEZ:
Kolku elementi da ima nizata? 8
Vnesete ja nizata:
a[0]=48
a[1]=-10
a[2]=58
a[3]=79
a[4]=483
a[5]=42
a[6]=15
a[7]=-23

Programata pe~ati:
Novata niza e: 48 -10 58 79 -23 42 15 483

140
Programski jazik C PISI

42. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta zbirot i proizvodot na elementite od edno-
dimenzionalno pole.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100] s suma (zbir)
najmnogu 100
elementi
broj na elementi vo
n
nizata p proizvod
i broja~ vo nizata

#include<stdio.h>
int main()
{
int a[100],s=0,p=1,i,n;
printf("Kolku elementi da ima poleto? = ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
s+=a[i];
p*=a[i];
}
printf("Zbirot e %d, a proizvodot %d.\n",s,p);
return 0;
}

141
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima poleto? = 6


a[0]=15
a[1]=-5
a[2]=50
a[3]=6
a[4]=-10
a[5]=12

Programata pe~ati:

Zbirot e 68, a proizvodot 2700000.

142
Programski jazik C PISI

43. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta sumata na kvadratite na elementite od niza. Nizata
se vnesuva od tastaura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi s suma (zbir)
broj na elementi vo
n
nizata
i broja~ vo nizata

#include<stdio.h>
int main()
{
int a[100],i,n,s=0;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
s+=a[i]*a[i];
printf("Sumata kvadratite na elementite od nizata e %d.\n",s);
return 0;
}

143
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 5


Vnesete ja nizata:
a[0]=5
a[1]=15
a[2]=12
a[3]=20
a[4]=35

Programata pe~ati:

Sumata na kvadratite na elementite od nizata e 2019.

144
Programski jazik C PISI

44. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta zbirot od proizvodot na soodvetnite ~lenovi od dve
nizi.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
nizi od celi broevi
a[100] koi mo`e da imaat
b[100] najmnogu 100
elementi
broj na elementi vo s suma (zbir)
n
nizite
i broja~ vo nizata
p proizvod

#include<stdio.h>
int main()
{
int a[100],b[100],n,i,s=0,p;
printf("Kolku elementi da imaat nizite? ");
scanf("%d",&n);
printf("Vnesete ja prvata niza.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Vnesete ja vtorata niza.\n");
for(i=0;i<n;i++)
{
printf("b[%d]=",i);
scanf("%d",&b[i]);
}
for(i=0;i<n;i++)
{
p=a[i]*b[i];
s+=p;
}
printf("Rezultatot e: %d.\n",s);
return 0;
}

145
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:
Kolku elementi da imaat nizite? 6
Vnesete ja prvata niza.
a[0]=10 a[1]=8 a[2]=19 a[3]=40 a[4]=35 a[5]=49
Vnesete ja vtorata niza.
b[0]=15 b[1]=0 b[2]=-10 b[3]=5 b[4]=-9 b[5]=44

Programata pe~ati:

Rezultatot e: 2001.

146
Programski jazik C PISI

45. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta sumata na sekoi dva sosedni elementi od edna niza,
taka {to sekoj nov element da e zbir na sosednite dva se
dodeka ne se dobie samo eden element.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo
n
nizata
i,j broja~i vo nizata
k kraj na intervalot
#include<stdio.h>
int main()
{
int a[100],i,j,n,k;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
k=n-1;
for(j=1;j<=k;j++)
{
for(i=1;i<n;i++)
{
a[i-1]=a[i]+a[i-1];
printf("%d ",a[i-1]);
}
n--;
printf("\n");
}
return 0;
}

147
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 5


Vnesete ja nizata.
a[0]=15 a[1]=20 a[2]=22 a[3]=40 a[4]=-38 35 42 62 2

Programata pe~ati:

77 104 64
181 168
349

148
Programski jazik C PISI

46. Da se napi{e programa vo programskiot jazik C so koja za


dadena niza }e se presmeta vrednosta na funkcijata
1 n 2
F= ⋅ ∑ xi kade {to xi gi pretstavuva ~lenovite na nizata.
n i =1

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi
broevi koja mo`e
a[50]
da ima najmnogu 50
elementi
broj na elementi vo F vrednost na funkcijata
n
nizata
j broja~
suma zbir
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,a[50];
float suma=0,F;
do
{
printf("Vnesete go brojot na clenovi na nizata:\t");
scanf("%d",&n);
}
while ((n<0) || (n>50));
for (i=1;i<=n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for (i=1;i<=n;i++)
suma+=a[i]*a[i];
F=sqrt(suma/float (n));
printf("\n\nVrednosta na funkcijata iznesuva %8.3f.\n\n",F);
system("pause");
return 0;
}

149
Programski jazik C PISI

_______________________________________________________
Test primer

VLEZ:

Vnesete go brojot na ~lenovi na nizata: 6


a[1]=3
a[2]=5
a[3]=8
a[4]=2
a[5]=7
a[6]=11

Vrednosta na funkcijata iznesuva 6.733

150
Programski jazik C PISI

47. Da se napi{e programa vo programskiot jazik C so koja }e


se pronajde onaa podniza vo nizata broevi [ai ]n ~ij zbir na
elementi e najblizok do vrednosta v koja se vnesuva preku
tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo
n
nizata
j broja~ vo nizata min najmala vrednost

v vrednost koja se bara


broj na ~lenovi vo
brclen
podnizata
brojac broja~ vo podnizata
pozicija od kade
poz
zapo~nuva podnizata
pozicija za zbir na elementite vo
indeks suma
izleznata podniza podnizata
razlika pome|u v i
razlika
suma

#include<stdio.h>
int main()
{
int i,n,v,poz,brojac,brclen;
int razlika,suma,min,indeks,a[100];
do
{
printf("Vnesete go brojot na clenovi na nizata (n<100):\t");
scanf("%d",&n);
}
while ((n<0) && (n>100));
printf("\n\n");
for (i=1;i<=n;i++)
{

151
Programski jazik C PISI

do
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
while (a[i]<0);
}
do
{
printf("\n\nVnesete ja vrednosta na brojot v(v>0):\t");
scanf("%d",&v);
}
while (v<0);
min=v;
for (i=1;i<=n;i++)
{
poz=i;
suma=0;
brojac=0;
while ((suma<=v) && (poz+brojac<=n))
{
suma+=a[poz+brojac];
brojac++;
}
razlika=v-suma+a[poz+brojac-1];
if (min>=razlika)
{
min=razlika;
indeks=poz;
brclen=brojac-1;
}
}
printf("\n\nDo vrednosta %d najbliska e sumata %d sostavena od
podnizata: ",v,v-min);
for (i=indeks;i<=indeks+brclen-1;i++)
printf("%d, ",a[i]);
printf("\n\n");
system("pause");
return 0;
}

152
Programski jazik C PISI

_______________________________________________________
Test primer

VLEZ:

Vnesete go brojot na ~lenovi na nizata (n<100): 6


a[1]=8
a[2]=6
a[3]=5
a[4]=4
a[5]=3
a[6]=2

Vnesete ja vrednosta na brojot v (v>0) 25

Do vrednosta 25 najbliska e sumata 23 sostavena od podnizata


8, 6, 5, 4

153
Programski jazik C PISI

48. Da se napi{e programa vo programskiot jazik C so koja od n


to~ki vo ramnina }e se ispe~ati onaa to~ka ~ij zbir na
rastojanija do ostanatite to~ki ima najgolema vrednost.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
nizi od celi broevi
vo koi se ~uvaat
xk[50] koordinatite na
yk[50] to~kite koi mo`e da
imaat najmnogu 50
elementi
niza od realni pozicija na to~kata {to
broevi koja mo`e da poz
go ispolnuva uslovot
ima najmnogu 50
d[50] elementi i vo nea se
~uvaat rastojanijata
na soodvetnata to~ka
do ostanatite to~ki
max najgolemo rastojanie

#include<stdio.h>
#include<math.h>
int main()
{
int xk[50],yk[50],i,n,j,poz;
float d[50],max;
do
{
printf("Vneste kolku tocki da ima vo ramninata (n<50):\t");
scanf("%d",&n);
}
while ((n<0) || (n>50));
for (i=1;i<=n;i++)
{
printf("Vnesete ja x koordinatata na %d-ta tocka:\t",i);
scanf("%d",&xk[i]);
printf("Vnesete ja y koordinatata na %d-ta tocka:\t",i);
scanf("%d",&yk[i]);
}
for (i=1;i<=n;i++)

154
Programski jazik C PISI

{
d[i]=0;
for (j=1;j<=n;j++)
d[i]+=sqrt((xk[i]-xk[j])*(xk[i]-xk[j])+(yk[i]-yk[j])*(yk[i]-
yk[j]));
}
max=d[1];
poz=1;
for (i=2;i<=n;i++)
{
if (max<d[i])
{
max=d[i];
poz=i;
}
}
printf("\n\nOd site tocki vo ramninata najmalo rastojanie do
ostanatite tocki ima");
printf("\ntockata so x koordinata %d i y koordinata %d i toa iznesuva
%6.2f.\n\n\n",xk[poz],yk[poz],max);
system("pause");
return 0;
}

155
Programski jazik C PISI

_______________________________________________________
Test primer

VLEZ:

Vnesete kolku to~ki da ima vo ramninata (n<50): 8

Vnesete ja x koordinatata na 1-ta to~ka: 5


Vnesete ja y koordinatata na 1-ta to~ka: 3
Vnesete ja x koordinatata na 2-ta to~ka: 8
Vnesete ja y koordinatata na 2-ta to~ka: -5
Vnesete ja x koordinatata na 3-ta to~ka: -4
Vnesete ja y koordinatata na 3-ta to~ka: 0
Vnesete ja x koordinatata na 4-ta to~ka: 8
Vnesete ja y koordinatata na 4-ta to~ka: -2
Vnesete ja x koordinatata na 5-ta to~ka: 1
Vnesete ja y koordinatata na 5-ta to~ka: 1
Vnesete ja x koordinatata na 6-ta to~ka: 2
Vnesete ja y koordinatata na 6-ta to~ka: -5
Vnesete ja x koordinatata na 7-ta to~ka:- -5
Vnesete ja y koordinatata na 7-ta to~ka: 4
Vnesete ja x koordinatata na 8-ta to~ka: 7
Vnesete ja y koordinatata na 8-ta to~ka: -1

Od site to~ki vo ramninata najmalo rastojanie do ostanatite


to~ki ima to~kata so x koordinata -5 i y koordinata -4 i toa
iznesuva 69.77.

156
Programski jazik C PISI

49. Da se napi{e programa vo programskiot jazik C so koja za


dadena niza A od N (N <100) realni broevi }e se preseta
aritmeti~kata sredina na elementite. (Aritmeti~ka sredina
a1 + a 2 + L + a n
se presmetuva spored formulata ).Potoa
n
nizata da se transformira taka {to }e se isfrlat elementite
pomali od taa vrednost i novodobienata niza da se ispe~ati
na ekran.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od realni
broevi koja mo`e
a[100]
da ima najmnogu 100 niza od realni broevi
elementi b[100] koja mo`e da ima
broj na elementi vo najmnogu 100 elementi
n
nizata
i broja~ vo nizata
broj na ~lenovi vo
brojac
izleznata niza aritmeti~ka sredina na
prosek
zbir na elementite elementite vo nizata
zbir
od nizata

#include<stdio.h>
int main()
{
int i,n,brojac=0;
float a[100],b[100],zbir=0,prosek;
do
{
printf("Vnesete kolku clenovi da ima vo nizata(n<100)\t");
scanf("%d",&n);
}
while ((n<0) || (n>100));
printf("\n");
for (i=1;i<=n;i++)
{
printf("a[%d]=",i);
scanf("%f",&a[i]);
}
for (i=1;i<=n;i++)

157
Programski jazik C PISI

zbir+=a[i];
prosek=zbir/float(n);
for (i=1;i<=n;i++)
{
if (a[i]>prosek)
{
brojac++;
b[brojac]=a[i];
}
}
printf("\n\nProsecnata vrednost na elementite vo nizata iznesuva
%4.2f",prosek);
printf("\n\nNovodobienata niza glasi: ");
for (i=1;i<=brojac;i++)
printf("%4.2f ",b[i]);
printf("\n\n\n");
system("pause");
return 0;
}
_______________________________________________________
Test primer

VLEZ:

Vnesete kolku ~lenovi da ima nizata(n<100) 8

a[1]=7
a[2]=3
a[3]=-2
a[4]=0
a[5]=6
a[6]=10
a[7]=-5
a[8]=4

Prose~nata vrednost na elementite vo nizata iznesuva 2.88

Novodobienata niza glasi 7.00, 3.00, 6.00, 10.00, 4.00

158
Programski jazik C PISI

50. Da se napi{e programa vo programskiot jazik C so koja za


dadena niza A od n elementi }e ja presmeta najgolemata
razlika me|u dva sosedni elementi od taa niza.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od realni
broevi koja mo`e
a[100] najgolema razlika me|u
da ima najmnogu 100 max
elementi dva sosedni elementi
broj na elementi vo
n
nizata
i broja~ vo nizata pozicija na prviot
razlika me|u dva poz element koj go
razlika zadovoluva uslovot
sosedni elementi

#include<stdio.h>
int main()
{
int i,n,poz;
float razlika,max,a[100];
do
{
printf("Vnesete go brojot na clenovi na nizata (n<100):\t");
scanf("%d",&n);
}
while ((n<0) && (n>100));
printf("\n\n");
for (i=1;i<=n;i++)
{
printf("a[%d]=",i);
scanf("%f",&a[i]);
}
max=a[2]-a[1];
for (i=2;i<n;i++)
{
razlika=a[i+1]-a[i];
if (max<=razlika)
{
max=razlika;
poz=i;

159
Programski jazik C PISI

}
}
printf("\n\nMaksimalna razlika koja iznesuva %4.2f e megu clenovite
a[%d] i a[%d]",max,poz,poz+1);
printf("\n\n");
system("pause");
return 0;
}
_______________________________________________________
Test primer

VLEZ:

Vnesete go brojot na ~lenovi na nizata(n<100) 7

a[1]=5
a[2]=-3
a[3]=0
a[4]=2
a[5]=-8
a[6]=7
a[7]=10

Maksimalnata razlika koja iznesuva 15.00 e me|u ~lenovite


a[5] i a[6].

160
Programski jazik C PISI

4. Matrici
1. Da se napi{e programa vo programskiot jazik C so koja }e se
soberat dve matrici. Matricite se vnesuvaat od tastatura.
(Zbir na dve matrici pretstavuva matrica kaj koja sekoj
element e zbir od soodvetnite elementi na dvete matrici t.e
c[i][j]=a[i][j]+b[i][j]).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrici od
realni broevi
a[100][100] koi mo`e da
b[100][100] imaat najmnogu matrica od
100 redovi i 100 realni broevi
koloni koja mo`e da
c[100][100]
broj na redovi vo ima najmnogu
m 100 redovi i
matricata
broj na koloni vo 100 koloni
n
matricata
broja~i vo
i,j
matricite

#include<stdio.h>
int main()
{
float a[100][100],b[100][100],c[100][100];
int i,j,n,m;
printf("Vnesete kolku redovi da ima prvata matrica=");
scanf("%d",&m);
printf("Vnesete kolku koloni da ima prvata matrica=");
scanf("%d",&n);
printf("Vnesete ja prvata matrica\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
}
printf("Vnesete ja vtorata matrica.\n");
for(i=0;i<m;i++)

161
Programski jazik C PISI

for(j=0;j<n;j++)
{
printf("b[%d][%d]=",i,j);
scanf("%f",&b[i][j]);
}
for(i=0;i<m;i++)
for(j=0;j<n;j++)
c[i][j]=a[i][j]+b[i][j];
printf("Rezultantnata matrica e:\n");
for(i=0;i<m;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("c[%d][%d]=%.2f ",i,j,c[i][j]);
}
printf("\n");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:
Vnesete kolku redovi da ima prvata matrica=3
Vnesete kolku koloni da ima prvata matrica=2
Vnesete ja prvata matrica.
a[0][0]=12
a[0][1]=15
a[1][0]=60
a[1][1]=33
a[2][0]=48
a[2][1]=-10
Vnesete ja vtorata matrica.
b[0][0]=22
b[0][1]=-15
b[1][0]=49
b[1][1]=64
b[2][0]=-28
b[2][1]=30

Programata pe~ati:
Rezultantnata matrica e:

162
Programski jazik C PISI

c[0][0]=34.00 c[0][1]=0.00
c[1][0]=109.00 c[1][1]=97.
c[2][0]=20.00 c[2][1]=20.00

163
Programski jazik C PISI

2. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta zbirot na elementite od glavnata i sporednata
dijagonala na edna matrica.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrica od realni
broevi koja mo`e da
a[100][100]
ima najmnogu 100
redovi i 100 koloni s suma (zbir)
broj na redovi i
n
koloni vo matricata
i,j broja~i vo matricata

#include<stdio.h>
int main()
{
int i,j,n;
float a[100][100],s=0;
printf("Vnesete borj na redovi=koloni=");
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(i==j)
s+=a[i][j];
if(i+j==n-1)
s+=a[i][j];
}
printf("Zbirot na elementite na glavnata i sporednata dojagonala
=%2.f\n",s);
return 0;
}

164
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete broj na redovi=koloni=3

a[0][0]=15
a[0][1]=-10
a[0][2]=20
a[1][0]=-33
a[1][1]=48
a[1][2]=28
a[2][0]=-18
a[2][1]=60
a[2][2]=-50

Programata pe~ati:

Zbirot na elementite na glavnata i sporednata dijagonala


=63.00

165
Programski jazik C PISI

3. Da se napi{e programa vo programskiot jazik C so koja }e se


promenat mestata na najmaliot i najgolemiot element vo edna
matrica.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrica od realni
broevi koja mo`e da ima
a[100][100]
najmnogu 100 redovi i
100 koloni
broj na redovi vo
n
matricata
broj na koloni vo
m
matricata
i,j broja~i vo matricite
element so najmala
min
vrednost
element so najgolema
max
vrednost
pomo{na promenliva
pom koja se upotrebuva pri
smena
redot vo koj se
iMax nao|aelementot so
najgolema vrednost
kolona vo koja se nao|a
jMax elementot so najgolema
vrednost
redot vo koj se nao|a
iMin elementot so najmala
vrednost
kolona vo koja se nao|a
jMin elementot so najmala
vrednost

#include<stdio.h>
int main()
{
float a[100][100];
int i,j,n,m,iMax,jMax,iMin,jMin;
float min,max,pom;
printf("Vnesete kolku redovi da ima matricata=");

166
Programski jazik C PISI

scanf("%d",&n);
printf("Vnesete kolku koloni da ima matricata=");
scanf("%d",&m);
printf("Vnesete ja matricata.\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
}
min=a[0][0];
iMin=0;
jMin=0;
max=a[0][0];
iMax=0;
jMax=0;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
iMax=i;
jMax=j;
}
if(a[i][j]<min)
{
min=a[i][j];
iMin=i;
jMin=j;
}
}
pom=a[iMax][jMax];
a[iMax][jMax]=a[iMin][jMin];
a[iMin][jMin]=pom;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
printf("a[%d][%d]=%.2f\n",i,j,a[i][j]);
return 0;
}

167
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete kolku redovi da ima matricata=3


Vnesete kolku koloni da ima matricata=3
Vnesete ja matricata.
a[0][0]=12
a[0][1]=22
a[0][2]=15
a[1][0]=-33
a[1][1]=102
a[1][2]=99
a[2][0]=87
a[2][1]=62
a[2][2]=-50

Programata pe~ati:

a[0][0]=12.00 a[0][1]=22.00 a[0][2]=15.00


a[1][0]=-33.00 a[1][1]=-50.00 a[1][2]=99.00
a[2][0]=87.00 a[2][1]=62.00 a[2][2]=102.00

168
Programski jazik C PISI

4 Da se napi{e programa vo programskiot jazik C so koja }e se


pomno`at dve matrici vneseni od tastatura. Mno`ewe na dve
matrici se vr{i so pomo{ na formulata:
n
c[i ][ j ] = ∑ a[i ][k ] ⋅ b[k ][ j ]
k =1

Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrici od
realni broevi
a[100][100] koi mo`e da
b[100][100] imaat najmnogu
100 redovi i 100 matrica od
koloni realni broevi
broj na redovi vo koja mo`e da ima
n c[100][100]
prvata matrica najmnogu 100
broj na koloni vo redovi i 100
m koloni
vtorata matrica
broj na koloni vo
p
vtorata matrica
broja~i vo
i,j,k
matricite

#include<stdio.h>
int main()
{
float a[100][100],b[100][100],c[100][100];
int i,j,n,m,k,p;
printf("Vnesete kolku redovi da ima prvata matrica=");
scanf("%d",&n);
printf("Vnesete kolku koloni da ima prvata matrica(==so redovi na
vtorata matrica)=");
scanf("%d",&m);
printf("Vnesete kolku koloni da ima vtorata matrica=");
scanf("%d",&p);
printf("Vnesete ja prvata matricata.\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);

169
Programski jazik C PISI

}
printf("Vnesete ja vtorata matricata.\n");
for(i=0;i<m;i++)
for(j=0;j<p;j++)
{
printf("b[%d][%d]=",i,j);
scanf("%f",&b[i][j]);
}

for(i=0;i<n;i++)
for(j=0;j<p;j++)
{
c[i][j]=0;
for(k=0;k<m;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}

printf("Rezultantnata matrica e:\n");


for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<p;j++)
printf("c[%d][%d]=%.2f ",i,j,c[i][j]);
}
printf("\n");
return 0;
}

170
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete kolku redovi da ima prvata matrica=3


Vnesete kolku koloni da ima prvata matrica(==so redovi na
vtorata matrica)=2
Vnesete kolku koloni da ima vtorata matrica=2
Vnesete ja prvata matricata.
a[0][0]=5
a[0][1]=6
a[1][0]=10
a[1][1]=-5
a[2][0]=9
a[2][1]=12
Vnesete ja vtorata matricata.
b[0][0]=15
b[0][1]=-10
b[1][0]=1
b[1][1]=5

Programata pe~ati:

Rezultantnata matrica e:

c[0][0]=81.00 c[0][1]=-20.00
c[1][0]=145.00 c[1][1]=-125.00
c[2][0]=147.00 c[2][1]=-30.00

171
Programski jazik C PISI

5. Da se napi{e programa vo programskiot jazik C so koja }e se


proveri dali matricata X = A ⋅ B + C e dolno triagolna.
Matricite A, B i C se kvadratni matrici od red n. ( Site
elementi nad glavnata dijagonala na dolnotriagolna matrica
se ednakvi na nula).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrici od celi
a[25][25] broevi koi mo`e
b[25][25] da imaat najmnogu
c[25][25] po 25 redovi i 25
koloni
broj na redovi i
n koloni vo matrica od celi
matricata broevi koja mo`e da
x[25][25]
broja~i vo ima najmnogu po 25
i,j,k redovi i 25 koloni
matricata
prima vrednost 1
ako matricata e
dolnotriagolna i
dtr
0 ako matricata
ne e
dolnotriagolna

#include<stdio.h>
int main()
{
int a[25][25],b[25][25],c[25][25],x[25][25];
int i,n,j,k,dtr=1;
do
{
printf("Vnesete ja dimenzijata na matricite (n<25)\t");
scanf("%d",&n);
}
while ((n<0) && (n>25));
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);

172
Programski jazik C PISI

}
}
printf("\n\n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
printf("b[%d][%d]=",i,j);
scanf("%d",&b[i][j]);
}
}
printf("\n\n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
printf("c[%d][%d]=",i,j);
scanf("%d",&c[i][j]);
}
}
for (i=1;i<=n;i++)
{
x[i][j]=0;
for (j=1;j<=n;j++)
{
for (k=1;k<=n;k++)
x[i][j]+=a[i][k]*b[k][j];
}
}
printf("\n\n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
x[i][j]+=c[i][j];
}
for (i=1;i<=n;i++)
{
for (j=i+1;j<=n;j++)
{
if (a[i][j]!=0)
{
dtr=0;

173
Programski jazik C PISI

break;
}
}
}
printf("\n\nMatricata:\n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
printf("%d ",x[i][j]);
}
printf("\n");
}
if (dtr)
printf("\n\n e dolnotriagolna.\n\n");
else
printf("\n\n ne e dolnotriagolna.\n\n");
system("pause");
return 0;
}

_______________________________________________________
Test primer

VLEZ:

Vnesete ja dimenzijata na matricite (n<25) 3

a[1][1]=1
a[1][2]=3
a[1][3]=0
a[2][1]=5
a[2][2]=-2
a[2][3]=4
a[3][1]=7
a[3][2]=6
a[3][3]=-3

b[1][1]=5
b[1][2]=-4
b[1][3]=3
b[2][1]=1

174
Programski jazik C PISI

b[2][2]=0
b[2][3]=7
b[3][1]=6
b[3][2]=4
b[3][3]=3

c[1][1]=-5
c[1][2]=4
c[1][3]=1
c[2][1]=2
c[2][2]=-3
c[2][3]=7
c[3][1]=8
c[3][2]=-6
c[3][3]=

Matricata:
3 0 25
49 -7 20
31 -46 63

ne e dolnotriagolna.

175
Programski jazik C PISI

6. Dadena e kvadratnata matrica A = aij [ ]mxn


. Da se napi{e
programa vo programskiot jazik C so koja }e se presmeta
 n n n 
vrednosta na funkcijata: f = ∏ ∏ aij + ∏ a ji  .
i =1  j =1 j =1 
Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrica od celi
broevi koja mo`e
a[25][25] da ima najmnogu
25 redovi i 25
koloni
broj na redovi i
n koloni vo
matricata vrednost na funkcija-
proizvod
broja~i vo ta f
i,j
matricata
proizvod na
proizvod1 elementite po
redovi
proizvod na
proizvod 2 elementite po
koloni

#include<stdio.h>
int main()
{
int a[25][25],proizvod=1,proizvod1,proizvod2,i,n,j;
do
{
printf("Vnesete ja dimenzijata na matricata (n<25)\t");
scanf("%d",&n);
}
while ((n<0) && (n>25));
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}

176
Programski jazik C PISI

}
for (i=1;i<=n;i++)
{
proizvod1=1;
proizvod2=1;
for (j=1;j<=n;j++)
{
proizvod1*=a[i][j];
proizvod2*=a[j][i];
}
proizvod*=(proizvod1+proizvod2);
}
printf("\n\n");
printf("\n\nVrednosta na funkcijata iznesuva %d.\n\n", proizvod);
system("pause");
return 0;
}

_______________________________________________________
Test primer

VLEZ:

Vnesete ja dimenzijata na matricata (n<25) 3


a[1]][1]=6
a[1][2]=5
a[1][3]=9
a[2][1]=-4
a[2][2]=3
a[2][3]=-1
a[3][1]=-7
a[3][2]=5
a[3][3]=-2

Vrednosta na funkcijata iznesuva 3353328

177
Programski jazik C PISI

7. Kvadratna matrica so ist broj redici i koloni se narekuva


simetri~na ako Aij=Aji za sekoe i ≠ j . Da se napi{e programa vo
programskiot jazik C so koja }e se proveri dali matricata Anxn
e simetri~na.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrica od celi
broevi koja mo`e
a[25][25] da ima najmnogu
25 redovi i 25
koloni
broj na redovi i
n koloni vo
matricata
broja~i vo
i,j
matricata
prima vrednost 1
ako matricata e
simetricna
simetr~na i 0 ako
ne e

#include<stdio.h>
int main()
{
int a[25][25],simetricna=1,i,n,j;
do
{
printf("Vnesete ja dimenzijata na matricata (n<25)\t");
scanf("%d",&n);
}
while ((n<0) && (n>25));
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
for (i=1;i<=n;i++)
{

178
Programski jazik C PISI

for (j=1;j<i;j++)
{
if (a[i][j]!=a[j][i])
{
simetricna=0;
break;
}
}
}
printf("\n\nMatricata:\n\n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
if (simetricna)
printf("\n\n e simetricna.\n\n");
else
printf("\n\n ne e simetricna.\n\n");
system("pause");
return 0;
}

179
Programski jazik C PISI

_______________________________________________________
Test primer

VLEZ:
Vnesete ja dimenzijata na matricata (n<25) 4
a[1][1]=1
a[1][2]=5
a[1][3]=8
a[1][4]=6
a[2][1]=5
a[2][2]=3
a[2][3]=0
a[2][4]=4
a[3][1]=8
a[3][2]=0
a[3][3]=7
a[3][4]=10
a[4][1]=6
a[4][2]=4
a[4][3]=10
a[4][4]=9

Matricata:

1 5 8 6
5 3 0 4
8 0 7 10
6 4 10 9

e simetri~na.

180
Programski jazik C PISI

8. Da se napi{e programa vo programskiot jazik C so koja


elementite na matricata Amxn ogledalno se preslikuvaat vo
odnos na horizontalata.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrica od celi
broevi koja mo`e
a[25][25]
da ima najmnogu 25
redovi i 25 koloni
broj na redovi i
n koloni vo
matricata
broja~i vo
i,j
matricata
pomo{na promen-
liva vo koja se
pom
pomnat elementite
od matricata

#include<stdio.h>
int main()
{
int a[25][25],i,n,j,pom;
do
{
printf("Vnesete ja dimenzijata na matricata (n<25)\t");
scanf("%d",&n);
}
while ((n<0) && (n>25));
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
printf("\n\n Matrica:\n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)

181
Programski jazik C PISI

printf("%d ",a[i][j]);
printf("\n");
}
printf("\n\n");
for (i=1;i<=n/2;i++)
{
for (j=1;j<=n;j++)
{
pom=a[i][j];
a[i][j]=a[n-i+1][j];
a[n-i+1][j]=pom;
}
}
printf("\n\nogledalno preslikana vo odnos na horizontalata
iznesuva:\n\n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n\n");
system("pause");
return 0;
}

182
Programski jazik C PISI

_______________________________________________________
Test primer

VLEZ:

Vnesete ja dimenzijata na matricata (n<25) 3

a[1][1]=5
a[1][2]=6
a[1][3]=3
a[2][1]=3
a[2][2]=1
a[2][3]=0
a[3][1]=7
a[3][2]=9
a[3][3]=10

Matricata:

5 6 3
3 1 0
7 9 10

ogledalno preslikana vo odnos na horizontalata iznesuva

7 9 10
3 1 0
5 6 3

183
Programski jazik C PISI

9. Da se napi{e programa vo programskiot jazik C so koja


elementite od dadena matrica }e se pomestat na sledniot
na~in:
1 2 3 9 1 2
 4 5 6 → 3 4 5 
   
7 8 9 6 7 8 
Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrica od celi
broevi koja mo`e da
a[10][10]
ima najmnogu 10
redovi i 10 koloni
niza od celi broevi
koja mo`e da ima
b[100]
najmnogu 100
elementi
broj na redovi i
n
koloni na matricata
i,j broja~i
brojac broja~ vo nizata
pomo{na promenliva
vo koja se pomnat
pom
el;ementite od
nizata

#include<stdio.h>
int main()
{
int i,j,n,pom,a[10][10],b[100],brojac=0;
do
{
printf("Vnesete ja dimenzijata na matricata (n<10);\t");
scanf("%d",&n);
}
while ((n<0) || (n>10));
printf("\n\n");
for (i=1;i<=n;i++)
{

184
Programski jazik C PISI

for (j=1;j<=n;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
brojac++;
b[brojac]=a[i][j];
}
}
printf("\n\nOrginalnata matrica \n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n\n\n");

pom=b[brojac];
for (i=brojac;i>=2;i--)
b[i]=b[i-1];
b[1]=pom;
brojac=0;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
brojac++;
a[i][j]=b[brojac];
}
}
printf("\n\ja dobiva slednata forma:\n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");

185
Programski jazik C PISI

}
printf("\n\n\n");
system("pause");
return 0;
}

_______________________________________________________
Test primer

VLEZ:

Vnesete ja dimenzijata na matricata (n<25) 3

a[1][1]=72
a[1][2]=53
a[1][3]=69
a[2][1]=94
a[2][2]=13
a[2][3]=7
a[3][1]=67
a[3][2]=23
a[3][3]=45

Orginalnata matrica:

72 53 69
94 13 7
67 23 45

ja dobiva slednata forma

45 72 53
69 94 13
7 67 23

186
Programski jazik C PISI

10. Dadena e kvadratna matrica A. Da se napi{e programa vo


programskiot jazik C so koja }e se presmeta zbirot na
elementite od, nad i pod glavnata dijagonala kako i od, pod i
nad sporednata dijagonala.
Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrica od celi zbir na elementite
broevi koja mo`e sgl od glavnata
a[25][25] da ima najmnogu dijagonala
25 redovi in 25 zbir na elementite
koloni ssp od eporednata
dijagonala
zbir na elementite
spg pod glavnata
broj na redovi i
dijagonala
n koloni vo
zbir na elementite
matricata
sng nad glavnata
dijagonala
zbir na elementite
sps pod sporednata
broja~i vo dijagonala
i,j
matricata zbir na elementite
sns nad sporednata
dijagonala

#include<stdio.h>
int main()
{
int i,j,n,sgl=0,ssp=0,spg=0;
int sng=0,sps=0,sns=0;
int a[25][25];
do
{
printf("Vnesete go redot na matricata\t");
scanf("%d",&n);
}
while ((n<0) || (n>25));
printf("\n\n");
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{

187
Programski jazik C PISI

printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
if (j==i)
sgl+=a[i][j];
else if(j<i)
spgl+=a[i][j];
else
sng+=a[i][j];
}
}
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
if (j==n-i+1)
ssp+=a[i][j];
else if (j<n-i+1)
sns+=a[i][j];
else
sps+=a[i][j];
}
}
printf("\n\nZbirot na elementite od glavnata dijagonala iznesuva
%d.",sgl);
printf("\nZbirot na elementite pod glavnata dijagonala iznesuva
%d.",spg);
printf("\nZbirot na elementite nad glavnata dijagonala iznesuva
%d.",sng);
printf("\n\nZbirot na elementite od sporednata dijagonala iznesuva
%d.",ssp);
printf("\nZbirot na elementite nad sporednata dijagonala iznesuva
%d.",sns);
printf("\nZbirot na elementite pod sporednata dijagonala iznesuva
%d.",sps);
printf("\n\n\n");
system("pause");

188
Programski jazik C PISI

return 0;
}
_______________________________________________________
Test primer

VLEZ:

Vnesete go redot na matricata 3

a[1][1]=10
a[1][2]=12
a[1][3]=4
a[2][1]=6
a[2][2]=13
a[2][3]=7
a[3][1]=8
a[3][2]=9
a[3][3]=15

Zbirot na elementite od glavnata dijagonala iznesuva 38


Zbirot na elementite pod glavnata dijagonala iznesuva 23
Zbirot na elementite nad glavnata dijagonala iznesuva 23

Zbirot na elementite od sporednata dijagonala iznesuva 25


Zbirot na elementite pod sporednata dijagonala iznesuva 28
Zbirot na elementite nad sporednata dijagonala iznesuva 31

189
Programski jazik C PISI

11. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde elementot so najgolema vrednost kako i negovata
pozicija vo matricata ANxM.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrica od celi
broevi koja mo`e
element so najgolema
a[25][25] da ima najmnogu max
vrednost
25 redovi in 25
koloni
red vo koj se nao|a
broj na redovi vo
m pozr elementot so najgole-
matricata
ma vrednost
broj na koloni vo kolona vo koja se
n
matricata pozk nao|a elementot so
i,j broja~i najgolema vrednost

#include<stdio.h>
int main()
{
int i,j,n,m,max,pozr,pozk,a[25][25];
do
{
printf("Vnesete go brojot na redovi na matricata (m<25):\t");
scanf("%d",&m);
printf("Vnesete go brojot na koloni na matricata (n<25):\t");
scanf("%d",&n);
}
while ((n<0) || (m<0) || (n>25) || (m>25));
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
max=a[1][1];
pozr=1;
pozk=1;

190
Programski jazik C PISI

for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
if (max<=a[i][j])
{
max=a[i][j];
pozr=i;
pozk=j;
}
}
}
printf("\n\nMaksimalna vrednost vo matricata ima elementot
a[%d][%d]=%d\n\n",pozr,pozk,max);
system("pause");
return 0;
}
_______________________________________________________
Test primer

VLEZ:

Vnesete go brojot na redovi na matricata (m<25) 4


Vnesete go brojot na koloni na matricata (n<25) 3

a[1][1]=1
a[1][2]=2
a[1][3]=8
a[2][1]=-5
a[2][2]=6
a[2][3]=7
a[3][1]=4
a[3][2]=-3
a[3][3]=12
a[4][1]=10
a[4][2]=7
a[4][3]=9

Maksimalna vrednost vo matricata ima elementot a[3][3]=12.

191
Programski jazik C PISI

12. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat najmalite elementi vo sekoja redica od matricata
ANxM, a potoa od niv da se najde najgolemiot element.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrica od celi
broevi koja mo`e
a[25][25] da ima najmnogu
25 redovi in 25 element so najgolema
koloni
vrednost od
niza od celi max
najmalite vrednosti
broevi koja mo`e po redovi
b[25]
da ima najmnogu
25 elementi
broj na redovi vo
m
matricata
broj na koloni vo
n
matricata
i,j broja~i pozicija na brojot koj
poz
elementi so se ~uva vo max
min najmala vrednost
po redovi

#include<stdio.h>
int main()
{
int i,j,n,m,min,poz,b[25],a[25][25],max;
do
{
printf("Vnesete go brojot na redovi na matricata (m<25):\t");
scanf("%d",&m);
printf("Vnesete go brojot na koloni na matricata (n<25):\t");
scanf("%d",&n);
}
while ((n<0) || (m<0) || (n>25) || (m>25));
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
printf("a[%d][%d]=",i,j);

192
Programski jazik C PISI

scanf("%d",&a[i][j]);
}
printf("\n");
}
for (i=1;i<=m;i++)
{
min=a[i][1];
for (j=1;j<=n;j++)
{
if (min>=a[i][j])
min=a[i][j];
}
b[i]=min;
}
max=b[1];
poz=1;
for (i=2;i<=m;i++)
{
if (max<=b[i])
{
max=b[i];
poz=i;
}
}
printf("\n\nNajgolema vrednost od najmalite vrednosti po redovi vo
matricata\n");
printf("ima elementot od %d-ta redica so vrednost %d\n\n",poz,max);
system("pause");
return 0;
}

193
Programski jazik C PISI

_______________________________________________________
Test primer

VLEZ:

Vnesete go brojot na redovi na matricata (m<25) 3


Vnesete go brojot na koloni na matricata (n<25) 2

a[1][1]=5
a[1][2]=6
a[2][1]=7
a[2][2]=1
a[3][1]=4
a[3][2]=3

Najgolema vrednost od najmalite vrednosti po redovi vo


matricata ima elementot od 1-ta redica so vrednost 5.

194
Programski jazik C PISI

13. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajde transponiranata matrica na matricata ANxM.
(Transponirana matrica se dobiva koga kaj matricata
redovite }e si gi promenat mestata so kolonite).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
matrica od celi
broevi koja mo`e
a[25][25] da ima najmnogu
25 redovi in 25
matrica od celi
koloni
broevi koja mo`e da
broj na redovi vo t[25][25]
m ima najmnogu 25
matricata redovi in 25 koloni
broj na koloni vo
n
matricata
broja~i vo
i,j
matricata

#include<stdio.h>
int main()
{
int i,j,n,m,t[25][25],a[25][25];
do
{
printf("Vnesete go brojot na redovi na matricata (m<25):\t");
scanf("%d",&m);
printf("Vnesete go brojot na koloni na matricata (n<25):\t");
scanf("%d",&n);
}
while ((n<0) || (m<0) || (n>25) || (m>25));
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
printf("\n");
}
for (j=1;j<=m;j++)
{

195
Programski jazik C PISI

for (i=1;i<=n;i++)
t[i][j]=a[j][i];
}
printf("\n\nTransponiranata matrica na matricata:\n");
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n\n");
printf("\n\ne slednata:\n");
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
printf("%d ",t[i][j]);
printf("\n");
}
printf("\n\n");
system("pause");
return 0;
}

196
Programski jazik C PISI

_______________________________________________________
Test primer

VLEZ:

Vnesete go brojot na redovi na matricata (m<25) 4


Vnesete go brojot na koloni na matricata (n<25) 3
a[1][1]=-5
a[1][2]=4
a[1][3]=2
a[2][1]=0
a[2][2]=1
a[2][3]=6
a[3][1]=-7
a[3][2]=-8
a[3][3]=-3
a[4][1]=10
a[4][2]=8
a[4][3]=9

Transponiranata matrica na matricata:

-5 4 2
0 1 6
-7 8 -3
10 8 9

e slednata

-5 0 -7 10
4 1 8 8
2 6 -3 9

197
Programski jazik C PISI

5. Funkcii
1. Da se napi{e programa vo programskiot jazik C so koja }e se
presmeta sumata 11+22+33+...+nn kade {to n se vnesuva od
tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


n kraj na intervalot
s suma (zbir)
i broja~ vo interval
stepen(n,m) funkcija koja ja presmetuva vrednosta nm

#include<stdio.h>
long int stepen(int n,int m)
{
if(m==0)
return 1;
if(m==1)
return 1;
else
return(n*stepen(n,m-1));
}
int main()
{
long int s=0;
int i,n;
printf("Vnesete n: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
s+=stepen(i,i);
printf("Sumata e: %d \n",s);
return 0;
}
_______________________________________________________
Test primer:
Vnesete n: 5
Sumata e: 3413.

198
Programski jazik C PISI

2. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta sumata 1+(1+2)+(1+2+3)+...+(1+2+...+n) kade {to n se
vnesuva od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


n kraj na intervalot ps parcijalna suma
i broja~ vo interval s vkupna suma
stepen(n,m) funkcija koja ja presmetuva vrednosta nm

#include<stdio.h>
int main()
{
int i,s=0,ps=0,n;
printf("Vnesete n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
ps=ps+i;
s=s+ps;
}
printf("Sumata e = %d\n",s);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete n: 10
Sumata e: 220.

199
Programski jazik C PISI

3. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat Armstrongovite broevi vo zadaden interval.
(Armstrongovi broevi se broevi za koi va`i:
3k = a + b + c + L k ).
n n n n
abc
1
42 L
4
n

Re{enie:

Vlezni promenlivi Izlezni promenlivi


poc po~etok na interval
kraj na interval br brojot na cifrite
kraj
pomo{na promenliva
pom
zbirot na site
i broja~ vo interval cifri stepenuvani
s na broj koj e ednakov
cifri na sekoj broj od so brojot na
a intervalot cifrite
stepen(n,m) funkcija koja ja presmetuva vrednosta nm
funkcija koja go opredeluva brojot na cifrite na
brcif(n)
brojot n

#include<stdio.h>
long int stepen(int n,int m)
{
if(m==0)
return 1;
if(m==1)
return 1;
else
return(n*stepen(n,m-1));
}
int brcif(int n)
{
int br=0,pom;
pom=n;
while(pom>0)
{
br++;
pom/=10;
}

200
Programski jazik C PISI

return br;
}
int main()
{
int poc,kraj,i,br,s=0,a,pom;
printf("Vnesete pocetok i kraj na intervalot: ");
scanf("%d %d",&poc,&kraj);
for(i=poc;i<=kraj;i++)
{
s=0;
br=brcif(i);
pom=i;
while(pom>0)
{
a=pom%10;
s+=stepen(a,br);
pom/=10;
}
if(s==i)
printf("Takov e brojot %d \n",i);
}
return 0;
}
_______________________________________________________
Test primer:

VLEZ:

Vnesete po~etok i kraj na intervalot: 100 1000

Programata pe~ati:
Takov e brojot 153
Takov e brojot 370
Takov e brojot 371
Takov e brojot 407

201
Programski jazik C PISI

4. Da se napi{e programa vo programskiot jazik C so koja }e se


pretvori binaren broj vo dekaden broj.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
binarniot broj
a

funkcija so koja se vr{i pretvoruvawe na daden


dek(n)
binaren broj n vo dekaden broj

#include<stdio.h>
int dek(long int n)
{
int pom,dek=0,x=1,a;
pom=n;
while(pom>0)
{
a=pom%10;
dek=dek+a*x;
x*=2;
pom/=10;
}
return dek;
}
int main()
{
long int a;
printf("Vnesete eden broj vo binaren broen sistem: ");
scanf("%ld",&a);
printf("Brojot vo dekaden broen sistem e: %ld.\n",dek(a));
return 0;
}
_______________________________________________________
Test primer:

VLEZ:
Vnesete eden broj vo binaren broen sistem: 1010
Programata pe~ati:
Brojot 1010 vo dekaden broen sistem e: 10.

202
Programski jazik C PISI

5. Da se napi{e programa vo programskiot jazik C so koja ke se


izbrojat elementite vo niza koi imaat paren broj na cifri.
Nizata se vnesuva od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


nizi od celi broevi
koi mo`e da imaat
a[100],b[100]
najmnogu 100
elementi
brojot na elementite broj na elementi so
n vo nizata br
paren broj na cifri
elementot {to treba
x da se izbri{e od
nizata
i broja~ vo nizata

funkcija so koja se opredeluva brojot na cifrite


cifri (n)
na brojot n.

#include<stdio.h>
int cifri(int n)
{
int br=0;
while(n>0)
{
br++;
n/=10;
}
return br;
}
int main()
{
int i,n,a[100],br=0;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);

203
Programski jazik C PISI

}
for(i=0;i<n;i++)
{
if(cifri(a[i])%2==0)
br++;
}
printf("Broevite so paren broj na cifri se %d.\n",br);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata:
a[0]=102 a[1]=458 a[2]=44 a[3]=6890 a[4]=12 a[5]=5

Programata pe~ati:
Broevite so paren broj na cifri se 3.

204
Programski jazik C PISI

6. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta brojot na cifrite i zbirot na cifrite od daden broj.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


n proizvolen broj
funkcija koja go dava brojot na cifrite na daden broj
broj(n)
n
Funkcija koja go presmetuva zbirot od cifrite na
zbir(n)
daden broj n

#include<stdio.h>
int broj(int n)
{
int pom,br=0;
pom=n;
while(pom>0)
{
br++;
pom/=10;
}
return br;
}
int zbir(int n)
{
int pom,a,s=0;
pom=n;
while(pom>0)
{
a=pom%10;
s+=a;
pom/=10;
}
return s;
}
int main()
{
int n;
printf("Vnesete broj: ");
scanf("%d",&n);

205
Programski jazik C PISI

printf("Brojot na cifrite na brojot %d e %d, a nivniot zbir e


%d\n",n,broj(n),zbir(n));
return 0;
}

_______________________________________________________
Test primer:

VLEZ:
Vnesete broj: 584

Programata pe~ati:
Brojot na cifrite na brojot 584 e 3, a nivniot zbir e 17

206
Programski jazik C PISI

7. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta kolku kombinacii so i bez povtoruvawe ima za daden
broj na cifri i dadena klasa. Brojot na cifrite i klasata se
vnesuvaat od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


n broj na elementi
k klasa
fakt(n) funkcija {to presemetuva faktoriel od broj n

#include<stdio.h>
long int fakt(int n)
{
if(n==1)
return n;
else
return(n*fakt(n-1));
}
int main()
{
int n,k;
printf("Od kolku elementi i od koja klasa: ");
scanf("%d %d",&n,&k);
printf("Brojot na kombinaciite bez povtoruvanje e %d, so
povtoruvanje e %d\n",fakt(n)/(fakt(k)*fakt(n-k)),fakt(k+n-1)/(fakt(k)*fakt(n-
1)));
return 0;
}

_______________________________________________________
Test primer:
VLEZ:

Od kolku elementi i od koja klasa: 5 2


Programata pe~ati:

Brojot na kombinaciite bez povtoruvawe e 10, so povtoruvawe


e 15

207
Programski jazik C PISI

8. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta kolku varijacii so i bez povtoruvawe ima za daden
broj na cifri i dadena klasa. Brojot na cifrite i klasata se
vnesuvaat od tastatura.

Re{enie:

Vlezni promenlivi Izlezni promenlivi


n broj na elementi
k klasa
fakt(n) funkcija {to presemetuva faktoriel od broj n
stepen(n,m) funkcija {to ja presmetuva vrednosta nm

#include<stdio.h>
long int stepen(int n,int m)
{
if(m==0)
return 1;
if(n==1)
return 1;
else
return(n*stepen(n,m-1));
}
long int fakt(int n)
{
if(n==1)
return n;
else
return(n*fakt(n-1));
}
int main()
{
int n,k;
printf("Vnesete broj na elementi i klasa: ");
scanf("%d %d",&n,&k);
printf("Varijacii so povtoruvanje na broj se %d, a bez povtoruvanje
%d \n"
,stepen(n,k),fakt(n)/fakt(n-k));
return 0;
}

208
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete broj na elementi i klasa: 5 3

Programata pe~ati:

Varijacii so povtoruvawe na broj se 125, a bez povtoruvawe 60

209
Programski jazik C PISI

9. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta faktoriel na daden broj.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
proizvolen pozitiven
a broj

faktoriel(n) funkcija koja presmetuva faktoriel od daden broj n

#include<stdio.h>
long int faktoriel(int n)
{
if(n==1)
return n;
else
return(n*faktoriel(n-1));
}
int main()
{
int a;
printf("Vnesete broj: ");
scanf("%d",&a);
printf("Faktoriel od %d e: %ld\n",a,faktoriel(a));
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete broj: 5

Programata pe~ati:

Faktoriel od 5 e: 120

210
Programski jazik C PISI

10. Da se napi{e funkcija vo programskiot jazik C so koja }e se


vr{i broewe na cifrite na daden broj. Potoa da se iskoristi
taa funkcija za da se izbrojat cifrite na broevite od dadena
niza.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi koja
mo`e da ima najmnogu
a[100]
100 elementi

broj na elementi vo
n
nizata

i broja~ vo intervalot

cifri(n) funkcija koja gi broi cifrite na daden broj n

#include<stdio.h>
int cifri(int n)
{
int br=0;
while(n>0)
{
br++;
n/=10;
}
return br;
}
int main()
{
int a[100],n,i;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}

211
Programski jazik C PISI

for(i=0;i<n;i++)
printf("%d-tiot broj ima %d cifri.\n",i+1,cifri(a[i]));

return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 5


Vnesete ja nizata:
a[0]=485 a[1]=56 a[2]=12 a[3]=5 a[4]=47

Programata pe~ati:

1-tiot broj ima 3 cifri.


2-tiot broj ima 2 cifri.
3-tiot broj ima 2 cifri.
4-tiot broj ima 1 cifri.
5-tiot broj ima 2 cifri.

212
Programski jazik C PISI

11. Da se napi{e programa vo programskiot jazik C so koja }e se


skrati edna dropka taka {to broitelot i imenitelot }e
stanat vzaemno prosti broevi.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
br broitel na dropkata

im imenitel na dropkata

NZD od imenitelot i
c
broitelot na dropkata

nzd(m,n) funkcija koja presmetuva NZD na dadeni broevi m i n

#include<stdio.h>
#include<math.h>
int nzd(int m,int n)
{
if (n==0) return m;
else return(nzd(n,m%n));
}
int main()
{
int br,im,c;
printf("Vnesete broitel na dropkata: ");
scanf("%d",&br);
printf("Vneseti imenitel na dropkata: ");
scanf("%d",&im);
c=nzd(abs(br),abs(im));
br/=c;
im/=c;
printf("Dropkata skratena e %d/%d.\n",br,im);
return 0;
}

213
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete broitel na dropkata: 40


Vnesete imenitel na dropkata: 52

Programata pe~ati:

Dropkata skratena e 10/13

214
Programski jazik C PISI

12. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta zbirot na dve dropki.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
broitel na prvata
br1
dropka
imenitel na prvata broitel na zbirot od
im1 br3
dropka dvete dropki
broitel na vtorata
br2
dropka
imenitel na vtorata
im2
dropka
imenitel na zbirot od
NZD od imenitelot i im3
dvete dropki
c broitelot na
dropkata

nzd(m,n) funkcija koja presmetuva NZD na dadeni broevi m i n

#include<stdio.h>
#include<math.h>
int nzd(int m,int n)
{
if (n==0) return m;
else return(nzd(n,m%n));
}
int main()
{
int br1,im1,br2,im2,br3,im3,c;
printf("Vnesete broitel i imenitel na prvata dropka:");
scanf("%d %d",&br1,&im1);
printf("Vnesete broitel i imenitel na vtorata dropka:");
scanf("%d %d",&br2,&im2);
if (im1==im2)
{

br3=br1+br2;
im3=im1;
}

215
Programski jazik C PISI

else
{

im3=im2*im1;
br3=br1*im2+br2*im1;
}
c=nzd(abs(br3),abs(im3));
br3/=c;
im3/=c;
printf("Zbirot = %d/%d\n",br3,im3);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:
Vnesete broitel i imenitel na prvata dropka: 2 3
Vnesete broitel i imenitel na vtorata dropka: 3 4

Programata pe~ati:
Zbirot = 17/12

216
Programski jazik C PISI

13. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta razlikata na dve dropki.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
broitel na prvata
br1
dropka
imenitel na prvata broitel na razlikata
im1 br3
dropka od dvete dropki
broitel na vtorata
br2
dropka
imenitel na vtorata
im2
dropka
imenitel na razlikata
NZD od imenitelot i im3
od dvete dropki
c broitelot na
dropkata

nzd(m,n) funkcija koja presmetuva NZD na dadeni broevi m i n

#include<stdio.h>
#include<math.h>
int nzd(int m,int n)
{
if (n==0) return m;
else return(nzd(n,m%n));
}
int main()
{
int br1,im1,br2,im2,br3,im3,c;
printf("Vnesete broitel i imenitel na prvata dropka:");
scanf("%d %d",&br1,&im1);
printf("Vnesete broitel i imenitel na vtorata dropka:");
scanf("%d %d",&br2,&im2);

if (im2==im1)
{
br3=br1-br2;
im3=im1;

217
Programski jazik C PISI

}
else
{
im3=im2*im1;
br3=br1*im2-br2*im1;
}
c=nzd(abs(br3),abs(im3));
br3/=c;
im3/=c;
printf("Razlika = %d/%d\n",br3,im3);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:
Vnesete broitel i imenitel na prvata dropka: 2 3
Vnesete broitel i imenitel na vtorata dropka: 3 4

Programata pe~ati:
Razlika = -1/12

218
Programski jazik C PISI

14. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta proizvodot na dve dropki.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
broitel na prvata
br1
dropka
imenitel na prvata broitel na proizvodot
im1 br3
dropka od dvete dropki
broitel na vtorata
br2
dropka
imenitel na vtorata
im2
dropka imenitel na
NZD od imenitelot i im3 proizvodot od dvete
c broitelot na dropki
dropkata

nzd(m,n) funkcija koja presmetuva NZD na dadeni broevi m i n

#include<stdio.h>
#include<math.h>
int nzd(int m,int n)
{
if (n==0) return m;
else return(nzd(n,m%n));
}
int main()
{
int br1,im1,br2,im2,br3,im3,c;
printf("Vnesete broitel i imenitel na prvata dropka:");
scanf("%d %d",&br1,&im1);
printf("Vnesete broitel i imenitel na vtorata dropka:");
scanf("%d %d",&br2,&im2);
br3=br1*br2;
im3=im2*im1;
c=nzd(abs(br3),abs(im3));
br3/=c;
im3/=c;

219
Programski jazik C PISI

printf("Proizvodot = %d/%d\n",br3,im3);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete broitel i imenitel na prvata dropka: 2 3


Vnesete broitel i imenitel na vtorata dropka: 5 8

Programata pe~ati:
Proizvodot = 5/12

220
Programski jazik C PISI

15. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta koli~nikot na dve dropki.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
broitel na prvata
br1
dropka
imenitel na prvata broitel na koli~nikot
im1 br3
dropka od dvete dropki
broitel na vtorata
br2
dropka
imenitel na vtorata
im2
dropka imenitel na
NZD od imenitelot i im3 koli~nikot od dvete
c broitelot na dropki
dropkata

nzd(m,n) funkcija koja presmetuva NZD na dadeni broevi m i n

#include<stdio.h>
#include<math.h>
int nzd(int m,int n)
{
if (n==0) return m;
else return(nzd(n,m%n));
}
int main()
{
int br1,im1,br2,im2,br3,im3,c;
printf("Vnesete broitel i imenitel na prvata dropka:");
scanf("%d %d",&br1,&im1);
printf("Vnesete broitel i imenitel na vtorata dropka:");
scanf("%d %d",&br2,&im2);
br3=br1*im2;
im3=br2*im1;
c=nzd(abs(br3),abs(im3));
br3/=c;
im3/=c;
printf("Kolicnikot = %d/%d\n",br3,im3);

221
Programski jazik C PISI

return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete broitel i imenitel na prvata dropka: 4 9


Vnesete broitel i imenitel na vtorata dropka: 20 3

Programata pe~ati:
Koli~nikot = 1/15

222
Programski jazik C PISI

16. Da se napi{e programa vo programskiot jazik C so koja }e se


izbroi kolku elementi od dadena niza imaat paren broj na
cifri a kolku neparen broj na cifri.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100] broj na elementi so
najmnogu 100 brp
paren broj na cifri
elementi
broj na elementi vo
n
nizata
broj na elementi so
brnp
neparen broj na cifri
i broja~ vo nizata

funkcija koja go odreduva brojot na cifrite na daden


broj(n)
broj n

#include<stdio.h>
int broj(int n)
{
int pom,br=0;
pom=n;
while(pom>0)
{
br++;
pom/=10;
}
return br;
}
int main()
{
int a[100],i,brp=0,brnp=0,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}

223
Programski jazik C PISI

for(i=0;i<n;i++)
if(broj(a[i])%2==0)
brp++;
else
brnp++;
printf("Vo nizata ima %d broevi so paren broj na cifri, a %d broevi
so neparen broj na cifri.\n",brp,brnp);
return 0;
}
_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=1551 a[1]=1968 a[2]=152 a[3]=128 a[4]=78 a[5]=8

Programata pe~ati:
Vo nizata ima 3 broevi so paren broj na cifri, a 3 broevi so
neparen broj na cifri.

224
Programski jazik C PISI

17. Da se napi{e funkcija vo programskiot jazik C so koja }e se


presmeta najgolemiot od tri broja. Koristej}i ja taa funkcija
da se najde najgolemiot od zadadenite tri broja.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
x,y,z proizvolni broevi
funkcija koja go pronao|a najgolemiot broj od tri
max(a,b,c)
proizvolni broevi a,b i c

#include<stdio.h>
int max(int a,int b,int c)
{
if(a>=b && a>=c)
return a;
if(b>=a && b>=c)
return b;
if(c>=a && c>=a)
return c;
return 0;
}
int main()
{
int x,y,z;
printf("Vnesete gi trite broja: ");
scanf("%d %d %d",&x,&y,&z);
printf("Najgolem e %d\n",max(x,y,z));
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete gi trite broja: 48 26 33

Programata pe~ati:
Najgolem e 48

225
Programski jazik C PISI

18. Da se napi{e programa vo programskiot jazik C so koja }e se


pretvori dekaden broj vo binaren broj. Potoa da se soberat
dva binarni broja.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
proizvolni dekadni
a,b
broevi
binarni zapisi na
m,n dekadnite broevi a i
b
cifra od binarniot
ost1
broj m zbir na dvata binarni
rez
cifra od binarniot broevi m i n
ost2
broj n

ost cifra od rezultatot

te`inska pozicija na
poz
cifrite
funkcija koja vr{i pretvorawe na daden dekaden broj
bin(n)
n vo binaren broj

#include<stdio.h>
int bin(int n)
{
int pom,poz,a,bin;
pom=n;
bin=0;
poz=1;
while(pom>0)
{
a=pom%2;
bin+=a*poz;
poz*=10;
pom/=2;
}
return bin;
}
int main()

226
Programski jazik C PISI

{
int a,b,m,n,ost,ost1,ost2,poz=1,rez;
printf("Vnesete dva broja:");
scanf("%d %d",&a,&b);
m=bin(a);
n=bin(b);
printf("Vo binaren broen sistem se: %d i %d.\n",m,n);
rez=0;
ost=0;
while(m!=0 || n!=0)
{
ost1=m%10;
ost2=n%10;
rez=((ost1+ost2+ost)%2)*poz+rez;
ost=(ost1+ost2+ost)/2;
poz*=10;
m/=10;
n/=10;
}
if (ost==1)
rez=rez+ost*poz;
printf("Rezultatot=%d.\n",rez);

return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete dva broja: 20 15


Vo binaren broen sistem se: 10100 i 1111.

Programata pe~ati:
Rezultatot=100011

227
Programski jazik C PISI

19. Da se napi{e programa vo programskiot jazik C koja na


parnite pozicii na edna niza }e gi zapi{e obratnite broevi na
elementite, a na neparnite pozicii }e gi zapi{e kvadratite
na elementite. Nizata se vnesuva od tastatura. (Nultiot
element se smenuva so obratniot).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
a[100] koja mo`e da ima
najmnogu 100 elementi
broj na elementi vo
n
nizata

i broja~ vo nizata

obr(n) funkcija koja go presmetuva obratniot broj na brojot n

#include<stdio.h>
int obr(int n)
{
int pom,m=0,a;
pom=n;
while(pom>0)
{
a=pom%10;
m=m*10+a;
pom/=10;
}
return m;
}
int main()
{
int a[100],i,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{

228
Programski jazik C PISI

printf("a[%d]=",i);
scanf("%d",&a[i]);
}
a[0]=obr(a[0]);
for(i=1;i<n;i++)
{
if(i%2==0)
a[i]=obr(a[i]);
else
a[i]=a[i]*a[i];
}
printf("Novodobienata niza e:\n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=15 a[1]=64 a[2]=492 a[3]=23 a[4]=18 a[5]=5

Programata pe~ati:
Novodobienata niza e:
51 4096 294 529 81 25

229
Programski jazik C PISI

20. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta NZD na elementite od dadena niza. Nizata se
vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi
broevi koja mo`e
a[100]
da ima najmnogu 100
elementi
NZD na elementite
broj na elementi vo pom
n vo nizata
nizata

i broja~ vo nizata

funkcija koja presmetuva NZD na dva proizvolni


nzd(m,n)
broevi m i n

#include<stdio.h>
int nzd(int m,int n)
{
if (n==0) return m;
else return(nzd(n,m%n));
}
int main()
{
int a[100],n,i,pom;
printf("Od kolku broevi da se bara NZD:");
scanf("%d",&n);
printf("Vnesete gi broevite:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
pom=nzd(a[0],a[1]);
for(i=1;i<n;i++)
pom=nzd(pom,a[i]);
printf("NZD=%d \n",pom);
return 0;
}

230
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Od kolku broevi da se bara NZD: 5


Vnesete gi broevite:
40 25 60 15 35

Programata pe~ati:
NZD=5

231
Programski jazik C PISI

21. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta NZS na elementite od dadena niza. Nizata se
vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
NZS na elementite
broj na elementi vo nzs
n vo nizata
nizata

i broja~ vo nizata

funkcija koja presmetuva NZS na dva proizvolni


nzs(m,n)
broevi m i n
vnesete funkcija so koja se vnesuvaat elementi vo edna niza
(a[],n) a[n] koja ima n elementi

#include<stdio.h>
int NZS(int m,int n)
{
int pom,j;
pom=1;
j=2;
do
{
while(m%j==0 || n%j==0)
{
if(m%j==0)
m/=j;
if(n%j==0)
n/=j;
pom*=j;
}
j++;
} while(m!=1 || n!=1);
return pom;
}

232
Programski jazik C PISI

void Vnesete(int a[],int n)


{
int i;
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
}
int main()
{
int a[100],i,n,nzs;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
Vnesete(a,n);
nzs=NZS(a[0],a[1]);
for(i=2;i<n;i++)
nzs=NZS(nzs,a[i]);
printf("NZS za broevite od nizata e %d\n",nzs);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=20
a[1]=4
a[2]=5
a[3]=2
a[4]=40
a[5]=8

Programata pe~ati:
NZS za broevite od nizata e 40

233
Programski jazik C PISI

22. Da se napi{e programa vo programskiot jazik C so koja }e se


proveri dali obratniot broj na zadaden broj (vo daden
interval) mu e delitel.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
po~etok na
poc
intervalot

kraj kraj na intervalot

i broja~ vo intervalot

funkcija koja go opredeluva obratniot broj na daden


obr(n)
broj n

#include<stdio.h>
int obr(int n)
{
int a,pom,m=0;
pom=n;
while (pom>0)
{
a=pom%10;
m=m*10+a;
pom/=10;
}
return m;
}
int main()
{
int i,poc,kraj;
printf("Vnesete pocetok i kraj na intervalot: ");
scanf("%d %d",&poc,&kraj);
for(i=poc;i<=kraj;i++)
if(i%obr(i)==0)
printf("%d / %d = %d\n",i,obr(i),i/obr(i));
return 0;
}

234
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:
Vnesete po~etok i kraj na intervalot: 10 45

Programata pe~ati:
10 / 1 = 10
11 / 11 = 1
20 / 2 = 10
22 / 22 = 1
30 / 3 = 10
33 / 33 = 1
40 / 4 = 10
44 / 44 = 1

235
Programski jazik C PISI

23. Da se napi{e funkcija vo programskiot jazik C so koja }e se


proveri dali daden broj e prost. Potoa da se najdat site
prosti broevi od 2 do n.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
kraj na intervalot za
n
proveruvawe

i broja~ vo intervalot

funkcija koja proveruva dali eden daden broj n e


prost(n)
prost broj

#include<stdio.h>
int prost(int n)
{
int j,pr;
pr=1;
j=2;
while(pr && j<=(n/2))
{
if(n%j==0)
pr=0;
j++;
}
return pr;
}
int main()
{
int n,i;
printf("Vnesete n=");
scanf("%d",&n);
for(i=2;i<n;i++)
if(prost(i))
printf("%d\n",i);
return 0;
}

236
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:
Vnesete n=20

Programata pe~ati:
2
3
5
7
11
13
17
19

237
Programski jazik C PISI

24. Da se napi{e funkcija vo programskiot jazik C so koja }e se


presmetuva stepen nk. Potoa da se presmeta stepenot nk kade
{to n i k se vnesuvaat od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
a proizvolen broj

b eksponent

stepen
funkcija {to presmetuva nm
(n,m)

#include<stdio.h>
long int stepen(int n,int m)
{
if(m==0)
return 1;
if(n==1)
return 1;
else
return(n*stepen(n,m-1));
}
int main()
{
int a,b;
printf("Vnesete broj i eksponent: ");
scanf("%d %d",&a,&b);
printf("%d na stepen %d = %ld\n",a,b,stepen(a,b));
return 0;
}
_______________________________________________________
Test primer:

VLEZ:
Vnesete broj i eksponent: 2 8

Programata pe~ati:
2 na stepen 8 = 256

238
Programski jazik C PISI

25. Da se napi{e programa vo programskiot jazik C so koja }e se


stepenuva dadenata niza na k-ti stepen. Nizata i vrednosta na
k se vnesuvaat od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi
broj na elementi vo
n
nizata
i broja~ vo nizata
m eksponent
stepen
funkcija {to presmetuva nm
(n,m)

#include<stdio.h>
long int stepen(int n,int m)
{
if(m==0)
return 1;
if(n==1)
return 1;
else
return(n*stepen(n,m-1));
}
int main()
{
int i,n,m;
long int a[100];
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Na koj stepen da se stepenuvaat: ");

239
Programski jazik C PISI

scanf("%d",&m);
printf("Stepenuvanata niza e: ");
for(i=0;i<n;i++)
{
a[i]=stepen(a[i],m);
printf("%d ",a[i]);
}
printf("\n");
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=8
a[1]=10
a[2]=15
a[3]=16
a[4]=5
a[5]=20
Na koj stepen da se stepenuvaat: 3

Programata pe~ati:

Stepenuvanata niza e: 512 1000 3375 4096 125 8000

240
Programski jazik C PISI

26. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta sumata: a 0 ⋅ a1 + a1 ⋅ a 2 + a 2 ⋅ a3 + L + a n − 2 ⋅ a n −1
Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi s suma(zbir)
broj na elementi vo
n
nizata
i broja~ vo nizata
#include<stdio.h>
int main()
{
int a[100],i,s=0,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
s+=a[i]*a[i+1];
printf("Sumata e: %d\n",s);
return 0;
}
_______________________________________________________
Test primer:
VLEZ:
Kolku elementi da ima nizata? 6
Vnesete ja nizata.
a[0]=15
a[1]=29
a[2]=-5
a[3]=89
a[4]=-1
a[5]=3
Programata pe~ati:
Sumata e: -247

241
Programski jazik C PISI

27. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta aritmeti~kata sredina na parnite i neparnite
elementi od edna niza. Nizata se vnesuva od tastatura.
(Aritmeti~kata sredina se presmetuva spored formulata:
a1 + a 2 + L + a n
).
n
Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi broevi
koja mo`e da ima
a[100]
najmnogu 100
elementi aritmeti~ka sredina
ar1
broj na elementi vo na parnite elementi
n
nizata
i broja~ vo nizata
broj na parni
brp
elementi vo nizata
broj na neparni
brn aritmeti~ka sredina
elementi vo nizata
ar2 na neparnite
suma na parnite
sp elementi
elementi
suma na neparnite
snp
elementi vo nizata

#include<stdio.h>
int main()
{
float ar1,ar2;
int i,n,a[100],brp=0,brnp=0,sp=0,snp=0;
printf("Vnesete n=");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<n;i++)
{
if(a[i]%2==0)
{

242
Programski jazik C PISI

brp++;
sp+=a[i];
}
else
{
brnp++;
snp+=a[i];
}
}
ar1=float(sp)/float(brp);
ar2=float(snp)/float(brnp);
printf("Aritmetictkata sredina na parnite elementi e %.1f, a na
neparnite %.1f.\n",ar1,ar2);
return 0;
}
_______________________________________________________
Test primer:

VLEZ:
Vnesete n=5
a[0]=120 a[1]=54 a[2]=89 a[3]=77 a[4]=23

Programata pe~ati:

Aritmeti~kata sredina na parnite elementi e 87.0, a na


neparnite 63.0.

243
Programski jazik C PISI

28. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta sumata x1+x2+...+xn. Vrednosta na x i n se vnesuva od
tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
broj koj pretstavuva
x
osnova vo sumata
n kraj na intervalot s suma (zbir)

i broja~ vo intervalot

stepen
funkcija {to presmetuva nm
(n,m)

#include<stdio.h>
long int stepen(int n,int m)
{
if(m==0)
return 1;
if(n==1)
return 1;
else
return(n*stepen(n,m-1));
}
int main()
{
int i,x,n,s=0;
printf("Vnesete broj: ");
scanf("%d",&x);
printf("Vnesete n: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
s+=stepen(x,i);
printf("Sumata e: %d\n",s);
return 0;
}

244
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete broj: 3
Vnesete n: 4

Programata pe~ati:

Sumata e: 120

245
Programski jazik C PISI

29. Da se napi{e programa vo programskiot jazik C so koja }e se


presmeta vrednosta na funkcijata cos(x) spored formulata
x2 x4 x6
cos x = 1 − + − + .... so upotreba na prvite n ~lenovi.
2! 4! 6!

Re{enie:
Vlezni promenlivi Izlezni promenlivi
pi konstantata π

alfa agol vo stepeni

alfarad agol vo radijani


i broja~
cosinus vrednosta cos(alfa)
n kraj na interval
vrednost na koja se
br stepenuva vrednosta
(-1)
pomo{na promenliva
pom vo koja se pomni
agolot
faktoriel
funkcija {to presemtuva faktoriel na daden broj x
(x)

#include<stdio.h>
#include<math.h>
float faktoriel(int x);
int main()
{
float cosinus=1,alfa,alfarad,pi=3.141592,pom;
int i,n,br=0;
do
{
printf("Vnesete ja vrednosta na agolot alfa vo stepeni\t");
scanf("%f",&alfa);
}
while (alfa>180);
pom=alfa;
if (alfa>=90)
alfa=180-alfa;
alfarad=alfa*pi/180;

246
Programski jazik C PISI

printf("\n\nVnesete do koj clen da se presmetuva\t");


scanf("%d",&n);
for (i=2;i<=n;i+=2)
{
br++;
cosinus+=pow(-1,br)*pow(alfarad,i)/faktoriel(i);
}
if (pom>=90)
printf("\n\ncos%3.0f=%8.7f",pom,-1*cosinus);
else
printf("\n\ncos%3.0f=%8.7f",pom,cosinus);
printf("\n\n\n");
system("pause");
return 0;
}
float faktoriel(int x)
{
float izlez=1;
int j;
for (j=1;j<=x;j++)
izlez*=j;
return izlez;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete ja vrednosta na agolot alfa vo stepeni 45

Vnesete do koj ~len da se presmetuva 6

cos 45=0.701034

247
Programski jazik C PISI

30. Da se napi{e programa vo programskiot jazik C so koja }e se


1 1 1
presmeta sumata S n = 1 + + + + ..... se dodeka e ispolnet
2! 3! 4!
uslovot S n − S n−1 < ε .(Vrednosta na ε se vnesuva preku
tastatura).
Re{enie:
Vlezni promenlivi Izlezni promenlivi
vrednost za to~nost do
granica
koja }e se proveruva
i broja~ vo intervalot suma suma (zbir)
prethodna vrednost na
prethodna
suma
faktoriel
funkcija {to presmetuva faktoriel na daden broj x
(x)
#include<stdio.h>
float faktoriel(int x);
int main()
{
float prethodna=0,suma=1,granica;
int i=1;
printf("Vnesete ja granicata za presmetuvanje na sumata:\t");
scanf("%f",&granica);
while((suma-prethodna)>granica)
{
i++;
prethodna=suma;
suma+=1/faktoriel(i);
}
printf("\n\nVrednosta na sumata iznesuva %7.6f.\n\n",suma);
system("pause");
return 0;
}
float faktoriel(int x)
{
float izlez=1;
int j;
for (j=1;j<=x;j++)
izlez*=j;
return izlez;
}

248
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete ja granicata za presmetuvawe na sumata: 0.0001

Vrednosta na sumata iznesuva 1.718279

249
Programski jazik C PISI

31. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat site prirodni broevi pomali od prirodniot broj n
~ii cifri se podredeni vo raste~ki redosled.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n kraj na intervalot

i broja~ vo intervalot
prima vrednost 1
dokolku daden broj go
zadovoluva uslovot i
rezultat
0 dokolku daden broj
ne go zadovoluva
uslovot
funkcija koja {to proveruva dali cifrite na daden
cif(x)
broj x mu se vo raste~ki redosled

#include<stdio.h>
int cif(int x);
int main()
{
int n,i,rezultat;
do
{
printf("Vnesete do koj broj da se proveruva\t");
scanf("%d",&n);
}
while (n<9);
printf("\n\nBroevi kaj koi cifrite se vo rastecki redosled se
broevite:\n");
for (i=10;i<=n;i++)
{
rezultat=cif(i);
if (rezultat==1)
printf ("%d ,",i);
}
printf("\n\n\n");
system("pause");
return 0;
}

250
Programski jazik C PISI

int cif(int x)
{
int min,da=1,cifra;
min=x%10;
x/=10;
while ((x!=0)&& da==1)
{
cifra=x%10;
if (cifra >= min)
da=0;
else
{
min=cifra;
x/=10;
}
}
return da;
}

_______________________________________________________
Test primer

VLEZ:

Vnesete do koj broj da se proveruva 100

Broevi kaj koi cifrite se vo raste~ki redosled se broevite:

12, 13, 14, 15, 16, 17, 18, 19, 23, 24, 25, 26, 27, 28, 29, 34, 35, 36,
37, 38, 39, 45, 46, 47, 48, 49, 56, 57, 58, 59, 67, 68, 69, 78, 79, 89

251
Programski jazik C PISI

32. Da se napi{e programa vo programskiot jazik C so koja }e se


ispe~atat site prosti broevi pomali od daden broj n kaj koi
zbirot i proizvodot od negovite cifri e prost broj.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n kraj na intervalot

i broja~ vo intervalot
funkcija koja proveruva dali daden broj x e
prost(x)
prost broj
funkcija koja go presmetuva zbrot od cifrite
zbircifri(y)
na daden broj y
proizvodcifri funkcija koja go presmetuva proizvodot od
(z) cifrite na daden broj z

#include<stdio.h>
int prost(int x);
int zbircifri(int y);
int proizvodcifri(int z);
int main()
{
int i,n;
do
{
printf("Vnesete do koj broj da se proveruva:\t");
scanf("%d",&n);
}
while (n<=0);
printf("\n\nBroevi pomali od brojot %d koi go ispolnuvaat uslovot se:
",n);
for (i=3;i<=n;i+=2)
{
if (prost(i) && prost(zbircifri(i)) && prost(proizvodcifri(i)))
printf("%d, ",i);
}
printf("\n\n\n");
system("pause");
return 0;
}
int prost(int x)

252
Programski jazik C PISI

{
int DA=1,j;
for (j=2;j<=x/2;j++)
{
if (x%j==0)
{
DA=0;
break;
}
}
return DA;
}
int zbircifri(int y)
{
int zbir=0;
while (y>0)
{
zbir+=y%10;
y/=10;
}
return zbir;
}
int proizvodcifri(int z)
{
int proizvod=1;
while(z>0)
{
proizvod*=z%10;
z/=10;
}
return proizvod;
}
_______________________________________________________
Test primer

VLEZ:

Vnesete do koj broj da se proveruva 1000

Broevi pomali od brojot 1000 koi go ispolnuvaat uslovot se: 3,


5, 7, 11, 101, 113, 131, 151, 311, 401, 409, 601, 809

253
Programski jazik C PISI

33. Da se sostavi programa vo programskiot jazik C so koja }e se


n
i!
presmeta sumata ∑ni =1
i
+ i!
.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
broj na ~lenovi vo
n
zbirot suma suma (zbir)
i broja~
faktoriel
funkcija {to presmetuva faktoriel na daden broj x
(x)

#include<stdio.h>
#include<math.h>
float faktoriel(float x);
int main()
{
float n,i,suma=0;
do
{
printf("Vneste kolku clenovi da ima sumata:\t");
scanf("%f",&n);
}
while (n<0);
for (i=1;i<=n;i++)
{
suma+=faktoriel(i)/(pow(n,i)+faktoriel(i));
}
printf("\n\nSumata iznesuva %8.7f.\n\n",suma);
system("pause");
return 0;
}
float faktoriel(float x)
{
float izlez=1,j;
for (j=1;j<=x;j++)
{
izlez*=j;
}
return izlez;
}

254
Programski jazik C PISI

_______________________________________________________
Test primer

VLEZ:

Vnesete kolku ~lenovi da ima sumata 5


Sumata iznesuva 0.3605022

255
Programski jazik C PISI

34. Prirodniot broj n se sobira so svojot obraten broj,


novodobieniot broj se sobira so svojot obraten itn. Da se
napi{e programa vo programskiot jazik C koja }e odredi dali i
po kolku sobirawa }e se dobie palindrom . (Palindrom e broj
koj e ednakov i od dvete strani).

Re{enie:
Vlezni promenlivi Izlezni promenlivi
broj koj se dobiva
kako zbir na brojot
n proizvolen broj m
n i negoviot
obraten broj
dobiva vrednost 1
koga ne e ispolnet
kraj brojac broj na svrtuvawa
uslovot i 0 koga toj
uslov e ispolnet
obraten funkcija koja go presmetuva obratniot broj na daden
(x) broj x

#include<stdio.h>
int obraten(int x);
int main()
{
int n,m,brojac=0,kraj=1;
do
{
printf("Vneste eden pozitiven priroden broj:\t");
scanf("%d",&n);
}
while (n<0);
m=n+obraten(n);
brojac++;
while (kraj)
{
if (m==obraten(m))
{
kraj=0;
printf("\n\nSe dobiva palindrom posle %d svrtuvanja, a toa e
brojot %d.\n\n",brojac,m);
}
else
{

256
Programski jazik C PISI

m+=obraten(m);
brojac++;
}
if (brojac==10)
{
printf("\n\nNe se dobi pailndrom ni posle 10 svrtuvanja.\n\n");
kraj=0;
}
}
system("pause");
return 0;
}
int obraten(int x)
{
int izlez=0;
while (x>0)
{
izlez=10*izlez+x%10;
x/=10;
}
return izlez;
}

_______________________________________________________
Test primer

VLEZ:

Vnesete eden pozitiven priroden broj 263

Se dobiva palindrom posle 3 svrtuvawa, a toa e brojot 2662.

257
Programski jazik C PISI

35. Da se napi{e programa vo programskiot jazik C so koja }e se


n n!
presmeta binomniot koeficient   = . Broevite n i k
 k  k!⋅(n − k )!
se vnesuvaat preku tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n vrednost na grupata vrednost na
kf binomniot
k vrednost na klasata koeficient
faktoriel
funkcija {to presmetuva faktoriel na daden broj x
(x)
#include<stdio.h>
float faktoriel(float x);
int main()
{
float n,k,kf;
do
{
printf("Vneste ja vrednosta na grupata(n>0):\t");
scanf("%f",&n);
printf("Vnesete ja klasata (k>0 i k<n)");
scanf("%f",&k);
}
while ((n<0) || (k<0) || (k>n));
kf=faktoriel(n)/(faktoriel(k)*faktoriel(n-k));
printf("\n\nBinomniot koeficient na grupata %4.2f i klasata %4.2f
iznesuva %8.3f\n\n",n,k,kft);
system("pause");
return 0;
}
float faktoriel(float x)
{
float izlez=1,i;
for (i=1;i<=x;i++)
izlez*=i;
return izlez;
}

258
Programski jazik C PISI

_______________________________________________________
Test primer

VLEZ:

Vnesete ja vrednosta na grupata (n>0): 30


Vnesete ja klasata (k>0) i (k<n) 10
Binomniot koeficient na grupata 30 i klasata 10 iznesuva
30 045 018

259
Programski jazik C PISI

36. Da se napi{e programa vo programskiot jazik C so koja za


daden priroden broj se presmetuva razlikata me|u najbliskiot
pogolem od nego prost broj i toj broj.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n proizvolen broj
broj koj e pogolem od
m razlika pome|u
n
prima vrednost 1 ako razlika broevite m ako e
brojot m e prost broj prost broj i n
k
i 0 ako ne e prost
broj
prost(x) funkcija koja odreduva dali daden broj x e prost broj

#include<stdio.h>
int prost(int x);
int main()
{
int n,razlika,m,k;
do
{
printf("Vnesete eden priroden broj:\t");
scanf("%d",&n);
}
while(n<0);
m=n+1;
k=prost(m);
while (k!=1)
{
m++;
razlika=m-n;
k=prost(m);
}
printf("\n\nPrv prost broj pogolem od brojot %d e brojot %d i
razlikata megu niv iznesuva %d.\n\n",n,m,razlika);
system("pause");
return 0;
}
int prost(int x)
{

260
Programski jazik C PISI

int DA=1,i;
for (i=2;i<=x/2;i++)
{
if (x%i==0)
{
DA=0;
break;
}
}
return DA;
}

_______________________________________________________
Test primer

Vnesete eden priroden broj 75

Prv prost broj pogolem od brojot 75 e brojot 79 i razlikata


me|u niv iznesuva 4.

261
Programski jazik C PISI

37. Da se napi{e programa vo programskiot jazik C koja }e gi


ispe~ati site prosti broevi pomali od daden broj n ~ij {to
zbir na cifri e isto taka prost broj. Na krajot da se ispe~ati
kolku vakvi broevi bile pronajdeni.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
n kraj na interval broj na broevi koi go
broja~ vo brojac ispolnuvaat
i zadadeniot uslov
interval
funkcija koja proveruva dali daden broj x e prost
prost(x)
broj
funkcija koja go presmetuva zbirot od cifrite na
zbircifri(y)
daden broj y

#include<stdio.h>
int prost(int x);
int zbircifri(int y);
int main()
{
int i,brojac=0,n;
printf("Vnesete do koj broj da se proveruva:\t);
scanf("%d",&n)
printf("Broevi koi se pomali od brojot %d i koi go ispolnuvaat
postaveniot uslov se broevite: ",n);
for (i=3;i<n;i+=2)
{
if (prost(i) && prost(zbircifri(i)))
{
printf("%d, ",i);
brojac++;
}
}
printf("\n\nVkupno se %d takvi broevi.\n\n",brojac);
system("pause");
return 0;
}
int prost(int x)
{
int DA=1,i;
for (i=2;i<=x/2;i++)

262
Programski jazik C PISI

{
if (x%i==0)
{
DA=0;
break;
}
}
return DA;
}
int zbircifri(int y)
{
int izlez=0;
while (y>0)
{
izlez+=y%10;
y/=10;
}
return izlez;
}
_______________________________________________________
Test primer

VLEZ:

Vnesete do koj broj da se proveruva: 100

Broevi koi se pomali od brojot 100 i koi go ispolnuvaat


postaveniot uslov se broevite: 3, 5, 7, 11, 23, 29, 41, 43, 47, 61,
67, 83, 89

Vkupno se 13 takvi broevi

263
Programski jazik C PISI

6. Poka`uva~i
1. Da se napi{e programa vo programskiot jazik C so koja }e se
ispe~ati obratniot zbor na daden zbor.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
nizi od karakteri koi
zbor[20] mo`e da imaat najmnogu
copy[20] 20 karakteri

a element od nizata

i broja~ vo nizata

obr(*c) funkcija so koja se dobiva obraten zbor

#include<stdio.h>
#include<string.h>
void obr(char *c)
{
int i,n;
n=strlen(c);
char pom;
for(i=0;i<n/2;i++)
{
pom=c[i];
c[i]=c[n-i-1];
c[n-i-1]=pom;
}
}
int main()
{
int a,i=0;
char zbor[20],copy[20];
printf("Vnesete go zborot: ");
while(i<20 && (a=getchar())!='\n')
zbor[i++]=a;

264
Programski jazik C PISI

zbor[i]=0;
strcpy(copy,zbor);
obr(copy);
printf("Obratniot zbor e %s\n",copy);
return 0;
}

_______________________________________________________
Test primer:

VLEZ:

Vnesete go zborot: Telefon

Programata pe~ati:

Obratniot zbor e nofeleT

265
Programski jazik C PISI

2. Da se napi{e programa vo programskiot jazik C so koja }e se


pronajdat najgolemite tri broja od n koi ne se vo niza.

Re{enie:
Vlezni promenlivi Izlezni promenlivi

n broj na elementi

i broja~

max1,
max2,
proizvolni broevi
max3,
x
funkcija koja vr{i sortirawe na tri proizvolni
sort(*a,*b,*c)
broevi a,b i c

#include<stdio.h>
void sort(int *a,int *b,int *c)
{
int pom;
if(*a>*b)
{
pom=*a;
*a=*b;
*b=pom;
if(*a>*c)
{
pom=*a;
*a=*c;
*c=pom;
}
if(*b>*c)
{
pom=*b;
*b=*c;
*c=pom;
}
}
else

266
Programski jazik C PISI

if(*b>*c)
{
pom=*b;
*b=*c;
*c=pom;
}
if(*a>*b)
{
pom=*a;
*a=*b;
*b=pom;
}
}
int main()
{
int i,n,max1,max2,max3,x;
printf("Vnesete n=");
scanf("%d",&n);
printf("Vnesete tri broja:");
scanf("%d %d %d",&max1,&max2,&max3);
sort(&max1,&max2,&max3);
for(i=4;i<=n;i++)
{
sort(&max1,&max2,&max3);
printf("Vnesete go %d-tiot broj: ",i);
scanf("%d",&x);
if(x>=max1)
max1=x;
}
sort(&max1,&max2,&max3);
printf("Trite najgolemi broevi se: %d %d i
%d.\n",max1,max2,max3);
return 0;
}

267
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete n=6
Vnesete tri broja: 50 49 102
Vnesete go 4-tiot broj: 56
Vnesete go 5-tiot broj: 70
Vnesete go 6-tiot broj: 15
Programata pe~ati:
Trite najgolemi broevi se: 56 70 i 102.

268
Programski jazik C PISI

3. Da se napi{at funkcii vo programskiot jazik C so koi }e se


vr{i vnesuvawe, pe~atewe i podreduvawe na dadena niza.
Potoa da se podredi nizata vo raste~ki redosled. Nizata se
vnesuva od tastatura.

Re{enie:
Vlezni promenlivi Izlezni promenlivi
niza od celi
broevi koja mo`e
a[100]
da ima najmnogu 100
elementi
broj na elementi vo
n
nizata

i broja~ vo nizata

vnesete funkcija so koja se vr{i vnesuvawe na edna niza od


(a[],n) n elementi
pecati
Funkcija so koja se pe~ati edna niza od n elementi
(a[],n)
smeni funkcija so koja se vr{i promena na mestata na
(*m,*n) elementite od nizata
simplesort
funkcija so koja se sortira niza
(a[],n)

#include<stdio.h>
void Vnesete(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
}
void pecati(int a[],int n)
{
int i;
for(i=0;i<n;i++)

269
Programski jazik C PISI

printf("%d ",a[i]);
printf("\n");
}
void smeni(int *m,int *n)
{
int pom;
pom=*m;
*m=*n;
*n=pom;
}
void SimpleSort(int a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
smeni(&a[i],&a[j]);
pecati(a,n);
}
}
int main()
{
int a[100],i,n;
printf("Kolku elementi da ima nizata? ");
scanf("%d",&n);
printf("Vnesete ja nizata.\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("Podreduvanjeto na nizata e:\n");
SimpleSort(a,n);
return 0;
}

270
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Kolku elementi da ima nizata? 6


Vnesete ja nizata.
a[0]=15
a[1]=-4
a[2]=64
a[3]=-20
a[4]=12
a[5]=33

Programata pe~ati:

Podreduvaweto na nizata e:
-4 15 64 -20 12 33
-4 15 64 -20 12 33
-20 15 64 -4 12 33
-20 15 64 -4 12 33
-20 15 64 -4 12 33
-20 15 64 -4 12 33
-20 -4 64 15 12 33
-20 -4 64 15 12 33
-20 -4 64 15 12 33
-20 -4 15 64 12 33
-20 -4 12 64 15 33
-20 -4 12 64 15 33
-20 -4 12 15 64 33
-20 -4 12 15 64 33
-20 -4 12 15 33 64

271
Programski jazik C PISI

4. Da se napi{e funkcija vo programskiot jazik C so koja }e se


izvr{i smena na dve vrednosti. Potoa da se podredat tri broja
po golemina so koristewe na taa funkcija.
Re{enie:
Vlezni promenlivi Izlezni promenlivi

x,y,z proizvolni broevi

smeni funkcija so koja se vr{i promena na mestata na


(*a,*b) broevite a i b
#include<stdio.h>
void smeni(int *a,int *b)
{
int pom;
pom=*a;
*a=*b;
*b=pom;
}
int main()
{
int x,y,z;
printf("Vnesete gi trite broja: ");
scanf("%d %d %d",&x,&y,&z);
if(x>y)
{
smeni(&x,&y);
if(x>z)
smeni(&x,&z);
if(y>z)
smeni(&y,&z);
}
else
{
if(y>z)
smeni(&y,&z);
if(x>y)
smeni(&x,&y);
}
printf("Broevite podredeni (so smena) se: %d %d %d.\n",x,y,z);
return 0;
}

272
Programski jazik C PISI

_______________________________________________________
Test primer:

VLEZ:

Vnesete gi trite broja: 15 -10 25

Programata pe~ati:

Broevite podredeni (so smena) se: -10 15 25.

273

You might also like