Upload
dangkhanh
View
265
Download
0
Embed Size (px)
Citation preview
Programski jazik C PISI
1
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
k stepen vo intervalot
s suma (zbir)
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.
Programski jazik C PISI
2
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
j ~lenovi na sumata
s suma (zbir)
#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.
Programski jazik C PISI
3
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; }
Programski jazik C PISI
4
_______________________________________________________ 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
Programski jazik C PISI
5
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
k faktorot na zgolemuvawe na ~ekorot c
s suma
#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
Programski jazik C PISI
6
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
j deliteli na sekoj broj od intervalot
prost prima vrednost 1 za prost broj i 0 za broj koj ne e prost
#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; }
Programski jazik C PISI
7
_______________________________________________________ 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.
Programski jazik C PISI
8
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
kraj kraj na interval
pom pomo{na promenliva
i broja~ vo interval
a cifra od interval
deliv
prima vrednost 1 ako brojot e deliv so svoite cifri i 0 ako brojot ne e deliv so svoite cifri
#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);
Programski jazik C PISI
9
} 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
Programski jazik C PISI
10
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
n broj na deliteli
j deliteli na broevite
br broj na deliteli
#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; }
Programski jazik C PISI
11
_______________________________________________________ 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.
Programski jazik C PISI
12
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.
Programski jazik C PISI
13
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.
Programski jazik C PISI
14
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
pom pomo{na promenliva 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
Programski jazik C PISI
15
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
a cifra vo dekaden ili binaren broj
pom pomo{na promenliva vo koja se ~uva dekadniot broj
m obraten broj na binarniot broj
poz pozicija na cifrata
bin binaren broj
#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;
Programski jazik C PISI
16
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.
Programski jazik C PISI
17
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
Programski jazik C PISI
18
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
br broj na deliteli
i najmal delitel na brojot x
#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; }
Programski jazik C PISI
19
_______________________________________________________ Test primer: VLEZ: Vnesete broj=39 Programata pe~ati: Najmaliot delitel e 3.
Programski jazik C PISI
20
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
pom pomo{na promenliva vo koja se pomni brojot n
m obratniot broj na 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
Programski jazik C PISI
21
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
poc po~etok na intervalot
kraj kraj na intervalot
i broja~i vo intervalot
m obraten broj na brojot od intervalot
a cifra od brojot
pom pomo{na promenliva 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); }
Programski jazik C PISI
22
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.
Programski jazik C PISI
23
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
a cifra od brojot
s zbir na dva broja
pom pomo{na promenliva vo koja se ~uva broj
p proizvod na dva 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"); } }
Programski jazik C PISI
24
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
Programski jazik C PISI
25
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
j deliteli na brojot od intervalot
prost prima vrednost 1 ako 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; }
Programski jazik C PISI
26
_______________________________________________________ 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.
Programski jazik C PISI
27
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
n proizvolen priroden broj
i deliteli na brojot
x prost faktor (mno`itel) 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
Programski jazik C PISI
28
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
a cifra od broj s suma na dva broja
pom pomo{na promenliva vo koja se pomni broj
invS obraten broj p
proizvod na dva broja
#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; }
Programski jazik C PISI
29
_______________________________________________________ Test primer: VLEZ: Programata pe~ati: Parot broevi e 2 i 497 2+497=499 2*497=994
Programski jazik C PISI
30
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
pom pomo{na promenliva vo koja se pomni odreden broj
br broj na deliteli
#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.
Programski jazik C PISI
31
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
x,y,z
cifrite na stotkite, desetkite i 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
Programski jazik C PISI
32
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
n odnos pome|u proizvodot i zbirot od cifrite
pom pomo{na promenliva 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; }
Programski jazik C PISI
33
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
Programski jazik C PISI
34
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
pom pomo{na promenliva 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; }
Programski jazik C PISI
35
_______________________________________________________ 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.
Programski jazik C PISI
36
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
j deliteli na broj od 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; }
Programski jazik C PISI
37
_______________________________________________________ Test primer: VLEZ: Vnesete do koj broj da se proveruva: 100 Sovr{eni broevi pomali od brojot 100 se broevite 6, 28
Programski jazik C PISI
38
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
i broja~ vo intervalot
pom
pomo{na promenliva vo koja se pomni brojot ~ij zbir na deliteli e najgolem
j deliteli na broj od intervalot
zbird zbir na deliteli max
najgolema vrednost od zbirot na delitelite
#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);
Programski jazik C PISI
39
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.
Programski jazik C PISI
40
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
i broja~
ost ostatok pri deleweto na brojot x so brojot y
r cifra od rezultatot
#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; }
Programski jazik C PISI
41
_______________________________________________________ Test primer: VLEZ: Vnesete dva broja: 22 7 Na kolku decimali da se presmeta: 8 Programata pe~ati: 22/7=3.14285714
Programski jazik C PISI
42
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
a,b,c strani na triagolnikot
s vrednosta s vo Heronovata formula
p plo{tina na triagolnikot
#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
Programski jazik C PISI
43
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, g1
datum na ra|awe (den, mesec i godina)
d2,m2, g2
dene{en datum (den, mesec i godina)
d3,m3,g3 starost vo denovi, meseci i godini
#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; }
Programski jazik C PISI
44
_______________________________________________________ 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.
Programski jazik C PISI
45
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
x vrednost za 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
Programski jazik C PISI
46
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
x1,y1,r1 koordinati na centarot i radiusot na prvata kru`nica
x2,y2,r2 koordinati na centarot i radiusot na vtorata kru`nica
d rastojanie pome|u 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))
Programski jazik C PISI
47
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.
Programski jazik C PISI
48
6. Da se napi{e programa vo programskiot jazik C so koja }e se
presmeta vrednosta na izrazot n
n nE
+= 11 za n=1,2,3,... se
dodeka e ispolnet uslovot ε<− −1nn EE . (Vrednosta na ε se
vnesuva preku tastatura). Re{enie:
Vlezni promenlivi Izlezni promenlivi
e vrednost za to~nost do koja }e se proveruva
i broja~ vo intervalot
prethodna prethodna vrednost na E
x vrednost na sekoj ~len od razvojot E koja se stepenuva na n
E vrednost na izrazot
#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; }
Programski jazik C PISI
49
_______________________________________________________ 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
Programski jazik C PISI
50
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
brojbank vkupen broj na banknoti suma vrednost na sumata
bank10 broj na banknoti od po 10 denari
bank20 broj na banknoti od po 20 denari pom
pomo{na promenliva vo koja se pomni vkupnata suma bank50
broj na banknoti od 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);
Programski jazik C PISI
51
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
Programski jazik C PISI
52
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: nnxxxGS ⋅⋅⋅= L21 ).
Re{enie:
Vlezni promenlivi Izlezni promenlivi
n vkupen broj na broevi
i broja~
x proizvolen broj
proizvod proizvod od broevite
t me|uvrednost vo presmetkite
gsredina geometriska sredina od n broevi
#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"); }
Programski jazik C PISI
53
_______________________________________________________ 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
Programski jazik C PISI
54
9. Da se napi{e programa vo programskiot jazik C so koja }e se pronajdat site re{enija na kvadratnata ravenka
02 =+⋅+⋅ cxbxa . Re{enie:
Vlezni promenlivi Izlezni promenlivi
a vrednost na koeficientot pred kvadratniot ~len
koren1 prvoto realno re{enie na kvad-ratnata ravenka
b vrednost na koeficientot pred linearniot ~len
koren 2 vtoroto realno re{enie na kvad-ratnata ravenka
c vrednost na slobodniot ~len
re
realen del od kompleksnoto re-{enie na kvad-ratnata ravenka
d vrednost na diskriminantata na kvadratnata ravenka
im
imaginarniot del od kompleksnoto re{enie na 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);
Programski jazik C PISI
55
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
Programski jazik C PISI
56
10. Da se napi{e programa vo programskiot jazik C so koja }e se
presmeta vrednosta na izrazot 444 3444 21
L
n
222 +++ .
Re{enie:
Vlezni promenlivi Izlezni promenlivi
n vkupen broj na koreni
i broja~
zbir me|uvrednost pri presmetkite
koren vrednost na izrazot
#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
Programski jazik C PISI
57
11. Da se napi{e funkcija vo programskiot jazik C {to prima dva parametri x i n i vra}a vrednost :
( )
<+
+−
−
≥+
−+= +−
+
0,11
0,211
2
xn
x
n
x
xn
x
n
xx
xf nn
nn
. Potoa da se sostavi programa {to
}e ja tabelira ovaa funkcija za vrednost na n koja se vnesuva
preku tastatura vo interval [ ]4,4−∈x , so ~ekor 0.5.
Re{enie:
Vlezni promenlivi Izlezni promenlivi
n vrednost na parametarot n
x broja~ vo intervalot
y vrednost na funkcijata
#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");
Programski jazik C PISI
58
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 ______________________________________
Programski jazik C PISI
59
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
a[100] niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n brojot na elementi na 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--;
Programski jazik C PISI
60
} 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
Programski jazik C PISI
61
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
a[100],b[100]
nizi od celi broevi koi mo`e da imaat najmnogu 100 elementi
n brojot na elementite vo nizata
x elementot {to treba da se izbri{e od nizata
i broja~ vo prvata niza
j broja~ vo vtorata niza
br broja~ so koj se vr{i 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)
Programski jazik C PISI
62
{ 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
Programski jazik C PISI
63
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
a[100]
nizi od celi broevi koi mo`e da imaat najmnogu 100 elementi
n brojot na elementite vo nizata
i broja~ vo nizata
pom kvadraten koren od elementite od 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; }
Programski jazik C PISI
64
_______________________________________________________ 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.
Programski jazik C PISI
65
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
min najmaliot element a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
max najgolemiot element
n brojot na elementite vo nizata
brMin broj na pojavuvawa na najmaliot element
i broja~ vo nizata brMax
broj na pojavuvawa 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++;
Programski jazik C PISI
66
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.
Programski jazik C PISI
67
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
pom element od nizata najblizok do brojot m a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n brojot na elementite vo nizata
i broja~ vo nizata
m proizvolen broj
ras razlika pome|u vrednosta vo pom i brojot m
#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];
Programski jazik C PISI
68
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.
Programski jazik C PISI
69
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n brojot na elementite vo nizata
i broja~ vo nizata
m proizvolen broj koj se bara
br broj na pojavuvawa na brojot m
#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++; } }
Programski jazik C PISI
70
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.
Programski jazik C PISI
71
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
str[20]
niza od karakteri koja mo`e da ima najmnogu 20 karakteri
ch element od nizata
i broja~ vo nizata
a bukva koja se proveruva
br broj na pojavuvawe na bukvata
#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; }
Programski jazik C PISI
72
_______________________________________________________ Test primer: VLEZ: Vnesete go zborot: Makedonija Vnesete ja bukvata: a Programata pe~ati: Bukvata a se pojavila 2 pati
Programski jazik C PISI
73
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
zbor[20]
niza od karakteri koja mo`e da ima najmnogu 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; }
Programski jazik C PISI
74
_______________________________________________________ Test primer: VLEZ: Vnesete go zborot: kompJutER Programata pe~ati: Normaliziraniot zbor e Kompjuter
Programski jazik C PISI
75
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
zbor[20]
niza od karakteri koja mo`e da ima najmnogu 20 karakteri
a element od nizata
i broja~ vo nizata
tocno
prima vrednost 1 ako zborot e to~no napi{an 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++; }
Programski jazik C PISI
76
} 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.
Programski jazik C PISI
77
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
zbor[20]
niza od karakteri koja mo`e da ima najmnogu 20 karakteri
a element od nizata
i,j broja~i vo nizata
tocno
prima vrednost 1 ako zborot e palindrom i 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);
Programski jazik C PISI
78
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.
Programski jazik C PISI
79
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
a[100],b[100] c[100]
nizi od celi broevi koi mo`e da imaat najmnogu 100 elementi
n broj na elementi vo prvata niza
m elementi vo vtorata 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++)
Programski jazik C PISI
80
{ 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; }
Programski jazik C PISI
81
_______________________________________________________ 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
Programski jazik C PISI
82
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
a[100],b[100] c[100]
nizi od celi broevi koi mo`e da imaat najmnogu 100 elementi
n broj na elementi vo prvata niza
m elementi vo vtorata 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])
Programski jazik C PISI
83
{ 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
Programski jazik C PISI
84
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
a[100] b[100] c[100]
nizi od celi broevi koi mo`e da imaat najmnogu 100 ele-menti
n broj na elementi vo prvata niza
m elementi vo vtorata niza
i,j,k,p broja~i vo intervalot
nasol
prima vrednost 1 ako se pronajdat zaedni~ki 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]); }
Programski jazik C PISI
85
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; }
Programski jazik C PISI
86
_______________________________________________________ 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
Programski jazik C PISI
87
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo prvata niza
k vrednost za pomestuvawe
i,j broja~i vo intervalot
pom pomo{na promenliva 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];
Programski jazik C PISI
88
} 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
Programski jazik C PISI
89
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo prvata niza
i,j broja~i vo nizata
pom pomo{na promenliva vo koja se pomni dol`inata na podnizata
poz1 po~etok na podnizata
dolz dol`ina 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++;
Programski jazik C PISI
90
} 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
Programski jazik C PISI
91
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
n broj na elementi vo nizata
i broja~ vo intervalot
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 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
Programski jazik C PISI
92
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo vleznata niza
k broj na elementi {to treba da se pronajdat
i,j broja~i vo nizata
pom pomo{na promenliva vo koja se pomni element od nizata za smena
b[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
#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++)
Programski jazik C PISI
93
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
Programski jazik C PISI
94
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
max najgolem element vo nizata
br broj na pojavuvawe na najgolemiot element vo 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; }
Programski jazik C PISI
95
_______________________________________________________ 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.
Programski jazik C PISI
96
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo 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]);
Programski jazik C PISI
97
} 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
Programski jazik C PISI
98
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo 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]);
Programski jazik C PISI
99
} 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
Programski jazik C PISI
100
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na kandidati
i broja~ vo nizata
min najmal broj poeni potrebni za polo`uvawe
vk vkupen broj na poeni na site studenti koi polo`ile
br broj na kandidati 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)
Programski jazik C PISI
101
{ 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.
Programski jazik C PISI
102
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo 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; }
Programski jazik C PISI
103
_______________________________________________________ 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
Programski jazik C PISI
104
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
a[100] niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
maxPoz najgolema pozicija na koja se javuva elementot x
i broja~ vo nizata
x vrednost na elementot koja se bara
minPoz najmala pozicija na koja se javuva elementot x
#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) {
Programski jazik C PISI
105
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.
Programski jazik C PISI
106
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
n broj na elementi vo nizata
i broja~ vo nizata
ps parcijalna suma
s vkupna suma koja go dava n-iot element
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
#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
Programski jazik C PISI
107
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
a[100] niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
pom pomo{na promenliva vo koja se pomni razlikata
raz razlika pome|u dva sosedni elementi vo nizata
#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);
Programski jazik C PISI
108
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
Programski jazik C PISI
109
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
i broja~ a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
j deliteli na brojot n
x vrednost na elementot koja se bara
br broj na deliteli na brojot n
#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; }
Programski jazik C PISI
110
_______________________________________________________ Test primer: VLEZ: Vnesete priroden broj:48 Programata pe~ati: Najmal delitel e 2, a vkupno gi ima 8.
Programski jazik C PISI
111
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
a[100] niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i,j broja~i vo nizata
b[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
#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; }
Programski jazik C PISI
112
_______________________________________________________ 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
Programski jazik C PISI
113
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
a[100] niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i,j broja~i vo nizata
p pomo{na promenliva vo 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; }
Programski jazik C PISI
114
_______________________________________________________ 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
Programski jazik C PISI
115
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
a[100], b[100]
nizi od celi broevi koi mo`e da imaat najmnogu 100 elementi
n broj na elementi vo nizite
i broja~i vo nizite
c[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
#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; }
Programski jazik C PISI
116
_______________________________________________________ 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
Programski jazik C PISI
117
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
a[100], b[100]
nizi od celi broevi koi mo`e da imaat najmnogu 100 elementi
n broj na elementi vo nizite
i broja~i vo nizite
c[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
#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; }
Programski jazik C PISI
118
_______________________________________________________ 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
Programski jazik C PISI
119
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
m red na prostiot na broj
prost prima vrednost 1 ako brojot e prost ili 0 ako ne e prosr broj
i,k broja~i
j deliteli na brojot
b[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
#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; }
Programski jazik C PISI
120
_______________________________________________________ Test primer: VLEZ: Koj po red prost priroden broj se bara? 15 Programata pe~ati: Brojot e: 47
Programski jazik C PISI
121
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
a[100],
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo 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; }
Programski jazik C PISI
122
_______________________________________________________ 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.
Programski jazik C PISI
123
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i,j broja~i vo nizata
x po~etok na podnizata za podreduvawe
y kraj na podnizata za podreduvawe
pom
pomo{na promenliva vo koja se pomnat 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++)
Programski jazik C PISI
124
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: 1 4 Programata pe~ati: 5 1 4 8 10 2
Programski jazik C PISI
125
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo 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; }
Programski jazik C PISI
126
_______________________________________________________ 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.
Programski jazik C PISI
127
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
j broj na elementi vo 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++)
Programski jazik C PISI
128
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
Programski jazik C PISI
129
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
a[3] niza od 3 realni broevi
pom
pomo{na promenliva vo koja se ~uvaat 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; }
Programski jazik C PISI
130
_______________________________________________________ Test primer: VLEZ: Vnesete gi trite broja:120 45 39 Programata pe~ati: Podredeni se: 39.0 45.0 120.0
Programski jazik C PISI
131
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
n
aaa n+++ L21 ).
Re{enie:
Vlezni promenlivi Izlezni promenlivi
a[100] niza od realni broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
j broj na elementi vo izleznata niza
i broja~ vo nizite
as aritmeti~ka sredina na elementite od niza
b[100]
niza od realni broevi koja mo`e da ima najmnogu 100 elementi
#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++) {
Programski jazik C PISI
132
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
Programski jazik C PISI
133
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
a[100]b[100]
nizi od realni broevi koi mo`e da imaat najmnogu 100 elementi
n broj na elementi vo prvata niza
m broj na elementi vo 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])
Programski jazik C PISI
134
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.
Programski jazik C PISI
135
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
a[100] niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
br
broj na promeni na znacite pome|u dva sosedni elementi 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; }
Programski jazik C PISI
136
_______________________________________________________ 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
Programski jazik C PISI
137
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
a[100] niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~i vo nizite
br broj na negativni elementi vo nizata
#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; }
Programski jazik C PISI
138
_______________________________________________________ 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.
Programski jazik C PISI
139
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
min element so najmala vrednost vo nizata
max element so najgolema vrednost vo nizata
iMin pozicija na elemenot so najmala vrednost vo nizata
iMax
pozicija na elementot so najgolema vrednost vo nizata
pom pomo{na promenliva 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]); }
Programski jazik C PISI
140
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
Programski jazik C PISI
141
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
s suma (zbir)
n broj na elementi vo nizata
i broja~ vo nizata p proizvod
#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; }
Programski jazik C PISI
142
_______________________________________________________ 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.
Programski jazik C PISI
143
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
s suma (zbir)
#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; }
Programski jazik C PISI
144
_______________________________________________________ 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.
Programski jazik C PISI
145
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
a[100] b[100]
nizi od celi broevi koi mo`e da imaat najmnogu 100 elementi
n broj na elementi vo nizite
i broja~ vo nizata
p proizvod
s suma (zbir)
#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; }
Programski jazik C PISI
146
_______________________________________________________ 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.
Programski jazik C PISI
147
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo 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; }
Programski jazik C PISI
148
_______________________________________________________ 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
Programski jazik C PISI
149
46. Da se napi{e programa vo programskiot jazik C so koja za dadena niza }e se presmeta vrednosta na funkcijata
∑=
⋅=n
iix
nF
1
21 kade {to xi gi pretstavuva ~lenovite na nizata.
Re{enie:
Vlezni promenlivi Izlezni promenlivi
a[50]
niza od celi broevi koja mo`e da ima najmnogu 50 elementi
n broj na elementi vo nizata
j broja~
suma zbir
F vrednost na funkcijata
#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; }
Programski jazik C PISI
150
_______________________________________________________ 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
Programski jazik C PISI
151
47. Da se napi{e programa vo programskiot jazik C so koja }e
se pronajde onaa podniza vo nizata broevi [ ]nia ~ij zbir na
elementi e najblizok do vrednosta v koja se vnesuva preku tastatura. Re{enie:
Vlezni promenlivi Izlezni promenlivi
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
j broja~ vo nizata
v vrednost koja se bara
brclen broj na ~lenovi vo podnizata
brojac broja~ vo podnizata
min najmala vrednost
poz pozicija od kade zapo~nuva podnizata
indeks pozicija za izleznata podniza
razlika razlika pome|u v i suma
suma zbir na elementite vo podnizata
#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++) {
Programski jazik C PISI
152
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; }
Programski jazik C PISI
153
_______________________________________________________ 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
Programski jazik C PISI
154
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
xk[50] yk[50]
nizi od celi broevi vo koi se ~uvaat koordinatite na to~kite koi mo`e da imaat najmnogu 50 elementi
d[50]
niza od realni broevi koja mo`e da ima najmnogu 50 elementi i vo nea se ~uvaat rastojanijata na soodvetnata to~ka do ostanatite to~ki
max najgolemo rastojanie
poz pozicija na to~kata {to go ispolnuva uslovot
#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++)
Programski jazik C PISI
155
{ 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; }
Programski jazik C PISI
156
_______________________________________________________ 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.
Programski jazik C PISI
157
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
se presmetuva spored formulata n
aaa n+++ L21 ).Potoa
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
a[100]
niza od realni broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
b[100] niza od realni broevi koja mo`e da ima najmnogu 100 elementi
brojac broj na ~lenovi vo izleznata niza
zbir zbir na elementite od nizata
prosek aritmeti~ka sredina na elementite vo 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++)
Programski jazik C PISI
158
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
Programski jazik C PISI
159
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
a[100]
niza od realni broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
max najgolema razlika me|u dva sosedni elementi
i broja~ vo nizata
razlika razlika me|u dva sosedni elementi
poz pozicija na prviot element koj go zadovoluva uslovot
#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;
Programski jazik C PISI
160
} } 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].
Programski jazik C PISI
161
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
a[100][100] b[100][100]
matrici od realni broevi koi mo`e da imaat najmnogu 100 redovi i 100 koloni
m broj na redovi vo matricata
n broj na koloni vo matricata
i,j broja~i vo matricite
c[100][100]
matrica od realni broevi koja mo`e da ima najmnogu 100 redovi i 100 koloni
#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++)
Programski jazik C PISI
162
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:
Programski jazik C PISI
163
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
Programski jazik C PISI
164
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
a[100][100]
matrica od realni broevi koja mo`e da ima najmnogu 100 redovi i 100 koloni
n broj na redovi i koloni vo matricata
i,j broja~i vo matricata
s suma (zbir)
#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; }
Programski jazik C PISI
165
_______________________________________________________ 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
Programski jazik C PISI
166
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
a[100][100]
matrica od realni broevi koja mo`e da ima najmnogu 100 redovi i 100 koloni
n broj na redovi vo matricata
m broj na koloni vo matricata
i,j broja~i vo matricite
min element so najmala vrednost
max element so najgolema vrednost
pom pomo{na promenliva koja se upotrebuva pri smena
iMax redot vo koj se nao|aelementot so najgolema vrednost
jMax kolona vo koja se nao|a elementot so najgolema vrednost
iMin redot vo koj se nao|a elementot so najmala vrednost
jMin kolona vo koja se nao|a 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=");
Programski jazik C PISI
167
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; }
Programski jazik C PISI
168
_______________________________________________________ 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
Programski jazik C PISI
169
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
k
jkbkiajic1
]][[]][[]][[
Re{enie:
Vlezni promenlivi Izlezni promenlivi
a[100][100] b[100][100]
matrici od realni broevi koi mo`e da imaat najmnogu 100 redovi i 100 koloni
n broj na redovi vo prvata matrica
m broj na koloni vo vtorata matrica
p broj na koloni vo vtorata matrica
i,j,k broja~i vo matricite
c[100][100]
matrica od realni broevi koja mo`e da ima najmnogu 100 redovi i 100 koloni
#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]);
Programski jazik C PISI
170
} 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; }
Programski jazik C PISI
171
_______________________________________________________ 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
Programski jazik C PISI
172
5. Da se napi{e programa vo programskiot jazik C so koja }e se
proveri dali matricata CBAX +⋅= 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
a[25][25] b[25][25] c[25][25]
matrici od celi broevi koi mo`e da imaat najmnogu po 25 redovi i 25 koloni
n broj na redovi i koloni vo matricata
i,j,k broja~i vo matricata
dtr
prima vrednost 1 ako matricata e dolnotriagolna i 0 ako matricata ne e dolnotriagolna
x[25][25]
matrica od celi broevi koja mo`e da ima najmnogu po 25 redovi i 25 koloni
#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]);
Programski jazik C PISI
173
} } 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;
Programski jazik C PISI
174
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
Programski jazik C PISI
175
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.
Programski jazik C PISI
176
6. Dadena e kvadratnata matrica [ ]mxnijaA = . Da se napi{e
programa vo programskiot jazik C so koja }e se presmeta
vrednosta na funkcijata: ∏ ∏∏= ==
+=
n
i
n
jji
n
jij aaf
1 11
.
Re{enie:
Vlezni promenlivi Izlezni promenlivi
a[25][25]
matrica od celi broevi koja mo`e da ima najmnogu 25 redovi i 25 koloni
n broj na redovi i koloni vo matricata
i,j broja~i vo matricata
proizvod1 proizvod na elementite po redovi
proizvod 2 proizvod na elementite po koloni
proizvod vrednost na funkcija-ta f
#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]); }
Programski jazik C PISI
177
} 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
Programski jazik C PISI
178
7. Kvadratna matrica so ist broj redici i koloni se narekuva simetri~na ako A ij=Aji za sekoe ji ≠ . 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
a[25][25]
matrica od celi broevi koja mo`e da ima najmnogu 25 redovi i 25 koloni
n broj na redovi i koloni vo matricata
i,j broja~i vo matricata
simetricna
prima vrednost 1 ako matricata e 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++) {
Programski jazik C PISI
179
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; }
Programski jazik C PISI
180
_______________________________________________________ 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.
Programski jazik C PISI
181
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
a[25][25]
matrica od celi broevi koja mo`e da ima najmnogu 25 redovi i 25 koloni
n broj na redovi i koloni vo matricata
i,j broja~i vo matricata
pom
pomo{na promen-liva vo koja se 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++)
Programski jazik C PISI
182
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; }
Programski jazik C PISI
183
_______________________________________________________ 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
Programski jazik C PISI
184
9. Da se napi{e programa vo programskiot jazik C so koja elementite od dadena matrica }e se pomestat na sledniot na~in:
→
876
543
219
987
654
321
Re{enie:
Vlezni promenlivi Izlezni promenlivi
a[10][10]
matrica od celi broevi koja mo`e da ima najmnogu 10 redovi i 10 koloni
b[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na redovi i koloni na matricata
i,j broja~i
brojac broja~ vo nizata
pom
pomo{na promenliva vo koja se pomnat 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++) {
Programski jazik C PISI
185
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");
Programski jazik C PISI
186
} 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
Programski jazik C PISI
187
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
sgl zbir na elementite od glavnata dijagonala a[25][25]
matrica od celi broevi koja mo`e da ima najmnogu 25 redovi in 25 koloni ssp
zbir na elementite od eporednata dijagonala
spg zbir na elementite pod glavnata dijagonala
n broj na redovi i koloni vo matricata
sng zbir na elementite nad glavnata dijagonala
sps zbir na elementite pod sporednata dijagonala
i,j broja~i vo matricata
sns zbir na elementite 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++) {
Programski jazik C PISI
188
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");
Programski jazik C PISI
189
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
Programski jazik C PISI
190
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
a[25][25]
matrica od celi broevi koja mo`e da ima najmnogu 25 redovi in 25 koloni
max element so najgolema vrednost
m broj na redovi vo matricata
pozr red vo koj se nao|a elementot so najgole-ma vrednost
n broj na koloni vo matricata
i,j broja~i pozk
kolona vo koja se nao|a elementot so 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;
Programski jazik C PISI
191
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.
Programski jazik C PISI
192
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
a[25][25]
matrica od celi broevi koja mo`e da ima najmnogu 25 redovi in 25 koloni
b[25]
niza od celi broevi koja mo`e da ima najmnogu 25 elementi
m broj na redovi vo matricata
max
element so najgolema vrednost od najmalite vrednosti po redovi
n broj na koloni vo matricata
i,j broja~i
min elementi so najmala vrednost po redovi
poz pozicija na brojot koj se ~uva vo max
#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);
Programski jazik C PISI
193
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; }
Programski jazik C PISI
194
_______________________________________________________ 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.
Programski jazik C PISI
195
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
a[25][25]
matrica od celi broevi koja mo`e da ima najmnogu 25 redovi in 25 koloni
m broj na redovi vo matricata
n broj na koloni vo matricata
i,j broja~i vo matricata
t[25][25]
matrica od celi broevi koja mo`e da ima najmnogu 25 redovi in 25 koloni
#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++) {
Programski jazik C PISI
196
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; }
Programski jazik C PISI
197
_______________________________________________________ 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
Programski jazik C PISI
198
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
i broja~ vo interval s suma (zbir)
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.
Programski jazik C PISI
199
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.
Programski jazik C PISI
200
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:
nnnn
n
kcbakabc L43421 L +++= ).
Re{enie:
Vlezni promenlivi Izlezni promenlivi
poc po~etok na interval
kraj kraj na interval br brojot na cifrite
pom pomo{na promenliva
i broja~ vo interval
a cifri na sekoj broj od intervalot
s
zbirot na site cifri stepenuvani na broj koj e ednakov so brojot na cifrite
stepen(n,m) funkcija koja ja presmetuva vrednosta nm
brcif(n) funkcija koja go opredeluva brojot na cifrite na 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; }
Programski jazik C PISI
201
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
Programski jazik C PISI
202
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
a binarniot broj
dek(n) funkcija so koja se vr{i pretvoruvawe na daden 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.
Programski jazik C PISI
203
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
a[100],b[100]
nizi od celi broevi koi mo`e da imaat najmnogu 100 elementi
n brojot na elementite vo nizata
x elementot {to treba da se izbri{e od nizata
i broja~ vo nizata
br broj na elementi so paren broj na cifri
cifri (n) funkcija so koja se opredeluva brojot na cifrite 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]);
Programski jazik C PISI
204
} 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.
Programski jazik C PISI
205
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
broj(n) funkcija koja go dava brojot na cifrite na daden broj n
zbir(n) Funkcija koja go presmetuva zbirot od cifrite na 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);
Programski jazik C PISI
206
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
Programski jazik C PISI
207
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
Programski jazik C PISI
208
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; }
Programski jazik C PISI
209
_______________________________________________________ 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
Programski jazik C PISI
210
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
a proizvolen pozitiven 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
Programski jazik C PISI
211
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo 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]); }
Programski jazik C PISI
212
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.
Programski jazik C PISI
213
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
c NZD od imenitelot i 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; }
Programski jazik C PISI
214
_______________________________________________________ Test primer: VLEZ: Vnesete broitel na dropkata: 40 Vnesete imenitel na dropkata: 52 Programata pe~ati: Dropkata skratena e 10/13
Programski jazik C PISI
215
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
br1 broitel na prvata dropka
im1 imenitel na prvata dropka
br2 broitel na vtorata dropka
br3 broitel na zbirot od dvete dropki
im2 imenitel na vtorata dropka
c NZD od imenitelot i broitelot na dropkata
im3 imenitel na zbirot od dvete dropki
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; }
Programski jazik C PISI
216
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
Programski jazik C PISI
217
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
br1 broitel na prvata dropka
im1 imenitel na prvata dropka
br2 broitel na vtorata dropka
br3 broitel na razlikata od dvete dropki
im2 imenitel na vtorata dropka
c NZD od imenitelot i broitelot na dropkata
im3 imenitel na razlikata od dvete dropki
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;
Programski jazik C PISI
218
} 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
Programski jazik C PISI
219
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
br1 broitel na prvata dropka
im1 imenitel na prvata dropka
br2 broitel na vtorata dropka
br3 broitel na proizvodot od dvete dropki
im2 imenitel na vtorata dropka
c NZD od imenitelot i broitelot na dropkata
im3 imenitel na proizvodot od dvete dropki
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;
Programski jazik C PISI
220
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
Programski jazik C PISI
221
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
br1 broitel na prvata dropka
im1 imenitel na prvata dropka
br2 broitel na vtorata dropka
br3 broitel na koli~nikot od dvete dropki
im2 imenitel na vtorata dropka
c NZD od imenitelot i broitelot na dropkata
im3 imenitel na koli~nikot od dvete dropki
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);
Programski jazik C PISI
222
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
Programski jazik C PISI
223
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
brp broj na elementi so paren broj na cifri
n broj na elementi vo nizata
i broja~ vo nizata brnp
broj na elementi so neparen broj na cifri
broj(n) funkcija koja go odreduva brojot na cifrite na 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 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]); }
Programski jazik C PISI
224
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.
Programski jazik C PISI
225
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
max(a,b,c) funkcija koja go pronao|a najgolemiot broj od tri 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
Programski jazik C PISI
226
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
a,b proizvolni dekadni broevi
m,n binarni zapisi na dekadnite broevi a i b
ost1 cifra od binarniot broj m
ost2 cifra od binarniot broj n
ost cifra od rezultatot
poz te`inska pozicija na cifrite
rez zbir na dvata binarni broevi m i n
bin(n) funkcija koja vr{i pretvorawe na daden dekaden broj 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()
Programski jazik C PISI
227
{ 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
Programski jazik C PISI
228
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
a[100] niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo 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++) {
Programski jazik C PISI
229
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
Programski jazik C PISI
230
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
pom NZD na elementite vo nizata
nzd(m,n) funkcija koja presmetuva NZD na dva proizvolni 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; }
Programski jazik C PISI
231
_______________________________________________________ Test primer: VLEZ: Od kolku broevi da se bara NZD: 5 Vnesete gi broevite: 40 25 60 15 35 Programata pe~ati: NZD=5
Programski jazik C PISI
232
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
nzs NZS na elementite vo nizata
nzs(m,n) funkcija koja presmetuva NZS na dva proizvolni broevi m i n
vnesete (a[],n)
funkcija so koja se vnesuvaat elementi vo edna niza 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; }
Programski jazik C PISI
233
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
Programski jazik C PISI
234
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
poc po~etok na intervalot
kraj kraj na intervalot
i broja~ vo intervalot
obr(n) funkcija koja go opredeluva obratniot broj na daden 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; }
Programski jazik C PISI
235
_______________________________________________________ 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
Programski jazik C PISI
236
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
n kraj na intervalot za proveruvawe
i broja~ vo intervalot
prost(n) funkcija koja proveruva dali eden daden broj n e 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; }
Programski jazik C PISI
237
_______________________________________________________ Test primer: VLEZ: Vnesete n=20 Programata pe~ati: 2 3 5 7 11 13 17 19
Programski jazik C PISI
238
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 (n,m)
funkcija {to presmetuva 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)); } 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
Programski jazik C PISI
239
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
m eksponent
stepen (n,m)
funkcija {to presmetuva 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)); } 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: ");
Programski jazik C PISI
240
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
Programski jazik C PISI
241
26. Da se napi{e programa vo programskiot jazik C so koja }e se
presmeta sumata: 12322110 −− ⋅++⋅+⋅+⋅ nn aaaaaaaa L
Re{enie:
Vlezni promenlivi Izlezni promenlivi
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
s suma(zbir)
#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
Programski jazik C PISI
242
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:
n
aaa n+++ L21 ).
Re{enie:
Vlezni promenlivi Izlezni promenlivi
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
ar1 aritmeti~ka sredina na parnite elementi
brp broj na parni elementi vo nizata
brn broj na neparni elementi vo nizata
sp suma na parnite elementi
snp suma na neparnite elementi vo nizata
ar2 aritmeti~ka sredina na neparnite elementi
#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) {
Programski jazik C PISI
243
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.
Programski jazik C PISI
244
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
x broj koj pretstavuva osnova vo sumata
n kraj na intervalot
i broja~ vo intervalot
s suma (zbir)
stepen (n,m)
funkcija {to presmetuva 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)); } 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; }
Programski jazik C PISI
245
_______________________________________________________ Test primer: VLEZ: Vnesete broj: 3 Vnesete n: 4 Programata pe~ati: Sumata e: 120
Programski jazik C PISI
246
29. Da se napi{e programa vo programskiot jazik C so koja }e se presmeta vrednosta na funkcijata cos(x) spored formulata
....!6!4!2
1cos642
+−+−= xxxx so upotreba na prvite n ~lenovi.
Re{enie:
Vlezni promenlivi Izlezni promenlivi
pi konstantata π
alfa agol vo stepeni
alfarad agol vo radijani
i broja~
n kraj na interval
br vrednost na koja se stepenuva vrednosta (-1)
pom pomo{na promenliva vo koja se pomni agolot
cosinus vrednosta cos(alfa)
faktoriel (x)
funkcija {to presemtuva faktoriel na daden broj 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;
Programski jazik C PISI
247
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
Programski jazik C PISI
248
30. Da se napi{e programa vo programskiot jazik C so koja }e se
presmeta sumata .....!4
1
!3
1
!2
11 ++++=nS se dodeka e ispolnet
uslovot ε<− −1nn SS .(Vrednosta na ε se vnesuva preku
tastatura). Re{enie:
Vlezni promenlivi Izlezni promenlivi
granica vrednost za to~nost do koja }e se proveruva
i broja~ vo intervalot
prethodna prethodna vrednost na suma
suma suma (zbir)
faktoriel (x)
funkcija {to presmetuva faktoriel na daden broj 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;
}
Programski jazik C PISI
249
_______________________________________________________ Test primer:
VLEZ: Vnesete ja granicata za presmetuvawe na sumata: 0.0001 Vrednosta na sumata iznesuva 1.718279
Programski jazik C PISI
250
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
rezultat
prima vrednost 1 dokolku daden broj go zadovoluva uslovot i 0 dokolku daden broj ne go zadovoluva uslovot
cif(x) funkcija koja {to proveruva dali cifrite na daden 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; }
Programski jazik C PISI
251
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
Programski jazik C PISI
252
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
prost(x) funkcija koja proveruva dali daden broj x e prost broj
zbircifri(y) funkcija koja go presmetuva zbrot od cifrite na daden broj y
proizvodcifri (z)
funkcija koja go presmetuva proizvodot od 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)
Programski jazik C PISI
253
{ 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
Programski jazik C PISI
254
33. Da se sostavi programa vo programskiot jazik C so koja }e se
presmeta sumata ∑= +
n
ii in
i
1 !
! .
Re{enie:
Vlezni promenlivi Izlezni promenlivi
n broj na ~lenovi vo zbirot
i broja~
suma suma (zbir)
faktoriel (x)
funkcija {to presmetuva faktoriel na daden broj 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; }
Programski jazik C PISI
255
_______________________________________________________ Test primer VLEZ: Vnesete kolku ~lenovi da ima sumata 5 Sumata iznesuva 0.3605022
Programski jazik C PISI
256
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
n proizvolen broj m
broj koj se dobiva kako zbir na brojot n i negoviot obraten broj
kraj
dobiva vrednost 1 koga ne e ispolnet uslovot i 0 koga toj uslov e ispolnet
brojac broj na svrtuvawa
obraten (x)
funkcija koja go presmetuva obratniot broj na daden 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 {
Programski jazik C PISI
257
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.
Programski jazik C PISI
258
35. Da se napi{e programa vo programskiot jazik C so koja }e se
presmeta binomniot koeficient ( )!!
!
knk
n
k
n
−⋅=
. Broevite n i k
se vnesuvaat preku tastatura. Re{enie:
Vlezni promenlivi Izlezni promenlivi
n vrednost na grupata
k vrednost na klasata kf
vrednost na binomniot koeficient
faktoriel (x)
funkcija {to presmetuva faktoriel na daden broj 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;
}
Programski jazik C PISI
259
_______________________________________________________ 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
Programski jazik C PISI
260
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
m broj koj e pogolem od n
k
prima vrednost 1 ako brojot m e prost broj i 0 ako ne e prost broj
razlika razlika pome|u broevite m ako e prost broj i n
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) {
Programski jazik C PISI
261
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.
Programski jazik C PISI
262
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
i broja~ vo interval
brojac broj na broevi koi go ispolnuvaat zadadeniot uslov
prost(x) funkcija koja proveruva dali daden broj x e prost broj
zbircifri(y) funkcija koja go presmetuva zbirot od cifrite na 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++)
Programski jazik C PISI
263
{ 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
Programski jazik C PISI
264
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
zbor[20] copy[20]
nizi od karakteri koi mo`e da imaat najmnogu 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;
Programski jazik C PISI
265
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
Programski jazik C PISI
266
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, max3,
x
proizvolni broevi
sort(*a,*b,*c) funkcija koja vr{i sortirawe na tri proizvolni 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
Programski jazik C PISI
267
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; }
Programski jazik C PISI
268
_______________________________________________________ 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.
Programski jazik C PISI
269
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
a[100]
niza od celi broevi koja mo`e da ima najmnogu 100 elementi
n broj na elementi vo nizata
i broja~ vo nizata
vnesete (a[],n)
funkcija so koja se vr{i vnesuvawe na edna niza od n elementi
pecati (a[],n)
Funkcija so koja se pe~ati edna niza od n elementi
smeni (*m,*n)
funkcija so koja se vr{i promena na mestata na elementite od nizata
simplesort(a[],n)
funkcija so koja se sortira niza
#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++)
Programski jazik C PISI
270
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; }
Programski jazik C PISI
271
_______________________________________________________ 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
Programski jazik C PISI
272
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 (*a,*b)
funkcija so koja se vr{i promena na mestata na 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; }
Programski jazik C PISI
273
_______________________________________________________ Test primer: VLEZ: Vnesete gi trite broja: 15 -10 25 Programata pe~ati: Broevite podredeni (so smena) se: -10 15 25.