[email protected] , , …matematika.mk/wp-content/uploads/cpp_zbirka_fakultet_pisi.pdf · programski...

146
Programski jazik C++ PISI Funkcii 1 Obrazoven centar PISI+ 46 230-560, + 32 380-418 [email protected], www.pisi.com.mk, www.makedonski.mk Objektno Orientirano programirawe Zbirka re{eni zada~i C++ - ZA SITE NASOKI VO SREDNOTO OBRAZOVANIE - Za 1 god. fakultet С О Д Р Ж И Н А Рбр Тема Страна 1 Funkcii 2 2 Klasi 82

Upload: leduong

Post on 20-Aug-2018

251 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

1

Obrazoven centar „PISI“

+ 46 230-560, + 32 380-418 [email protected], www.pisi.com.mk, www.makedonski.mk

Objektno Orientirano programirawe

Zbirka re{eni zada~i

C++

- ZA SITE NASOKI VO SREDNOTO OBRAZOVANIE - Za 1 god. fakultet

С О Д Р Ж И Н А Рбр Тема Страна

1 Funkcii 2 2 Klasi 82

Page 2: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

2

1. Funkcii 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 preku tastatura. Sekoj od stepenite da se presmetuva so funkcija. Re{enie:

Vlezni promenlivi Izlezni promenlivi

n kraj na intervalot

sum vkupnata suma k stepen

i broja~ za intervalot

stepen(int x,int k) funkcija za presmetuvawe na x^k (x na stepen k)

#include <iostream> using namespace std; long stepen(int x,int k) { int i; long suma=1; for(i=0; i<k; i++) suma*=x; return suma; } int main() { int n,k,i; long sum=0; cout<<"Vnesete ja poslednata osnova: "; cin>>n; cout<<"Vnesete go stepenot : "; cin>>k; cout<<endl;

Page 3: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

3

for(i=1;i<=n;i++) sum+=stepen(i,k); cout<<"Vkupnata suma iznesuva : "<<sum<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete ja poslednata osnova : 7 Vnesete go stepenot: 3 Programata pe~ati: Vkupnata suma iznesuva 784

Page 4: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

4

2. Da se napi{e programa vo programskiot jazik C++ so koja }e se najdat i izbrojat site broevi vo daden interval koi se delivi so svoite cifri, osven nula. Da se napi{e funkcija za opredeluvawe na delivosta na broj so svoite cifri. Re{enie:

Vlezni promenlivi Izlezni promenlivi

pocetok, kraj po~etok i kraj na intervalot

sum broja~ za broevite so baranoto svojstvo

rez pomo{na promenliva

i broja~ za intervalot

dellivo(int k) funkcija za opredeluvawe dali brojot k e deliv so svoite cifri

#include <iostream> using namespace std; int dellivo(int k) { int pom=k, deliv=1, c; while(pom>0) { c=pom%10; if(c!=0) { if(k%c!=0) { deliv=0; break; } } pom/=10; } return deliv; } int main() {

Page 5: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

5

int pocetok, kraj, i, rez, sum=0; cout<<"Vnesete go pocetokot na intervalot : "; cin>>pocetok; cout<<"Vnesete go krajot na intervalot : "; cin>>kraj; cout<<endl<<"Vo intervalot od "<<pocetok<<" do "<<kraj<<" delivi so svoite cifri se slednite broevi :"<<endl; for(i=pocetok; i<=kraj; i++) { rez=dellivo(i); if(rez==1) { cout<<i<<" "; sum++; } } if(sum==0) cout<<endl<<"Nema takvi broevi vo toj interval"<<endl; else cout<<endl<<"Vkupno takvi broevi ima "<<sum<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go po~etokot na intervalot : 15 Vnesete go krajot na intervalot : 25 Programata pe~ati: Vo intervalot od 15 do 25 delivi so svoite cifri se slednite broevi : 15 20 22 24 Vkupno takvi broevi ima 4

Page 6: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

6

3. Da se napi{e programa vo programskiot jazik C++ so koja }e se najdat i izbrojat site broevi palindromi vo daden interval. Da se napi{e funkcija za opredeluvawe na sprotivniot broj na dadeniot. Re{enie:

Vlezni promenlivi Izlezni promenlivi

pocetok, kraj

po~etok i kraj na intervalot

sum broja~ za broevite palindromi

s sprotiven broj na dadeniot

i broja~ za intervalot

sprotiven (int k)

funkcija za opredeluvawe na sprotivniot broj na dadeniot.

#include <iostream> using namespace std; long sprotiven(int k) { long pom=k, p=0; int c; while(pom>0) { c=pom%10; p=p*10+c; pom/=10; } return p; } int main() { long pocetok, kraj, i, s; int sum=0; cout<<"Vnesete go pocetokot na intervalot : "; cin>>pocetok; cout<<"Vnesete go krajot na intervalot : "; cin>>kraj;

Page 7: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

7

cout<<endl<<"Vo intervalot od "<<pocetok<<" do "<<kraj<<" palindromi se slednite broevi :"<<endl; for(i=pocetok; i<=kraj; i++) { s=sprotiven(i); if(s==i) { cout<<i<<" "; sum++; } } if(sum==0) cout<<endl<<"Nema palindromi vo dadeniot interval"<<endl; else cout<<endl<<"Vkupno palindromi vo toj interval ima "<<sum<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go po~etokot na intervalot : 100 Vnesete go krajot na intervalot : 200 Programata pe~ati: Vo intervalot od 100 do 200 palindromi se slednite broevi : 101 111 121 131 141 151 161 171 181 191 Vkupno palindromi vo toj interval ima 10

Page 8: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

8

4. Da se napi{e programa vo programskiot jazik C++ so koja }e se najdat i izbrojat site prosti broevi vo daden interval . Da se napi{e funkcija za opredeluvawe dali dadeniot broj e prost. Re{enie:

Vlezni promenlivi Izlezni promenlivi

pocetok, kraj po~etok i kraj na intervalot

sum broja~ za prostite broevi

pom pomo{na promenliva

i broja~ za intervalot

prost(int k) funkcija za opredeluvawe dali dadeniot broj e prost

#include <iostream> using namespace std; bool prost(int k) { int pom=k, i; bool dali=true; for(i=2; i<=pom/2; i++) { if((pom%i)==0) { dali=false; break; } } return dali; } int main() { int pocetok, kraj, i, sum=0; bool pom; cout<<"Vnesete go pocetokot na intervalot : "; cin>>pocetok;

Page 9: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

9

cout<<"Vnesete go krajot na intervalot : "; cin>>kraj; cout<<endl<<"Vo intervalot od "<<pocetok<<" do "<<kraj<<" prosti se slednite broevi :"<<endl; for(i=pocetok; i<=kraj; i++) { pom=prost(i); if(pom) { cout<<i<<" "; sum++; } } if(sum==0) cout<<endl<<"Nema prosti broevi vo dadeniot interval"<<endl; else cout<<endl<<"Vkupno prosti broevi vo toj interval ima "<<sum<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go po~etokot na intervalot : 10 Vnesete go krajot na intervalot : 30 Programata pe~ati: Vo intervalot od 10 do 30 prosti se slednite broevi : 11 13 17 19 23 29 Vkupno prosti broevi vo toj interval ima 6

Page 10: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

10

5. Da se napi{e programa vo programskiot jazik C++ so koja }e se najdat i izbrojat site parovi broevi od daden interval ~ij{to zbir e sprotiven broj od nivnata razlika. Da se napi{e funkcija za opredeluvawe na sprotivniot broj na dadeniot. Re{enie:

Vlezni promenlivi Izlezni promenlivi

pocetok, kraj po~etok i kraj na intervalot

sum broja~ za baranite parovi broevi

s sprotivniot broj na daden broj

i, j broja~i za intervalot

sprotiven (int k)

funkcija za opredeluvawe na sprotivniot broj na dadeniot.

#include <iostream> using namespace std; int sprotiven(int k) { int pom=k, p=0, c; while(pom>0) { c=pom%10; p=p*10+c; pom/=10; } return p; } int main() { int pocetok, kraj, i, j, s, sum=0; cout<<"Vnesete go pocetokot na intervalot : "; cin>>pocetok; cout<<"Vnesete go krajot na intervalot : "; cin>>kraj; cout<<endl<<"Vo intervalot od "<<pocetok<<" do "<<kraj<<" broevi sto go zadovoluvaat uslovot se :"<<endl;

Page 11: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

11

for(i=pocetok; i<=kraj; i++) { for(j=i; j<=kraj; j++) { s=sprotiven(i*j); if(s==(i+j)) { cout<<i<<" i "<<j<<" : "<<i<<"+"<<j<<"="<<i+j<<" i "<<i<<"*"<<j<<"="<<i*j<<endl; sum++; } } } if(sum==0) cout<<"Nema takvi parovi vo dadeniot interval"<<endl; else cout<<"Vkupno takvi parovi vo toj interval ima "<<sum<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go po~etokot na intervalot : 1000 Vnesete go krajot na intervalot : 5000 Programata pe~ati: Vo intervalot od 1000 do 5000 broevi {to go zadovoluvaat uslovot se : 1320 i 4125 : 1320+4125=5445 i 1320*1425=5445000 1400 i 3725 : 1400+3725=5125 i 1400*3725=5215000 2235 i 2400 : 2235+2400=4635 i 2235*2400=5364000 Vkupno takvi parovi vo toj interval ima 3

Page 12: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

12

6. Da se napi{e programa vo programskiot jazik C++ so koja }e se najdat site broevi vo daden interval {to se ednakvi na zbirot od kubovite na svoite cifri, proizvodot od kubovite na svoite cifri, ili pak, zbirot od zbirot od kubovite na svoite cifri i proizvodot od kubovite na svoite cifri. Da se napi{at funkcii za opredeluvawe na zbirot od kubovite na cifrite i proizvodot od kubovite na cifrite na daden broj. Re{enie:

Vlezni promenlivi Izlezni promenlivi

pocetok, kraj po~etok i kraj na intervalot

sum broja~ za baranite broevi

s pomo{na promenliva

i broja~ za intervalot

zbir(int k) funkcija za nao|awe na zbirot od kubovite na cifrite na daden broj

pecatiZbir(int k) funkcija za pe~atewe na zbirot od kubovite na cifrite na daden broj

proizvod(int k) funkcija za nao|awe na proizvodot od kubovite na cifrite na daden broj

pecatiProizvod(int k) funkcija za pe~atewe na proizvodot od kubovite na cifrite na daden broj

#include <iostream> using namespace std; int zbir(int k) { int pom=k, z=0, cifra; while(pom>0) { cifra=pom%10; z+=cifra*cifra*cifra; pom/=10; }

Page 13: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

13

return z; } void pecatiZbir(int k) { int pom=k, cifra; while(pom>0) { cifra=pom%10; cout<<cifra<<"*"<<cifra<<"*"<<cifra<<"+"; pom/=10; } cout<<"0"; } int proizvod(int k) { int pom=k, p=1, cifra; while(pom>0) { cifra=pom%10; p*=cifra*cifra*cifra; pom/=10; } return p; } void pecatiProizvod(int k) { int pom=k, cifra; while(pom>0) { cifra=pom%10; cout<<"("<<cifra<<"*"<<cifra<<"*"<<cifra<<")"<<"*"; pom/=10; } cout<<"1"; } int main() { int pocetok, kraj, i, s, sum=0; cout<<"Vnesete go pocetokot na intervalot : "; cin>>pocetok; cout<<"Vnesete go krajot na intervalot : "; cin>>kraj;

Page 14: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

14

cout<<"\nBroevi ednakvi na zbirot od kubovite na cifrite : "; for(i=pocetok; i<=kraj; i++) { s=zbir(i); if(s==i) { cout<<endl<<i<<" = "; pecatiZbir(i); sum++; } } if(sum==0) cout<<"\nNema takvi broevi vo dadeniot interval \n"<<endl; else cout<<"\nVkupno takvi broevi vo toj interval ima "<<sum<<endl; sum=0; cout<<"\nBroevi ednakvi na proizvodot od kubovite na cifrite : "; for(i=pocetok; i<=kraj; i++) { s=proizvod(i); if(s==i) { cout<<endl<<i<<" = "; pecatiProizvod(i); sum++; } } if(sum==0) cout<<"\nNema takvi broevi vo dadeniot interval"<<endl; else cout<<"\nVkupno takvi broevi vo toj interval ima "<<sum<<endl; sum=0; cout<<"\nBroevi ednakvi na zbirot od prethodnite dve sumi : "; for(i=pocetok; i<=kraj; i++) { s=zbir(i)+proizvod(i); if(s==i) { cout<<endl<<i<<" = "; pecatiZbir(i); cout<<" + "; pecatiProizvod(i);

Page 15: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

15

sum++; } } if(sum==0) cout<<"\nNema takvi broevi vo dadeniot interval"<<endl; else cout<<"\nVkupno takvi broevi vo toj interval ima "<<sum<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go po~etokot na intervalot : 100 Vnesete go krajot na intervalot : 400 Programata pe~ati: Broevi ednakvi na zbirot od kubovite na cifrite : 153 = 3*3*3+5*5*5+1*1*1+0 370 = 0*0*0+7*7*7+3*3*3+0 371 = 1*1*1+7*7*7+3*3*3+0 Vkupno takvi broevi vo toj interval ima 3 Broevi ednakvi na proizvodot od kubovite na cifrite : Nema takvi broevi vo dadeniot interval Broevi ednakvi na zbirot od prethodnite dve sumi : 370 = 0*0*0+7*7*7+3*3*3+0 Vkupno takvi broevi vo toj interval ima 1

Page 16: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

16

7. Da se napi{e programa vo programskiot jazik C++ so koja }e se pronajdat site Armstrongovi broevi vo zadaden interval. Armstrongovi broevi se broevi za koi va`i:

nnnn

n

kcbakabc .

Re{enie:

Vlezni promenlivi Izlezni promenlivi

pocetok, kraj po~etok i kraj na intervalot

sum broja~ za baranite broevi

brCif, cifra, pom pomo{ni promenlivi

i, j broja~i za intervalite

zbir zbir od stepenite na cifrite

stepen(int n,int k) funkcija za nao|awe na n^k (n na stepen k)

brojCifri(int n) funkcija za nao|awe na brojot na cifri na daden broj

#include<iostream> using namespace std; long stepen(int n,int k) { long pom=1; int i; for(i=1; i<=k; i++) pom*=n; return pom; } int brojCifri(int n) { int br=0,pom=n; while(pom>0) {

Page 17: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

17

br++; pom/=10; } return br; } int main() { int pocetok, kraj, i, j, brCif, cifra, pom, sum=0; long zbir; cout<<"Vnesete go pocetokot na intervalot : "; cin>>pocetok; cout<<"Vnesete go krajot na intervalot : "; cin>>kraj; cout<<endl<<"Vo intervalot od "<<pocetok<<" do "<<kraj<<" Armstrongovi se slednite broevi :"<<endl; for(i=pocetok; i<=kraj; i++) { brCif=brojCifri(i); pom=i; zbir=0; for(j=1; j<=brCif; j++) { cifra=pom%10; zbir+=stepen(cifra, brCif); pom/=10; } if(zbir==i) { cout<<i<<" "; sum++; } } if(sum==0) cout<<endl<<"Nema Armstrongovi broevi vo dadeniot interval"<<endl; else cout<<endl<<"Vkupno Armstrongovi broevi vo toj interval ima "<<sum<<endl; return 0; }

Page 18: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

18

_______________________________________________________ Test primer: VLEZ: Vnesete go po~etokot na intervalot : 1000 Vnesete go krajot na intervalot : 10000 Programata pe~ati: Vo intervalot od 1000 do 10000 Armstrongovi se slednite broevi : 1634 8208 9474 Vkupno Armstrongovi broevi vo toj interval ima 3

Page 19: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

19

8. Da se napi{e programa vo programskiot jazik C++, koja vo daden interval go nao|a onoj broj ~ij{to zbir na deliteli e maksimalen. Da se napi{e funkcija za nao|awe na zbirot na delitelite na daden broj.

Vlezni promenlivi Izlezni promenlivi

pocetok, kraj po~etok i kraj na intervalot max

brojot so najgolem zbir na deliteli

s zbir od deliteli na daden broj

maxzbir zbirot od delitelite i broja~ za

intervalot

sumaDeliteli(int k) funkcija za nao|awe na zbirot na delitelite na daden broj

#include <iostream> using namespace std; int sumaDeliteli(int k) { int pom=k, i, sum=0; for(i=1; i<=pom; i++) { if((pom%i)==0) sum+=i; } return sum; } int main() { int pocetok, kraj, i, s, max, maxzbir; cout<<"Vnesete go pocetokot na intervalot : "; cin>>pocetok; cout<<"Vnesete go krajot na intervalot : "; cin>>kraj; max=pocetok; maxzbir=sumaDeliteli(pocetok); for(i=pocetok+1; i<=kraj; i++) { s=sumaDeliteli(i);

Page 20: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

20

if(s>maxzbir) { maxzbir=s; max=i; } } cout<<"\nVo intervalot od "<<pocetok<<" do "<<kraj<<" najgolem zbir na deliteli ima "<<max<<endl; cout<<"Zbirot na negovite deliteli e "<<maxzbir<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go po~etokot na intervalot : 100 Vnesete go krajot na intervalot : 500 Programata pe~ati: Vo intervalot od 100 do 500 najgolem zbir na deliteli ima 480 Zbirot na negovite deliteli e 1512

Page 21: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

21

9. Da se napi{e programa vo programskiot jazik C++ so koja }e se ispe~atat site sovr{eni broevi od daden interval. Sovr{eni broevi se broevite koi se ednakvi na zbirot od nivnite deliteli, vklu~uvaj}i go i brojot 1. Da se napi{e funkcija za nao|awe na zbirot na delitelite na daden broj. Re{enie:

Vlezni promenlivi Izlezni promenlivi

pocetok, kraj po~etok i kraj na intervalot

sum broja~ za sovr{enite broevi

s zbir od deliteli na daden broj

i broja~ za intervalot

sumaDeliteli(int k) funkcija za nao|awe na zbirot na delitelite na daden broj

pecati(int k) funkcija za pe~atewe na delitelite na daden broj

#include <iostream> using namespace std; int sumaDeliteli(int k) { int pom=k, i, sum=0; for(i=1; i<=pom/2; i++) { if((pom%i)==0) sum+=i; } return sum; } void pecati(int k) { int pom=k, i; cout<<k<<" = 1"; for(i=2; i<=pom/2; i++) { if((pom%i)==0) cout<<"+"<<i;

Page 22: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

22

} cout<<endl; } int main() { int pocetok, kraj, i, s, sum=0; cout<<"Vnesete go pocetokot na intervalot : "; cin>>pocetok; cout<<"Vnesete go krajot na intervalot : "; cin>>kraj; cout<<endl<<"Vo intervalot od "<<pocetok<<" do "<<kraj<<" sovrseni broevi se :"<<endl; for(i=pocetok; i<=kraj; i++) { s=sumaDeliteli(i); if(s==i) { pecati(i); sum++; } } if(sum==0) cout<<"Nema sovrseni broevi vo dadeniot interval \n"<<endl; else cout<<"Vkupno sovrseni broevi vo toj interval ima "<<sum<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go po~etokot na intervalot : 1 Vnesete go krajot na intervalot : 500 Programata pe~ati: Vo intervalot od 1 do 500 sovr{eni broevi se : 6 = 1+2+3 28 = 1+2+4+7+14 496 = 1+2+4+8+16+31+62+124+248 Vkupno sove{eni broevi vo toj interval ima 3

Page 23: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

23

10. Da se napi{e programa vo programskiot jazik C++ za

re{avawe na kvadratnata ravenka 02 cxbxa . Da se napi{e funkcija za nao|awe na re{enijata. Re{enie:

Vlezni promenlivi Izlezni promenlivi

a,b,c koeficienti na ravenkata

x1, x2

re{enija na ravenkata; ili dvata realni re{enija ili realniot i imaginarniot del

dali indikator na vidot na re{enijata

ravenka(float a, float b, float c, float *x1, float *x2, int *dali)

funkcija za nao|awe na re{enijata na kvadratnata ravenka

#include<iostream> #include<math.h> using namespace std; void ravenka(float a, float b, float c, float *x1, float *x2, int *dali) { float d=b*b-4*a*c; if (d>=0) { *x1=(-b-sqrt(d))/(2*a); *x2=(-b+sqrt(d))/(2*a); *dali=1; } else { *x1=-b/(2*a); *x2=sqrt((-1)*d)/(2*a); *dali=0; } } int main() { float a,b,c; float x1, x2; int dali;

Page 24: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

24

do { cout<<"Vneste go koeficientot 'a' pred x^2 (a!=0) : "; cin>>a; } while(a==0); cout<<"Vneste go koeficientot 'b' pred x : "; cin>>b; cout<<"Vneste go slobodniot clen 'c' : "; cin>>c; ravenka(a,b,c,&x1,&x2,&dali); if(dali==1) cout<<"\nRavenkata ima realni resenija : x1="<<x1<<" i x2="<<x2<<endl; else { cout<<"\nRavenkata ima imaginarni resenija :"<<endl; cout<<"x1="<<x1<<"+i*"<<x2<<" i x2="<<x1<<"-i*"<< x2<<endl; } return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go koeficientot ’a’ pred x^2 (a!=0) : 1 Vnesete go koeficientot ’b’ pred x: -5 Vnesete go slobodniot ~len ’c’ : 6 Programata pe~ati: Ravenkata ima realni re{enija : x1=2 i x2=3

Page 25: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

25

11. Da se napi{e programa vo programskiot jazik C++ so koja }e se presmeta najmaliot broj na banknoti od po 500, 50 i 10 denari so koi mo`e da se dobie dadena suma na pari. Re{enie:

Vlezni promenlivi Izlezni promenlivi

suma

sumata koja treba da se dobie so banknotite

petsto, pedeset, deset,

ostatok

brojot na banknoti od po 500, 50 i 10 denari i ostatokot vo moneti

banknoti(int s, int *petsto, int *pedeset,

int *deset)

funkcija za nao|awe na brojot na banknoti od po 500, 50 i 10 denari za dobivawe na baranata suma

#include<iostream> using namespace std; int banknoti(int s, int *petsto, int *pedeset, int *deset) { int suma=s; *petsto=*pedeset=*deset=0; while(suma>=500) { (*petsto)++; suma-=500; } while(suma>=50) { (*pedeset)++; suma-=50; } while(suma>=10) { (*deset)++; suma-=10; } return suma; } int main() { int suma, petsto, pedeset, deset, ostatok;

Page 26: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

26

do { cout<<"Vneste ja sumata za koja ke se opredeluva (suma>0) : "; cin>>suma; } while (suma<=0); ostatok=banknoti(suma, &petsto, &pedeset, &deset); cout<<"\nSumata "<<suma<<" moze da se dobie so :\n"; cout<<petsto<<" banknoti od po 500 denari plus \n"; cout<<pedeset<<" banknoti od po 50 denari plus \n"; cout<<deset<<" banknoti od po 10 denari \n"; if(ostatok>0) cout<<"i moneti so vkupna vrednost od "<<ostatok<<" denari.\n"; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete ja sumata za koja }e se opredeluva (suma>=0) : 3435 Programata pe~ati: Sumata 3435 mo`e da se dobie so : 6 banknoti od po 500 denari plus 8 banknoti od po 50 denari plus 3 banknoti od po 10 denari i moneti so vkupna vrednost od 5 denari.

Page 27: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

27

12. Da se napi{e programa vo programskiot jazik C++ za kratewe na dropka so dadeni broitel i imenitel. Da se iskoristi funkcija za NZD na dva broja.

Vlezni promenlivi Izlezni promenlivi

broitel, imenitel

broitelot i imenitelot

maxDelitel NZD na broitelot i imenitelot

nzd(int m,int n) funkcija za nao|awe NZD na dva broja

#include<iostream> #include<math.h> using namespace std; int nzd(int m,int n) { if (n==0) return m; else return(nzd(n,m%n)); } int main() { int broitel,imenitel,maxDelitel; cout<<"Vnesete go broitelot na dropkata : "; cin>>broitel; cout<<"Vnesete go imenitelot na dropkata : "; cin>>imenitel; maxDelitel=nzd(abs(broitel),abs(imenitel)); cout<<"Ja vnesovte dropkata "<<broitel<<"/"<<imenitel<<endl; broitel/=maxDelitel; imenitel/=maxDelitel; cout<<"Skratenata dropka e "<<broitel<<"/"<<imenitel<<endl; return 0; }

Page 28: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

28

_______________________________________________________ Test primer: VLEZ: Vnesete go broitelot na dropkata : 42 Vnesete go imenitelot na dropkata : 72 Programata pe~ati: Ja vnesovte dropkata 42/72 Skratenata dropka e 7/12

Page 29: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

29

13. Da se napi{e programa vo programskiot jazik C++ so koja }e se izbroi kolku elementi od dadena niza imaat paren, a kolku neparen broj na cifri. Re{enie:

Vlezni promenlivi Izlezni promenlivi

niza[20] niza od celi broevi

parni, neparni

broj na elementi so paren i neparen broj na cifri

n broj na elementi od nizata

i pomo{na proemenliva

brojCifri (int n)

funkcija za opredeluvawe na brojot na cifri na daden broj

#include<iostream> using namespace std; int brojCifri(int n) { int br=0,pom=n; while(pom>0) { br++; pom/=10; } return br; } int main() { int niza[20], i, n, parni=0, neparni=0; cout<<"Kolku elementi ke ima nizata : "; cin>>n; cout<<"Vnesete gi elementite od nizata :\n"; for(i=0; i<n; i++) { cout<<"n["<<i<<"] = "; cin>>niza[i]; } for(i=0;i<n;i++)

Page 30: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

30

{ if(brojCifri(niza[i])%2==0) parni++; else neparni++; } cout<<"Vnesenata niza e :\n"; for(i=0; i<n; i++) { cout<<"n["<<i<<"] = "<<niza[i]<<" "; } cout<<"\nOd vnesenite elementi, "<<parni<<" elementi se so paren broj na cifri"; cout<<"\na "<<neparni<<" elementi se so neparen broj na cifri.\n"; return 0; } _______________________________________________________ Test primer: VLEZ: Kolku elementi da ima nizata : 5 Vnesete gi elementite od nizata : n[0]=2386 n[1]=417 n[2]=3571 n[3]=29 n[4]=3 Programata pe~ati: Vnesenata niza e : n[0] = 2386 n[1] = 417 n[2] = 3571 n[3] = 29 n[4] = 3 Od vnesenite elementi, 3 elementi se so paren broj na cifri, a 2 elementi se so neparen broj na cifri.

Page 31: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

31

14. Da se napi{e programa vo programskiot jazik C++ so koja na parnite pozicii vo edna niza }e se zapi{at obratnite broevi na elementite, a na neparnite pozicii }e se zapi{at kvadratite na elementite. Re{enie:

Vlezni promenlivi Izlezni promenlivi

niza[20] niza od celi broevi

n broj na elementi vo nizata

i broja~ za nizata

sprotiven(int k) funkcija koja go presmetuva obratniot broj na daden brojot k

#include<iostream> using namespace std; int sprotiven(int k) { int pom=k, p=0; int c; while(pom>0) { c=pom%10; p=p*10+c; pom/=10; } return p; } int main() { int niza[20], i, n; cout<<"Kolku elementi ke ima nizata : "; cin>>n; cout<<"Vnesete gi elementite od nizata :\n"; for(i=0; i<n; i++) { cout<<"n["<<i<<"] = "; cin>>niza[i];

Page 32: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

32

} cout<<"\nVnesenata niza e :\n"; for(i=0; i<n; i++) cout<<"n["<<i<<"] = "<<niza[i]<<" "; for(i=0; i<n; i++) { if(i%2==0) niza[i]=sprotiven(niza[i]); else niza[i]=niza[i]*niza[i]; } cout<<"\nNovodobienata niza e:\n"; for(i=0;i<n;i++) cout<<"n["<<i<<"] = "<<niza[i]<<" "; return 0; } _______________________________________________________ Test primer: VLEZ: Kolku elementi }e ima nizata : 6 Vnesete gi elementite od nizata : n[0]=24 n[1]=7 n[2]=351 n[3]=14 n[4]=9151 n[5]=25 Programata pe~ati: Vnesenata niza e : n[0] = 24 n[1] = 7 n[2] = 351 n[3] = 14 n[4] = 9151 n[5]=25 Novodobienata niza e : n[0] = 42 n[1] = 49 n[2] = 153 n[3] = 196 n[4] = 1519 n[5]=625

Page 33: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

33

15. Da se napi{e programa vo programskiot jazik C++ so koja }e se presmeta NZS na elementite od dadena niza. Da se iskoristi funkcija za nao|awe na NZS na dva broja. Re{enie:

Vlezni promenlivi Izlezni promenlivi

niza[20] niza od celi broevi

n broj na elementi vo nizata

i broja~ za nizata

NZS (int m,int n) funkcija koja nao|a NZS na dva broja

#include<iostream> using namespace std; 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; } int main()

Page 34: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

34

{ int niza[20], i, n, nzs; cout<<"Kolku elementi ke ima nizata? "; cin>>n; cout<<"Vnesete gi elementite od nizata :\n"; for(i=0; i<n; i++) { cout<<"n["<<i<<"] = "; cin>>niza[i]; } nzs=NZS(niza[0],niza[1]); for(i=2;i<n;i++) nzs=NZS(nzs,niza[i]); cout<<"\nVnesenata niza e :\n"; for(i=0; i<n; i++) cout<<"n["<<i<<"] = "<<niza[i]<<" "; cout<<"\nNZS za elementite od nizata e "<<nzs<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Kolku elementi }e ima nizata? 4 Vnesete gi elementite od nizata : n[0]=5 n[1]=8 n[2]=12 n[3]=9 Programata pe~ati: Vnesenata niza e : n[0] = 5 n[1] = 8 n[2] = 12 n[3] = 9 NZS za elementite od nizata e 360

Page 35: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

35

16. Da se napi{e programa vo programskiot jazik C++ so koja }e se presmeta NZD na elementite od dadena niza. Da se iskoristi funkcija za nao|awe na NZD na dva broja. Re{enie:

Vlezni promenlivi Izlezni promenlivi

niza[20] niza od celi broevi

n broj na elementi vo nizata

i broja~ za nizata

NZD (int m,int n) funkcija koja nao|a NZD na dva broja

#include<iostream> using namespace std; int NZD(int m,int n) { if (n==0) return m; else return(NZD(n,m%n)); } int main() { int niza[20], i, n, nzd; cout<<"Kolku elementi ke ima nizata : "; cin>>n; cout<<"Vnesete gi elementite od nizata :\n"; for(i=0; i<n; i++) { cout<<"n["<<i<<"] = "; cin>>niza[i]; } nzd=NZD(niza[0],niza[1]); for(i=2; i<n; i++) {

Page 36: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

36

nzd=NZD(nzd,niza[i]); if(nzd==1) break; } cout<<"\nVnesenata niza e :\n"; for(i=0; i<n; i++) cout<<"n["<<i<<"] = "<<niza[i]<<" "; cout<<"\nNZD za elementite od nizata e "<<nzd<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Kolku elementi }e ima nizata : 4 Vnesete gi elementite od nizata : n[0]=15 n[1]=24 n[2]=36 n[3]=45 Programata pe~ati: Vnesenata niza e : n[0] = 15 n[1] = 24 n[2] = 36 n[3] = 45 NZD za elementite od nizata e 3

Page 37: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

37

17. Da se napi{e programa vo programskiot jazik C++ so koja }e se stepenuva dadena niza na k-ti stepen. Da se iskoristi funkcija za stepenuvawe na eden broj. Re{enie:

Vlezni promenlivi Izlezni promenlivi

niza[20] niza od celi broevi

n broj na elementi vo nizata

st stepen na koj }e se stepenuva nizata

i broja~ za nizata

stepen (int n,int k) funkcija za nao|awe na n^k (n na stepen k)

#include<iostream> using namespace std; int stepen(int n,int k) { int pom=1, i; for(i=1; i<=k; i++) pom*=n; return pom; } int main() { int niza[20], i, n, st; cout<<"Kolku elementi ke ima nizata? "; cin>>n; cout<<"Vnesete gi elementite od nizata :\n"; for(i=0; i<n; i++) { cout<<"n["<<i<<"] = "; cin>>niza[i]; } do

Page 38: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

38

{ cout<<"\nNa koj stepen da se stepenuvaat elementite : "; cin>>st; }while(st<0); cout<<"\nVnesenata niza e :\n"; for(i=0; i<n; i++) cout<<"n["<<i<<"] = "<<niza[i]<<" "; for(i=0; i<n; i++) niza[i]=stepen(niza[i], st); cout<<"\nStepenuvanata niza e :\n"; for(i=0; i<n; i++) cout<<"n["<<i<<"] = "<<niza[i]<<" "; return 0; } _______________________________________________________ Test primer: VLEZ: Kolku elementi }e ima nizata? 4 Vnesete gi elementite od nizata : n[0]=11 n[1]=-7 n[2]=5 n[3]=-10 Na koj stepen da se stepenuvaat elementite: -6 Na koj stepen da se stepenuvaat elementite: 3 Programata pe~ati: Vnesenata niza e : n[0] = 11 n[1] = -7 n[2] = 5 n[3] = -10 Novodobienata niza e : n[0] = 1331 n[1] = -343 n[2] = 125 n[3] = -1000

Page 39: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

39

18. Da se napi{e programa vo programskiot jazik C++ so koja }e se presmeta sumata x1+x2+...+xn. Da se iskoristi funkcija za stepenuvawe na eden broj. Re{enie:

Vlezni promenlivi Izlezni promenlivi

x osnovata

suma sumata koja se presmetuva

st najgolemiot stepen

i, pom pomo{ni promenlivi

stepen (int n,int k) funkcija za nao|awe na n^k (n na stepen k)

#include<iostream> using namespace std; int stepen(int n,int k) { int pom=1, i; for(i=1; i<=k; i++) pom*=n; return pom; } int main() { int x, i, st, pom; long suma=0; cout<<"Vnesete ja osnovata na stepenite : "; cin>>x; do { cout<<"Vnesete go najgolemiot stepen : "; cin>>st; }while(st<0); cout<<"Baranata suma e : \n"; for(i=1; i<=st; i++) { pom=stepen(x,i);

Page 40: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

40

cout<<pom; if(i==st) cout<<" = "; else cout<<" + "; suma+=pom; } cout<<suma<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete ja osnovata na stepenite : 5 Vnesete go najgolemiot stepen : 4 Programata pe~ati: Baranata suma e : 5 + 25 + 125 + 625 = 780

Page 41: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

41

19. 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 koristewe na prvite n ~lenovi.

Re{enie:

Vlezni promenlivi Izlezni promenlivi

alfa agolot vo radijani

cosinus baraniot cosinus

pom agolot vo stepeni

n broj na ~lenovi vo presmetkata

pi vrednosta na konstantata pi

i, clen pomo{ni promenlivi

stepen(float n,int k) funkcija za nao|awe na n^k (n na stepen k)

faktoriel(int x) funkcija za nao|awe na faktoriel na daden broj

#include<iostream> using namespace std; float stepen(float n,int k) { float pom=1.0; int i; for(i=1; i<=k; i++) pom*=n; return pom; } long faktoriel(int x) { long izlez=1; int i;

Page 42: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

42

for (i=1; i<=x; i++) izlez*=i; return izlez; } int main() { float cosinus=1, alfa, pi=3.1416, pom, clen; int i, n; do { cout<<"Vnesete ja vrednosta na agolot vo stepeni : "; cin>>alfa; }while (alfa>180); pom=alfa; if (alfa>=90) alfa=180-alfa; alfa=(alfa*pi)/180; cout<<"Vnesete do koj clen da se presmetuva : "; cin>>n; for (i=2; i<=n; i+=2) { clen=stepen(alfa,i)/faktoriel(i); if((i%4)!=0) clen*=-1; cosinus+=clen; } cout<<"\nRezultatot e : cos("<<pom<<") = "; if(pom>=90) cout<<(-1)*cosinus<<endl; else cout<<cosinus<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete ja vrednosta na agolot vo stepeni : 45 Vnesete do koj ~len da se presmetuva : 10 Programata pe~ati: Rezultatot e : cos(45) = 0.707106

Page 43: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

43

20. Da se napi{e programa vo programskiot jazik C++ so koja }e se pronajdat site broevi vo daden interval ~ii cifri se podredeni vo raste~ki redosled, po~nuvaj}i od cifrata so najgolema kon cifrata so najmala vrednost. Re{enie:

Vlezni promenlivi Izlezni promenlivi

pocetok, kraj po~etok i kraj na intervalot

sum broja~ za broevite ~ii{to cifri se vo raste~ki redosled

dali pomo{na promenliva

i broja~ za intervalot

redosled(int x) funkcija za proveruvawe na redosledot na cifrite na brojot x

#include<iostream> using namespace std; bool redosled(int x) { int min,cifra; bool da=true; min=x%10; x/=10; while((x!=0)&&(da==true)) { cifra=x%10; if(cifra >= min) da=false; else { min=cifra; x/=10; } } return da; } int main()

Page 44: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

44

{ int pocetok, kraj, i, sum=0; bool dali; cout<<"Vnesete go pocetokot na intervalot : "; cin>>pocetok; cout<<"Vnesete go krajot na intervalot : "; cin>>kraj; cout<<"\nBroevi kaj koi cifrite se vo rastecki redosled se :\n"; for(i=pocetok; i<=kraj; i++) { dali=redosled(i); if(dali==true) { cout<<i<<" "; sum++; } } if(sum==0) cout<<endl<<"Nema takvi broevi vo toj interval"<<endl; else cout<<endl<<"Vkupno takvi brevi ima "<<sum<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go po~etokot na intervalot : 150 Vnesete go krajot na intervalot : 170 Programata pe~ati: Broevi kaj koi cifrite se vo raste~ki redosled se : 156 157 158 159 167 168 169 Vkupno takvi broevi ima 7

Page 45: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

45

21. Da se napi{e programa vo programskiot jazik C++ so koja }e se pronajdat site broevi vo daden interval kaj koi zbirot i proizvodot od cifrite e prost broj. Re{enie:

Vlezni promenlivi Izlezni promenlivi

pocetok, kraj po~etok i kraj na intervalot sum broja~ za baranite

broevi i broja~ za

intervalot

prost(int x) funkcija za proveruvawe dali brojot x e prost broj

zbirCifri(int x) funkcija za nao|awe na zbirot na cifrite na daden broj

proizvodCifri (int x)

funkcija za nao|awe na proizvodot na cifrite na daden broj

#include<iostream> using namespace std; bool prost(int x); int zbirCifri(int x); int proizvodCifri(int x); int main() { int pocetok, kraj, i, sum=0; cout<<"Vnesete go pocetokot na intervalot : "; cin>>pocetok; cout<<"Vnesete go krajot na intervalot : "; cin>>kraj; cout<<"\nBroevi so prost zbir i proizvod na cifri se :\n"; for(i=pocetok; i<=kraj; i++) { if(prost(zbirCifri(i)) && prost(proizvodCifri(i))) { cout<<i<<" ";

Page 46: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

46

sum++; } } if(sum==0) cout<<endl<<"Nema takvi broevi vo toj interval"<<endl; else cout<<endl<<"Vkupno takvi brevi ima "<<sum<<endl; return 0; } bool prost(int x) { if(x==0 || x==1) return false; int i; bool dali=true; for(i=2;i<=x/2;i++) { if (x%i==0) { dali=false; break; } } return dali; } int zbirCifri(int x) { int zbir=0; while (x>0) { zbir+=x%10; x/=10; } return zbir; } int proizvodCifri(int x) { int proizvod=1; while(x>0) { proizvod*=x%10; x/=10;

Page 47: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

47

} return proizvod; } _______________________________________________________ Test primer: VLEZ: Vnesete go po~etokot na intervalot : 100 Vnesete go krajot na intervalot : 200 Programata pe~ati: Broevi so prost zbir i proizvod na cifri se : 113 115 131 151 Vkupno takvi broevi ima 4

Page 48: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

48

22. 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{. Re{enie:

Vlezni promenlivi Izlezni promenlivi

int a[20] niza od celi broevi

n broj na elementi na nizata

i pomo{na promenliva

promena (int *a, int n)

funkcija za otstranuvawe na elementite koi se povtoruvaat vo nizata

#include<iostream> using namespace std; int promena(int *a, int n); int main() { int a[20],i,n; cout<<"Kolku elementi da ima nizata? "; cin>>n; cout<<"Vnesete ja nizata : \n"; for(i=0; i<n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } cout<<"\nVnesenata niza e: \n"; for(i=0; i<n; i++) cout<<a[i]<<" "; n=promena(a,n); cout<<"\nNovata niza e: \n"; for(i=0; i<n; i++) cout<<a[i]<<" "; cout<<"\n"; return 0;

Page 49: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

49

} int promena(int *a, int n) { int i=0, j, p;

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--; } } if(a[i]!=a[i+1]) i++;

} return n; } _______________________________________________________ Test primer: VLEZ: Kolku elementi da ima nizata ? 7 Vnesete ja nizata : a[0]=1 a[1]=2 a[2]=3 a[3]=4 a[5]=3 a[6]=4 a[7]=5 Programata pe~ati: Vnesenata niza e : 1 2 3 4 3 4 5 Novata niza e: 1 2 3 4 5

Page 50: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

50

23. Da se napi{e programa vo programskiot jazik C++ so koja }e se izbrojat pojavuvawata na maksimalniot i minimalniot element od dadena niza. Re{enie:

Vlezni promenlivi Izlezni promenlivi

int a[20] niza od celi broevi min, max

minimalniot i maksimalniot element od nizata

n broj na elementi na nizata brojMin,

brojMax

broj na pojavuvawa na minimalniot i maksimalniot element od nizata

i pomo{na promenliva

brMin(int *a, int n, int

*minimalen)

funkcija za nao|awe i broewe na minimalniot element od nizata

brMax(int *a, int n, int

*maximalen)

funkcija za nao|awe i broewe na maksimalniot element od nizata

#include<iostream> using namespace std; int brMin(int *a, int n, int *minimalen); int brMax(int *a, int n, int *maximalen); int main() { int a[20],i,n, min, max, brojMin, brojMax; cout<<"Kolku elementi da ima nizata?"; cin>>n; cout<<"Vnesete ja nizata : \n"; for(i=0; i<n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } brojMin=brMin(a,n,&min); brojMax=brMax(a,n,&max);

Page 51: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

51

cout<<"\nNajgolemiot broj vo nizata e "<<max<<" i se javuva "<<brojMax<<" pati\n"; cout<<"Najmaliot broj vo nizata e "<<min<<" i se javuva "<<brojMin<<" pati\n"; return 0; } int brMin(int *a, int n, int *minimalen) { int min=a[0], i, broj=0; for(i=1; i<n; i++) if(a[i]<min) min=a[i]; *minimalen=min; for(i=0; i<n; i++) if(a[i]==min) broj++; return broj; } int brMax(int *a, int n, int *maximalen) { int max=a[0], i, broj=0; for(i=1; i<n; i++) if(a[i]>max) max=a[i]; *maximalen=max; for(i=0; i<n; i++) if(a[i]==max) broj++; return broj; }

Page 52: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

52

_______________________________________________________ Test primer: VLEZ: Kolku elementi da ima nizata ? 7 Vnesete ja nizata : a[0]=15 a[1]=4 a[2]=-9 a[3]=55 a[4]=-9 a[5]=52 a[6]=55 Programata pe~ati: Vnesenata niza e : 15 4 -9 55 -9 52 55 Najgolemiot broj vo nizata e 55 i se javuva 2 pati Najmaliot broj vo nizata e -9 i se javuva 2 pati

Page 53: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

53

24. Da se napi{e programa vo programskiot jazik C++ so koja }e se pronajde na koi pozicii i kolku pati se pojavil daden element vo dadena niza. Re{enie:

Vlezni promenlivi Izlezni promenlivi

int a[20] niza od celi broevi

int b[20]

niza za ~uvawe na poziciite na koi se javuva baraniot element n

broj na elementi na nizata

i pomo{na promenliva

n2 pojavuvawa na baraniot element

x baraniot element

najdi(int *a, int n, int x, int *b)

funkcija za nao|awe na poziciite na koi se javuva daden element od niza

#include<iostream> using namespace std; int najdi(int *a, int n, int x, int *b); int main() { int a[20], b[20], i, n, n2, x; cout<<"Kolku elementi da ima nizata? "; cin>>n; cout<<"Vnesete ja nizata : \n"; for(i=0; i<n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } cout<<"Koj element da se bara vo nizata? "; cin>>x; n2=najdi(a,n,x,b); cout<<"\nVnesenata niza e: \n";

Page 54: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

54

for(i=0; i<n; i++) cout<<a[i]<<" "; if(n2==0) cout<<"\nBrojot "<<x<<" ne se javuva vo nizata\n"; else { cout<<"\nBrojot "<<x<<" se javuva vo nizata "<<n2<<" pati na slednite pozicii :\n"; if(n2==1) cout<<"Se javuva samo na "<<b[0]<<" popicija\n"; else { for(i=0; i<n2-1; i++) cout<<b[i]<<", "; cout<<"i "<<b[i]<<" pozicija\n"; } } return 0; } int najdi(int *a, int n, int x, int *b) { int i, j=0; for(i=0; i<n; i++) if(a[i]==x) { b[j]=i; j++; } return j; }

Page 55: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

55

_______________________________________________________ Test primer: VLEZ: Kolku elementi da ima nizata ? 7 Vnesete ja nizata : a[0]=12 a[1]=-12 a[2]=9 a[3]=12 a[4]=28 a[5]=-43 a[6]=12 Koj element da se bara vo nizata ? 12 Programata pe~ati: Vnesenata niza e : 12 -12 9 12 28 -43 12 Brojot 12 se javuva vo nizata 3 pati na slednite pozicii : 0, 3, i 6 pozicija

Page 56: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

56

25. Da se napi{e programa vo programskiot jazik C++ so koja }e se najde unijata na dve nizi. Re{enie:

Vlezni promenlivi Izlezni promenlivi

int a[20], b[20]

nizi od celi broevi

int c[20] unijata na dvete nizi

na, nb broj na elementi na nizite

i, j pomo{ni promenlivi

nc broj na elementi na unijata

duplikati (int *a, int n)

funkcija za otstranuvawe na elementite koi se povtoruvaat vo nizata

#include<iostream> using namespace std; int duplikati(int *a, int n); int main() { int a[20], b[20], c[40], na, nb, nc, i, j; cout<<"Kolku elementi da ima prvata niza ? "; cin>>na; cout<<"Vnesete ja nizata : \n"; for(i=0; i<na; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } cout<<"Kolku elementi da ima vtorata niza ? "; cin>>nb; cout<<"Vnesete ja nizata : \n"; for(i=0; i<nb; i++) { cout<<"b["<<i<<"]="; cin>>b[i]; }

Page 57: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

57

for(i=0; i<na; i++) c[i]=a[i]; for(j=0; j<nb; j++) { c[i]=b[j]; i++; } nc=duplikati(c,i); cout<<"\nVnesenite nizi se: \n"; cout<<"Prvata niza e : \n"; for(i=0; i<na; i++) cout<<a[i]<<" "; cout<<"\nVtorata niza e: \n"; for(i=0; i<nb; i++) cout<<b[i]<<" "; cout<<"\nUnijata na dvete nizi e :\n"; for(i=0; i<nc; i++) cout<<c[i]<<" "; cout<<"\n"; return 0; } int duplikati(int *a, int n) { int i=0, j, p;

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--; } if(a[i]!=a[i+1]) i++;

} return n; }

Page 58: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

58

_______________________________________________________ Test primer: VLEZ: Kolku elementi da ima prvata niza? 6 Vnesete ja nizata : a[0]=17 a[1]=38 a[2]=-9 a[3]=64 a[4]=17 a[5]=2 Kolku elementi da ima vtorata niza? 4 Vnesete ja nizata : a[0]=44 a[1]=38 a[2]=-9 a[3]=101 Programata pe~ati: Vnesenite nizi se : Prvata niza e : 17 38 -9 64 17 2 Vtorata niza e : 44 38 -9 101 Unijata na dvete nizi e : 17 38 -9 64 2 44 101

Page 59: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

59

26. 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

int a[20] niza od celi broevi poz

po~etnata pozicija na najgolemata raste~ka podniza

n broj na elementi na nizata

dolz dol`ina na najgolemata raste~ka podniza i pomo{na

promenliva

podniza(int *a, int n, int *pozicija, int

*dolzina)

funkcija za nao|awe na po~etnata pozicija i dol`ina na najgolemata raste~ka podniza od niza

#include<iostream> using namespace std; void podniza(int *a, int n, int *pozicija, int *dolzina); int main() { int a[20], n, poz, dolz, i; cout<<"Kolku elementi da ima nizata? "; cin>>n; cout<<"Vnesete ja nizata : \n"; for(i=0; i<n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } podniza(a,n,&poz,&dolz); cout<<"\nVnesenata niza e: \n"; for(i=0; i<n; i++) cout<<a[i]<<" "; cout<<"\nNajgolemata rastecka podniza ima dolzina "<<dolz<<" i taa e: \n";

Page 60: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

60

for(i=poz; i<=poz+dolz-1; i++) cout<<a[i]<<" "; cout<<"\n"; return 0; } void podniza(int *a, int n, int *pozicija, int *dolzina) { int dolz=0, poz, pom, i, j; for(i=0;i<n;i++) { pom=1; j=i; while(a[j]<a[j+1]) { pom++; j++; } if(pom>dolz) { poz=i; dolz=pom; } } *pozicija=poz; *dolzina=dolz; }

Page 61: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

61

_______________________________________________________ Test primer: VLEZ: Kolku elementi da ima nizata? 10 Vnesete ja nizata : a[0]=8 a[1]=18 a[2]=26 a[3]=4 a[4]=16 a[5]=35 a[6]=39 a[7]=-3 a[8]=-1 a[9]=14 Programata pe~ati: Vnesenata niza e : 8 18 26 4 16 35 39 -3 -1 14 Najgolemata raste~ka podniza ima dol`ina 4 i taa e : 4 16 35 39

Page 62: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

62

27. Da se napi{e programa vo programskiot jazik C++ so koja }e se ispe~atat najmalite k elementi od nizata. Re{enie:

Vlezni promenlivi Izlezni promenlivi

int a[20] niza od celi broevi

int b[20]

niza za ~uvawe na vnesenata niza vo raste~ki redosled na elementite n

broj na elementi od nizata

i pomo{na promenliva

nb broj na elementi na nizata b bez duplikati k

baran broj na najmali elementi

duplikati (int *a, int n)

funkcija za otstranuvawe na elementite koi se povtoruvaat vo niza

sortiranje (int *a, int n) funkcija za sortirawe na niza

#include<iostream> using namespace std; int duplikati(int *a, int n); void sortiranje(int *a, int n); int main() { int a[20], b[20], n, nb, i, k; cout<<"Kolku elementi da ima nizata? "; cin>>n; cout<<"Vnesete ja nizata : \n"; for(i=0; i<n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } cout<<"Kolku najmali elementi da se najdat? "; cin>>k;

Page 63: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

63

for(i=0; i<n; i++) b[i]=a[i]; nb=duplikati(b,n); sortiranje(b,nb); if(nb<=k) { cout<<"\nOpfatena e celata niza \n"; for(i=0; i<nb; i++)

cout<<b[i]<<" "; } else { cout<<"\nVnesenata niza e: \n"; for(i=0; i<n; i++) cout<<a[i]<<" "; cout<<"\n"<<k<<"-te najmali elementi se : \n"; for(i=0; i<k; i++) cout<<b[i]<<" "; } cout<<"\n"; return 0; } int duplikati(int *a, int n) { int i=0, j, p;

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--; } if(a[i]!=a[i+1]) i++;

} return n; } void sortiranje(int *a, int n)

Page 64: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

64

{ int pom, i, j; for(i=0; i<n; i++) for(j=0; j<n-i-1; j++) if(a[j]>a[j+1]) { pom=a[j]; a[j]=a[j+1]; a[j+1]=pom; } } _______________________________________________________ Test primer: VLEZ: Kolku elementi da ima nizata? 10 Vnesete ja nizata : a[0]=-3 a[1]=5 a[2]=9 a[3]=11 a[4]=7 a[5]=18 a[6]=5 a[7]=-3 a[8]=9 a[9]=19 Kolku najmali elementi da se najdat? 3 Programata pe~ati: Vnesenata niza e : -3 5 9 11 7 18 5 -3 9 19 3-te najmali elementi se : -3 5 7

Page 65: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

65

28. Na ispit u~estvuvale n<20 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 }e go presmeta nivniot sreden uspeh poka`an na ispitot. Re{enie:

Vlezni promenlivi Izlezni promenlivi

int a[20] niza od celi broevi za poenite

polozile

broj na polo`eni u~enici

n broj na u~enici

prosek prosekot na bodovi od polo`enite u~enici

min minimalen broj poeni za polo`uvawe

i pomo{na promenliva

polozeni (int *a, int n, int min, float

*prosek)

funkcija za nao|awe na brojot na u~enici koi go polo`ile ispitot i nivniot sreden uspeh

#include<iostream> using namespace std; int polozeni(int *a, int n, int min, float *prosek); int main() { int a[20], n, i, polozile, min; float prosek; cout<<"Kolku kandidati ucestvuvale na polaganjeto? "; cin>>n; cout<<"Vnesete gi poenite za sekoj kandidat :\n"; for(i=0;i<n;i++) { cout<<i+1<<"-kandidat : "; cin>>a[i]; } cout<<"Kolku e minimumot na poeni za polozuvanje : ";

Page 66: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

66

cin>>min; polozile=polozeni(a,n,min,&prosek); cout<<"\nIspitot go polozile "<<polozile<<" ucenici \n"; cout<<"Prosekot na bodovi e "<<prosek<<endl; return 0; } int polozeni(int *a, int n, int min, float *prosek) { int broj=0, i;

float suma=0.0; for(i=0; i<n; i++) { if(a[i]>=min) { broj++; suma+=a[i]; } } *prosek=suma/broj; return broj; } _______________________________________________________ Test primer: VLEZ: Kolku kandidati u~estvuvale vo polagaweto? 10 Vnesete gi poenite za sekoj kandidat : 1-kandidat : 55 2-kandidat : 45 3-kandidat : 65 4-kandidat : 90 5-kandidat : 100 6-kandidat : 35 7-kandidat : 85 8-kandidat : 45 9-kandidat : 60 10-kandidat : 85 Kolku e minimumot na poeni za polo`uvawe : 55 Programata pe~ati: Ispitot go polo`ile 7 u~enici Prosekot na bodovi e 77.1429

Page 67: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

67

29. Da se napi{e programa vo programskiot jazik C++ so koja }e se pronajdat prvata i poslednata pozicija na koja se pojavil zadaden element vo edna niza. Re{enie:

Vlezni promenlivi Izlezni promenlivi

int a[20] niza od celi broevi

prvo, posledno

prvata i poslednata pozicija na koja se pojavil baraniot element

n broj na elementi od nizata

element elementot koj se bara

i pomo{na promenliva

pojavuvanje (int *a, int n,

int element, int *prvo, int

*posledno)

funkcija za nao|awe na prvata i poslednata pozicija na koja se pojavil zadaden element vo niza

#include<iostream> using namespace std; void pojavuvanje(int *a, int n, int element, int *prvo, int *posledno); int main() { int a[20], n, i, prvo, posledno, element; cout<<"Kolku elementi da ima nizata? "; cin>>n; cout<<"Vnesete ja nizata : \n"; for(i=0; i<n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } cout<<"Koj element se bara : "; cin>>element; prvo=-1;

Page 68: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

68

posledno=-1; pojavuvanje(a,n,element,&prvo,&posledno); cout<<"\nVnesenata niza e: \n"; for(i=0; i<n; i++) cout<<a[i]<<" "; if(prvo==-1) cout<<"\nElementot ne se pojavuva voopsto vo nizata"; else { cout<<"\nPrvo pojavuvanje na "<<prvo<<" -ta pozicija\n"; cout<<"Posledno pojavuvanje na "<<posledno<<" -ta pozicija"; } return 0; } void pojavuvanje(int *a, int n, int element, int *prvo, int *posledno) { int i, prv=-1, posleden=-1; for(i=0; i<n; i++) { if(a[i]==element) { posleden=i; if(prv==-1) prv=i; } } *prvo=prv; *posledno=posleden; }

Page 69: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

69

_______________________________________________________ Test primer: VLEZ: Kolku elementi da ima nizata ? 10 Vnesete ja nizata : a[0]=-3 a[1]=5 a[2]=9 a[3]=5 a[4]=7 a[5]=24 a[6]=5 a[7]=13 a[8]=-6 a[9]=9 Koj element se bara : 5 Programata pe~ati: Vnesenata niza e : -3 5 9 5 7 24 5 13 -6 9 Prvo pojavuvawe na 1-ta pozicija Posledno pojavuvawe na 6-ta pozicija

Page 70: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

70

30. Da se napi{e programa vo programskiot jazik C++ so koja }e se pronajde najgolemata razlika na dva sosedni elementi od niza. Re{enie:

Vlezni promenlivi Izlezni promenlivi

int a[20] niza od celi broevi

poz1, poz2

pozicijata na elementite so najgolema razlika

n broj na elementi od nizata

raz najgolemata razlika i pomo{na

promenliva razlika

(int *a, int n, int*p1, int*p2)

funkcija za nao|awe na najgolemata razlika pome|u dva sosedni elementi

#include<iostream> using namespace std; int razlika(int *a, int n, int*p1, int*p2); int main() { int a[20], n, i, raz, poz1, poz2; cout<<"Kolku elementi da ima nizata? "; cin>>n; cout<<"Vnesete ja nizata : \n"; for(i=0; i<n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } raz=razlika(a,n,&poz1,&poz2); cout<<"\nVnesenata niza e: \n"; for(i=0; i<n; i++) cout<<a[i]<<" "; cout<<"\nNajgolemata ralika iznesuva "<<raz<<endl; cout<<"Toa e razlikata pomegu "<<poz1+1<<"-ot i "<<poz2+1<<"-ot element.\n";

Page 71: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

71

return 0; } int razlika(int *a, int n, int *poz1, int*poz2) { int i, pom, raz, p1, p2; raz=a[1]-a[0]; if(raz<0) raz*=-1; p1=0; p2=1; for(i=2;i<n;i++) { pom=a[i]-a[i-1]; if(pom<0) pom*=-1; if(pom>raz) { raz=pom; p1=i-1; p2=i; } } *poz1=p1; *poz2=p2; return raz; } _______________________________________________________ Test primer: VLEZ: Kolku elementi da ima nizata? 6 Vnesete ja nizata : a[0]=3 a[1]=8 a[2]=17 a[3]=-2 a[4]=9 a[5]=4

Page 72: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

72

Programata pe~ati: Vnesenata niza e : 3 8 17 -2 9 4 Najgolemata razlika iznesuva 19 Toa e razlikata pome|u 3-ot i 4-ot element

Page 73: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

73

31. 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

int a[20] niza od celi broevi

n broj na elementi od nizata

i pomo{na promenliva

pocetok, kraj po~etok i kraj na delot koj se podreduva

podreduvanje (int *a, int n,

int pocetok, int kraj)

funkcija za podreduvawe na del od niza vo raste~ki redosled

#include<iostream> using namespace std; int podreduvanje(int *a, int n, int pocetok, int kraj); int main() { int a[20], n, i, pocetok, kraj; cout<<"Kolku elementi da ima nizata? "; cin>>n; cout<<"Vnesete ja nizata : \n"; for(i=0; i<n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } cout<<"Od koja pozicija da pocne podreduvanjeto : "; cin>>pocetok; cout<<"Do koja pozicija da bide podreduvanjeto : "; cin>>kraj;

Page 74: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

74

cout<<"\nVnesenata niza e: \n"; for(i=0; i<n; i++) cout<<a[i]<<" "; podreduvanje(a,n,pocetok,kraj); cout<<"\nDelumno podredenata niza e: \n"; for(i=0; i<n; i++) cout<<a[i]<<" "; cout<<"\n"; return 0; } int podreduvanje(int *a, int n, int pocetok, int kraj) { int i, j, pom; for(i=pocetok; i<kraj; i++) for(j=i+1; j<=kraj; j++) if(a[j]<a[i]) { pom=a[j]; a[j]=a[i]; a[i]=pom; } } _______________________________________________________ Test primer: VLEZ: Kolku elementi da ima nizata? 8 Vnesete ja nizata : a[0]=4 a[1]=3 a[2]=9 a[3]=-2 a[4]=7 a[5]=-11 a[6]=5 a[7]=6 Od koja pozicija da po~ne podreduvaweto : 2 Do koja pozicija da bide podreduvaweto : 5

Page 75: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

75

Programata pe~ati: Vnesenata niza e : 4 3 9 -2 7 -11 5 6 Delumno podredenata niza e : 4 3 -11 -2 7 9 5 6

Page 76: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

76

32. Da se napi{e programa vo programskiot jazik C++ so koja }e se presmeta aritmeti~kata sredina na elementite od dadena niza, a potoa }e se isfrlat elementite pomali od taa vrednost. Re{enie:

Vlezni promenlivi Izlezni promenlivi

int a[20] niza od celi broevi

sredina aritmeti~kata sredina na nizata n broj na elementi

od nizata

i pomo{na promenliva

aritmeticka (int *a, int n)

funkcija za nao|awe na aritmeti~kata sredina na edna dadena niza

promena (int *a, int n, float sredina)

funkcija za otstranuvawe na elementite od nizata pomali od aritmeti~kata sredina

#include<iostream> using namespace std; float aritmeticka(int *a, int n); int promena(int *a, int n, float sredina); int main() { int a[20], n, i; float sredina; cout<<"Kolku elementi da ima nizata? "; cin>>n; cout<<"Vnesete ja nizata : \n"; for(i=0; i<n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } cout<<"\nVnesenata niza e: \n"; for(i=0; i<n; i++)

Page 77: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

77

cout<<a[i]<<" "; sredina=aritmeticka(a,n); cout<<"\nAritmetickata sredina na nizata iznesuva "<<sredina<<endl; n=promena(a,n,sredina); cout<<"Novodobienata niza e: \n"; for(i=0; i<n; i++) cout<<a[i]<<" "; cout<<"\n"; return 0; } float aritmeticka(int *a, int n) { float sum=0.0; int i; for(i=0; i<n; i++) sum+=a[i]; sum/=n; return sum; } int promena(int *a, int n, float sredina) { int i, j=0; for(i=0; i<n; i++) { if(a[i]>=sredina) { a[j]=a[i]; j++; } } return j; }

Page 78: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

78

_______________________________________________________ Test primer: VLEZ: Kolku elementi da ima nizata? 8 Vnesete ja nizata : a[0]=10 a[1]=28 a[2]=15 a[3]=24 a[4]=39 a[5]=30 a[6]=17 a[7]=29 Programata pe~ati: Vnesenata niza e : 10 28 15 24 39 30 17 29 Aritmeti~kata sredina na nizata iznesuva 24 Novodobienata niza e : 28 24 39 30 29

Page 79: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

79

33. Da se napi{e programa vo programskiot jazik C++ so koja }e se soberat i pomno`at dve nizi. Elementite na novodobienite nizi se dobivaat kako zbir, odnosno proizvod od soodvetnite elementi vo dadenite nizi, t.e. c[i]=a[i]+b[i] i d[i]=a[i]*b[i]. Re{enie:

Vlezni promenlivi Izlezni promenlivi

int a[20], b[20] nizi od celi broevi

int c[20], d[20] novodobienite nizi zbir i proizvod

n broj na elementi od nizite

i pomo{na promenliva

pojavuvanje (int *a, int n,

int element, int *prvo, int

*posledno)

funkcija za nao|awe na prvata i poslednata pozicija na koja se pojavil zadaden element vo niza

#include<iostream> using namespace std; void zbirIproizvod(int *a, int *b, int n, int*c, int *d); int main() { int a[20], b[20], c[20], d[20], n, i, j; cout<<"Kolku elementi da imaat nizite? "; cin>>n; cout<<"Vnesete ja prvata niza : \n"; for(i=0; i<n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } cout<<"Vnesete ja vtorata niza : \n"; for(i=0; i<n; i++) { cout<<"b["<<i<<"]=";

Page 80: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

80

cin>>b[i]; } zbirIproizvod(a,b,n,c,d); cout<<"\nVnesenite nizi se: \n"; cout<<"Prvata niza e : \n"; for(i=0; i<n; i++) cout<<a[i]<<" "; cout<<"\nVtorata niza e: \n"; for(i=0; i<n; i++) cout<<b[i]<<" "; cout<<"\nZbirot na dvete nizi e :\n"; for(i=0; i<n; i++) cout<<c[i]<<" "; cout<<"\nProizvodot na dvete nizi e :\n"; for(i=0; i<n; i++) cout<<d[i]<<" "; cout<<"\n"; return 0; } void zbirIproizvod(int *a, int *b, int n, int*c, int *d) { int i; for(i=0; i<n; i++) { c[i]=a[i]+b[i]; d[i]=a[i]*b[i]; } }

Page 81: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

81

_______________________________________________________ Test primer: VLEZ: Kolku elementi da imaat nizite? 5 Vnesete ja prvata niza : a[0]=1 a[1]=2 a[2]=3 a[3]=4 a[4]=5 Vnesete ja vtorata niza : a[0]=6 a[1]=7 a[2]=8 a[3]=9 a[4]=10 Programata pe~ati: Vnesenite nizi se : Prvata niza e : 1 2 3 4 5 Vtorata niza e : 6 7 8 9 10 Zbirot na dvete nizi e : 7 9 11 13 15 Proizvodot na dvete nizi e 6 14 24 36 50

Page 82: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

82

2. Klasi 1. Da se razvie klasa za to~ka vo koordinaten sistem koja sodr`i metod za pe~atewe na to~kata i metod za opredeluvawe na rastojanieto od to~kata do koordinatniot po~etok. Re{enie:

Klasa Tocka

int x, y koordinati na to~kata

void pecati() funkcija za pe~atewe na koordinatite na to~kata

float rastojanie() funkcija za presmetuvawe na rastojanie od to~kata do koordinatniot po~etok

Vlezni promenlivi Izlezni promenlivi

x, y promenlivi za koordinatite na to~kata

ras rastojanie na to~kata do koordinaten po~etok

t to~ka vo koordinatniot sistem

#include<iostream> #include<math.h> using namespace std; class Tocka { private: int x; int y; public: Tocka()

Page 83: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

83

{ x=0; y=0; } Tocka(int a, int b) { x=a; y=b; } ~Tocka() {} void pecati() { cout<<"\nTockata e ("<<x<<", "<<y<<")\n"; } float rastojanie() { return sqrt(x*x+y*y); } }; int main() { int x,y; cout<<"Vnesete vrednost za x : "; cin>>x; cout<<"Vnesete vrednost za y : "; cin>>y; Tocka t(x,y); float ras=t.rastojanie(); t.pecati(); cout<<"Rastojanieto do koordinaten pocetok e "<<ras<<endl; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete vrednost za x : 3 Vnesete vrednost za y : 4 Programata pe~ati: To~kata e (3, 4)

Page 84: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

84

Rastojanieto do koordinaten po~etok e 5

Page 85: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

85

2. Da se razvie klasa za datum koja sodr`i metod za pe~atewe na datumot i metod za razlika na dva datumi. Re{enie:

Klasa Datum

int den, mesec, godina promenlivi za denot, mesecot i godinata

void pecati() funkcija za pe~atewe na datum

void pecatiRazlika() funkcija za opisno pe~atewe na datum

Datum razlika(Datum dat)

funkcija za presmetuvawe na razlikata pome|u dva datumi

Vlezni promenlivi Izlezni promenlivi

d,m,g

promenlivi za denot, mesecot i godinata d3 razlikata pome|u

datumite d1 i d2

d1, d2 vlezni datumi

#include<iostream> #include<math.h> using namespace std; class Datum { private: int den; int mesec; int godina; public: Datum() { den=mesec=godina=0; } Datum(int d, int m, int g)

Page 86: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

86

{ den=d; mesec=m; godina=g; } ~Datum() {} int getDen() { return den; } int getMesec() { return mesec; } int getGodina() { return godina; } void pecati() { cout<<den<<"."<<mesec<<"."<<godina<<".\n"; } void pecatiRazlika() { cout<<den<<" denovi, "<<mesec<<" meseci i "<<godina<<" godini.\n"; } Datum razlika(Datum dat) { int d2=dat.getDen(); int m2=dat.getMesec(); int g2=dat.getGodina(); if(d2<den) { d2+=30; m2--; } if(m2<mesec) { m2+=12; g2--;

Page 87: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

87

} d2=d2-den; m2=m2-mesec; g2=g2-godina; Datum pom(d2,m2,g2); return pom; } }; int main() { int d,m,g; cout<<"Vnesete vrednosti za prviot datum : "; cin>>d>>m>>g; Datum d1(d,m,g); cout<<"Vnesete vrednosti za vtoriot datum : "; cin>>d>>m>>g; Datum d2(d,m,g); cout<<"Prviot datum e "; d1.pecati(); cout<<"Vtoriot datum e "; d2.pecati(); Datum d3=d1.razlika(d2); cout<<"Razlikata megu vtoriot i prviot datum e "; d3.pecatiRazlika(); return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete vrednosti za prviot datum: 15 10 1990 Vnesete vrednosti za vtoriot datum: 11 8 2007 Programata pe~ati: To~kata e (3, 4) Prviot datum e 15.10.1990. Vtoriot datum e 11.8.2007. Razlikata me|u vtoriot i prviot datum e 26 denovi, 9 meseci i 16 godini.

Page 88: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

88

3. Da se razvie klasa za triagolnik so metodi za presmetuvawe na perimetarot i plo{tinata na triagolnikot. Re{enie:

Klasa Triagolnik

int a, b, c promenlivi za stranite na triagolnikot

plostina, perimetar plo{tina i perimetar na triagolnikot

void pecati() funkcija za pe~atewe na karakteristikite na triagolnikot

void Perimetar() funkcija za presmetuvawe na perimetarot

void Plostina() funkcija za presmetuvawe na plo{tinata

Vlezni promenlivi Izlezni promenlivi

x, y, z promenlivi za stranite na triagolnikot

tri triagolnik

#include<iostream> #include<math.h> using namespace std; class Triagolnik { private: int a, b, c; float perimetar, plostina; public: Triagolnik()

Page 89: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

89

{ a=b=c=0; plostina=perimetar=0.0; } Triagolnik(int s1, int s2, int s3) { a=s1; b=s2; c=s3; plostina=perimetar=0.0; } ~Triagolnik() {} void pecati() { cout<<"\nTriagolnikot e so strani "<<a<<", "<<b<<" i "<<c<<".\n"; cout<<"Plostinata iznesuva "<<plostina<<endl; cout<<"Perimetarot iznesuva "<<perimetar<<endl; } void Perimetar() { perimetar=a+b+c; } void Plostina() { float alfa=acos((b*b+c*c-a*a)/(b*c*2.0)); float hc=b*sin(alfa); plostina=c*hc/2.0; } }; int main() { int x, y, z; cout<<"Vnesete vrednosti za triagolnikot : "; cin>>x>>y>>z; Triagolnik tri(x,y,z); tri.Perimetar(); tri.Plostina(); tri.pecati();

Page 90: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

90

return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete vrednosti za triagolnikot: 3 4 5 Programata pe~ati: Triagolnikot e so strani 3, 4 i 5. Plo{tinata iznesuva 6 Perimetarot iznasuva 12

Page 91: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

91

4. Da se razvie klasa za rabota so kompleksen broj koja ima funkcii za sobirawe i mno`ewe na dva kompleksni broja. Re{enie:

Klasa Kompleksen

int realen, imaginaren realniot i imaginarniot del

void pecati() funkcija za pe~atewe na karakteristikite na triagolnikot

Kompleksen sobiranje(Kompleksen k)

funkcija za sobirawe na dva kompleksni broja

Kompleksen mnozenje(Kompleksen k)

funkcija za mno`ewe na dva kompleksni broja

Vlezni promenlivi Izlezni promenlivi

re, im

promenlivi za realniot i imaginarniot del k3, k4 zbirot i proizvodot

na k1 i k2

k1, k2 kompleksni broevi

#include<iostream> using namespace std; class Kompleksen { private: int realen, imaginaren; public: Kompleksen() { realen=imaginaren=0; } Kompleksen(int r, int i) {

Page 92: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

92

realen=r; imaginaren=i; } ~Kompleksen() {} int getRealen() { return realen; } int getImaginaren() { return imaginaren; } void pecati() { cout<<"\n"<<realen<<"+ i*("<<imaginaren<<") \n"; } Kompleksen sobiranje(Kompleksen k) { int re=k.getRealen(); int im=k.getImaginaren(); int pomreal, pomimag; pomreal=realen+re; pomimag=imaginaren+im; Kompleksen pom(pomreal, pomimag); return pom; } Kompleksen mnozenje(Kompleksen k) { int re=k.getRealen(); int im=k.getImaginaren(); int pomreal, pomimag; pomreal=realen*re-imaginaren*im; pomimag=realen*im+imaginaren*re; Kompleksen pom(pomreal, pomimag); return pom; } }; int main() {

Page 93: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

93

int re, im; cout<<"Vnesete go prviot kompleksen broj : "; cin>>re>>im; Kompleksen k1(re,im); cout<<"Vnesete go vtoriot kompleksen broj : "; cin>>re>>im; Kompleksen k2(re,im); Kompleksen k3=k1.sobiranje(k2); Kompleksen k4=k1.mnozenje(k2); cout<<"\nPrviot kompleksen broj e "; k1.pecati(); cout<<"Vtoriot kompleksen broj e "; k2.pecati(); cout<<"Nivniot zbir iznesuva "; k3.pecati(); cout<<"Nivniot proizvod iznesuva "; k4.pecati(); return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go prviot kompleksen broj : 3 -2 Vnesete go vtoriot kompleksen broj : 4 5 Programata pe~ati: Prviot kompleksen broj e 3 + i*(-2) Vtoriot kompleksen broj e 4 + i*(5) Nivniot zbir iznesuva 7 + i*(3) Nivniot proizvod iznesuva 22 + i*(7)

Page 94: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

94

5. Da se razvie klasa Student koja sodr`i ime, prezime i ocenki na studentot, kako i metod za vnesuvawe na ocenkite i metod za pe~atewe na podatocite na studentot, zaedno so prosekot od negovite ocenki. Re{enie:

Klasa Student

char ime[15], prezime[20] imeto i prezimeto na studentot

int ocenka[10], brOcenki ocenkite so brojot na ocenki

void pecati() funkcija za pe~atewe na podatocite na studentot

void vnesiOcenki() funkcija za vnesuvawe na ocenkite na studentot

float getProsek() funkcija za presmetuvawe na prosekot od ocenkite

Vlezni promenlivi Izlezni promenlivi

br promenliva za brojot na ocenki

s student

ime[15], prezime[20]

imeto i prezimeto na studentot

#include<iostream> #include<string.h> using namespace std; class Student { private: char ime[15]; char prezime[20];

Page 95: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

95

int ocenka[10]; int brOcenki; public: Student() { *ime=*prezime='\0'; brOcenki=0; } Student(char *i, char *p, int brOc) { strcpy(ime,i); strcpy(prezime,p); brOcenki=brOc; } ~Student() {} void vnesiOcenki() { int i; for(i=0; i<brOcenki; i++) { cout<<"Vnesete ja "<<i+1<<"-ta ocenka : "; cin>>ocenka[i]; } } float getProsek() { int i; float prosek=0.0; for(i=0; i<brOcenki; i++) prosek+=ocenka[i]; prosek/=brOcenki; return prosek; } void pecati() { cout<<"\nIme : "<<ime<<endl; cout<<"Prezime : "<<prezime<<endl; cout<<"Ocenki : "; for(int i=0; i<brOcenki-1; i++) cout<<ocenka[i]<<", "; cout<<ocenka[brOcenki-1]<<endl;

Page 96: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

96

cout<<"Prosek : "<<getProsek()<<endl; } }; int main() { int br; char ime[15], prezime[10]; cout<<"Vnesete go imeto na studentot : "; cin>>ime; cout<<"Vnesete go prezimeto na studentot : "; cin>>prezime; cout<<"Vnesete broj na ocenki : "; cin>>br; Student s(ime,prezime,br); s.vnesiOcenki(); s.pecati(); return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go imeto na studentot : Aleksandar Vnesete go prezimeto na studentot : Nikoloski Vnesete broj na ocenki : 5 Vnesete ja 1-ta ocenka : 8 Vnesete ja 2-ta ocenka : 9 Vnesete ja 3-ta ocenka : 10 Vnesete ja 4-ta ocenka : 9 Vnesete ja 5-ta ocenka : 8 Programata pe~ati: Ime : Aleksandar Prezime : Nikoloski Ocenki : 8, 9, 10, 9, 8 Prosek : 8.8

Page 97: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

97

6. Da se razvie klasa Smetka koja sodr`i ime i prezime na korisnikot i iznos na smetkata, kako i metod za dodavawe i podigawe na pari od smetkata i metod za pe~atewe na podatocite od smetkata. Re{enie:

Klasa Smetka

char ime[15], prezime[20] ime i prezime na korisnikot

int iznos iznos na smetkata

void pecati() funkcija za pe~atewe na podatocite od smetkata

void dodadiSuma(int suma)

funkcija za dodavawe pari na smetkata

void podigniSuma(int suma)

funkcija za podigawe pari od smetkata

Vlezni promenlivi Izlezni promenlivi

suma promenliva za vnesenite sumi

s smetka

ime[15], prezime[20]

imeto i prezimeto na korisnikot

#include<iostream> #include<string.h> using namespace std; class Smetka { private: char ime[15]; char prezime[20];

Page 98: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

98

int iznos; public: Smetka(char *i='\0', char *p='\0', int suma=0) { strcpy(ime,i); strcpy(prezime,p); iznos=suma; } ~Smetka() {} void dodadiSuma(int suma) { if(suma<=0) cout<<"Ne se dodava negativna suma\n"; else iznos+=suma; } void podigniSuma(int suma) { if(suma<=0) cout<<"Ne se podiga negativna suma\n"; else { if(iznos-suma<0) cout<<"Ne e dozvolen minus na smetkata\n"; else iznos-=suma; } } void pecati() { cout<<"\nIme : "<<ime<<endl; cout<<"Prezime : "<<prezime<<endl; cout<<"Iznos na smetka : "<<iznos<<endl; } }; int main() { int suma; char ime[15], prezime[10];

Page 99: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

99

cout<<"Vnesete go imeto na korisnikot : "; cin>>ime; cout<<"Vnesete go prezimeto na korisnikot : "; cin>>prezime; cout<<"Vnesete poceten iznos na smetkata : "; cin>>suma; Smetka s(ime,prezime,suma); s.pecati(); cout<<"\nDodadete pari na smetkata : "; cin>>suma; s.dodadiSuma(suma); s.pecati(); cout<<"\nPodignete pari od smetkata : "; cin>>suma; s.podigniSuma(suma); s.pecati(); return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go imeto na korisnikot : Elena Vnesete go prezimeto na korisnikot: Doneska Vnesete po~eten iznos na smetkata : 5000 Programata pe~ati: Ime : Elena Prezime : Doneska Iznos na smetka : 5000 Dodadete pari na smetkata : 1000 Ime : Elena Prezime : Doneska Iznos na smetka : 6000 Podignete pari od smetkata : 2500 Ime : Elena Prezime : Doneska Iznos na smetka : 3500

Page 100: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

100

7. Da se razvie klasa Niza koja sodr`i niza od celi broevi, kako i metod za dodavawe elementi vo nizata i metod za pe~atewe na nizata, zaedno so zbirot od elementite vo nizata. Re{enie:

Klasa Niza

int a[100], n nizata i brojot na elementi od nizata

void pecati() funkcija za pe~atewe na nizata

int dodadiElement(int element)

funkcija za dodavawe elementi vo nizata

int presmetajZbir() funkcija za presmetuvawe na zbirot na elementite od nizata

Vlezni promenlivi Izlezni promenlivi

broj pomo{na promenliva

nova niza

#include<iostream> using namespace std; class Niza { private: int a[100]; int n; public: Niza(int x) { n=x; } ~Niza() {} int dodadiElement(int element)

Page 101: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

101

{ if(n<20) { a[n]=element; n++; return 1; } else { cout<<"Nizata e celosno popolneta\n"; return 0; } } int presmetajZbir() { int i, suma=0; for(i=0; i<n; i++) suma+=a[i]; return suma; } void pecati() { cout<<"\nElementite na nizata se : \n"; for(int i=0; i<n; i++) cout<<a[i]<<" "; cout<<"\nZbirot na elementite od nizata iznesuva "<<presmetajZbir()<<endl; } }; int main() { int broj; Niza nova(0); cout<<"Vnesete gi elementite od nizata : "; while(cin>>broj) { if(nova.dodadiElement(broj)==0) break; } nova.pecati(); return 0; }

Page 102: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

102

_______________________________________________________ Test primer: VLEZ: Vnesete gi elementite od nizata : 3 -4 11 -9 17 1 x Programata pe~ati: Elementite na nizata se: 3 -4 11 -9 17 1 Zbirot na elementite od nizata iznesuva 19

Page 103: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

103

8. Da se razvie klasa Niza koja sodr`i niza od celi broevi, kako i metod za podreduvawe na elementite vo nizata i metod za pe~atewe na nizata. Re{enie:

Klasa Niza

int a[20] elementi od nizata

max, brojac maksimalen broj na elementi od nizata i broja~ za vnesenite elementi

void pecati() funkcija za pe~atewe na nizata

int dodadiElement(int element)

funkcija za dodavawe elementi vo nizata

void podreduvanje() funkcija za podreduvawe na elementite vo nizata

Vlezni promenlivi Izlezni promenlivi

broj pomo{na promenliva

nova niza

#include<iostream> using namespace std; class Niza { private: int a[20]; int max; int brojac; public: Niza(int x) { max=x; brojac=0;

Page 104: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

104

} ~Niza() {} int dodadiElement(int element) { if(brojac<max) { a[brojac]=element; brojac++; return 1; } else { cout<<"Nizata e celosno popolneta\n"; return 0; } } void podreduvanje() { int i, j, pom; for(i=0; i<brojac-1; i++) for(j=i+1; j<brojac; j++) if(a[j]<a[i]) { pom=a[j]; a[j]=a[i]; a[i]=pom; } } void pecati() { cout<<"\nElementite na nizata se : \n"; for(int i=0; i<brojac; i++) cout<<a[i]<<" "; cout<<"\n"; } }; int main() { int broj; cout<<"Kolku najmnogu elementi ke ima nizata? ";

Page 105: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

105

cin>>broj; Niza nova(broj); cout<<"Vnesete gi elementite od nizata : "; while(cin>>broj) { if(nova.dodadiElement(broj)==0) break; } cout<<"\nPred podreduvanje :"; nova.pecati(); nova.podreduvanje(); cout<<"\nPosle podreduvanje :"; nova.pecati(); return 0; } _______________________________________________________ Test primer: VLEZ: Kolku najmnogu elementi }e ima nizata? 10 Vnesete gi elementite od nizata : 4 -3 7 -11 9 0 x Programata pe~ati: Pred podreduvawe : Elementite na nizata se: 4 -3 7 -11 9 0 Posle podreduvawe : Elementite na nizata se: -11 -3 0 4 7 9

Page 106: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

106

9. Da se razvie klasa Niza koja sodr`i niza od celi broevi i metod za dobivawe na nizata kako unija od dve drugi nizi. Re{enie:

Klasa Niza

int a[20], n nizata i brojot na elementi od nizata

void pecati() funkcija za pe~atewe na nizata

int dodadiElement(int element)

funkcija za dodavawe elementi vo nizata

int zemiElement(int i) funkcija za dobivawe vrednost na elementot od nizata so indeks i

int brojElementi() funkcija koja go dava brojot na elementi od nizata

void duplikati() funkcija koja gi otstranuva duplikatite vo nizata

void unija(Niza &niza1, Niza &niza2)

funkcija za dobivawe nova niza kako unija na dve nizi

Vlezni promenlivi Izlezni promenlivi

broj, el, i pomo{ni promenlivi

niza1, niza2,

nizaUnija

vleznite nizi i nizata unija

#include<iostream> using namespace std; class Niza { private: int a[20]; int n; public: Niza(int x)

Page 107: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

107

{ n=x; } ~Niza() {} int dodadiElement(int element) { if(n<20) { a[n]=element; n++; return 1; } else { cout<<"Nizata e celosno popolneta\n"; return 0; } } int brojElementi() { return n; } int zemiElement(int i) { if(i>=n) { cout<<"\nPogresen index\n"; return 0; } else return a[i]; } void duplikati() { int i=0, j, p; while(i<n) { for(j=i+1; j<n; j++) if(a[i]==a[j]) { for(p=j; p<n; p++)

Page 108: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

108

{ a[p]=a[p+1]; } n--; } if(a[i]!=a[i+1]) i++; } } void unija(Niza &niza1, Niza &niza2) { int i; for(i=0; i<niza1.brojElementi(); i++) dodadiElement(niza1.zemiElement(i)); for(i=0; i<niza2.brojElementi(); i++) dodadiElement(niza2.zemiElement(i)); duplikati(); } void pecati() { cout<<"\nElementite na nizata se : \n"; for(int i=0; i<n; i++) cout<<a[i]<<" "; cout<<"\n"; } }; int main() { int broj, i, el; Niza niza1(0), niza2(0), nizaUnija(0); cout<<"Kolku elementi ke ima prvata niza? "; cin>>broj; cout<<"Vnesete gi elementite od prvata niza : "; for(i=0; i<broj; i++) { cin>>el; if(niza1.dodadiElement(el)==0) break; } cout<<"Kolku elementi ke ima vtorata niza? "; cin>>broj;

Page 109: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

109

cout<<"Vnesete gi elementite od vtorata niza : "; for(i=0; i<broj; i++) { cin>>el; if(niza2.dodadiElement(el)==0) break; } nizaUnija.unija(niza1, niza2); cout<<"\nPrvata niza e :"; niza1.pecati(); cout<<"\nVtorata niza e :"; niza2.pecati(); cout<<"\nUnijata na nizite e :"; nizaUnija.pecati(); return 0; } _______________________________________________________ Test primer: VLEZ: Kolku elementi }e ima prvata niza? 4 Vnesete gi elementite od prvata niza : 1 2 3 4 x Kolku elementi }e ima vtorata niza? 5 Vnesete gi elementite od vtorata niza : 3 4 5 6 7 x Programata pe~ati: Prvata niza e : Elementite na nizata se: 1 2 3 4 Vtorata niza e : Elementite na nizata se: 3 4 5 6 7 Unijata na nizite e : Elementite na nizata se: 1 2 3 4 5 6 7

Page 110: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

110

10. Da se razvie klasa Kniga so naslov, avtor i cena, kako i kopi-konstruktor za knigata. Re{enie:

Klasa Kniga

char naslov[50], avtor[20] naslovot i avtorot na knigata

int cena cena na knigata

Kniga(Kniga &k) kopi-konstruktor

void pecati() funkcija za pe~atewe na podatocite od knigata

char *getNaslov(),char *getAvtor()

funkcii za dobivawe na naslovot i avtorot na knigata

int getCena() funkcija za dobivawe na cenata na knigata

Vlezni promenlivi Izlezni promenlivi

i, c pomo{ni promenlivi

k, kopija originalnata kniga i kopijata

naslov[50], avtor[25]

naslovot i avtorot na knigata

cena cenata na knigata

#include<iostream> #include<string.h> using namespace std; class Kniga { private:

Page 111: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

111

char naslov[50]; char avtor[25]; int cena; public: Kniga() { *naslov=*avtor='\0'; cena=0; } Kniga(char *i, char *a, int c) { int dolzina=strlen(i); strncpy(naslov,i, dolzina); naslov[dolzina]='\0'; dolzina=strlen(a); strncpy(avtor,a, dolzina); avtor[dolzina]='\0'; cena=c; } ~Kniga() {} Kniga(Kniga &k) { strcpy(naslov,k.getNaslov()); strcpy(avtor,k.getAvtor()); cena=k.getCena(); } char *getNaslov() { return naslov; } char *getAvtor() { return avtor; } int getCena() { return cena; } void pecati() { cout<<"\nNaslov : "<<naslov<<endl;

Page 112: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

112

cout<<"Avtor : "<<avtor<<endl; cout<<"Cena : "<<cena<<endl; } }; int main() { int cena, i; char naslov[50], avtor[25], c; cout<<"Vnesete go naslovot na knigata : "; i=0; while((c=getchar())!='\n') {

naslov[i]=c; i++; } naslov[i]='\0'; cout<<"Vnesete go imeto na avtorot : "; i=0; while((c=getchar())!='\n') { avtor[i]=c; i++; } avtor[i]='\0'; cout<<"Vnesete cena na knigata : "; cin>>cena; Kniga k(naslov,avtor,cena); cout<<"\nVnesenata kniga e "; k.pecati(); Kniga kopija(k); cout<<"\nKopiranata kniga e :"; kopija.pecati(); return 0; }

Page 113: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

113

_______________________________________________________ Test primer: VLEZ: Vnesete go naslovot na knigata : "Zlostorstvo i kazna" Vnesete go avtorot na knigata : Dostoevski Vnesete cena na knigata : 400 Programata pe~ati: Vnesenata kniga e : Naslov : "Zlostorstvo i kazna" Avtor : Dostoevski Cena : 400 Kopiranata kniga e : Naslov : "Zlostorstvo i kazna" Avtor : Dostoevski Cena : 400

Page 114: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

114

11. Da se razvie klasa Kniga so naslov, avtor i cena, i da se preoptovari operatorot za pe~atewe na ekran <<. Re{enie:

Klasa Kniga

char naslov[50], avtor[20] naslov i avtorot na knigata

int cena cena na knigata

friend ostream & operator<<(ostream &prikazi, Kniga &k)

preoptovaruvawe na operatorot <<

char *getNaslov(),char *getAvtor()

funkcii za dobivawe na naslovot i avtorot na knigata

int getCena() funkcija za dobivawe na cenata na knigata

Vlezni promenlivi Izlezni promenlivi

i, c pomo{ni promenlivi

k kniga naslov[50], avtor[25]

naslovot i avtorot na knigata

cena cenata na knigata

#include<iostream> #include<string.h> using namespace std; class Kniga { private: char naslov[50]; char avtor[25];

Page 115: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

115

int cena; public: Kniga() { *naslov=*avtor='\0'; cena=0; } Kniga(char *i, char *a, int c) { int dolzina=strlen(i); strncpy(naslov,i, dolzina); naslov[dolzina]='\0'; dolzina=strlen(a); strncpy(avtor,a, dolzina); avtor[dolzina]='\0'; cena=c; } ~Kniga() {} char *getNaslov() { return naslov; } char *getAvtor() { return avtor; } int getCena() { return cena; } friend ostream & operator<<(ostream &prikazi, Kniga &k) { prikazi<<"\nKniga :"<<endl; prikazi<<"Naslov : "<<k.getNaslov()<<endl; prikazi<<"Avtor : "<<k.getAvtor()<<endl; prikazi<<"Cena : "<<k.getCena()<<endl; return prikazi; } }; int main()

Page 116: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

116

{ int cena, i; char naslov[50], avtor[25], c; cout<<"Vnesete go naslovot na knigata : "; i=0; while((c=getchar())!='\n') {

naslov[i]=c; i++; } naslov[i]='\0'; cout<<"Vnesete go imeto na avtorot : "; i=0; while((c=getchar())!='\n') { avtor[i]=c; i++; } avtor[i]='\0'; cout<<"Vnesete cena na knigata : "; cin>>cena; Kniga k(naslov,avtor,cena); cout<<k; return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go naslovot na knigata : "Zlostorstvo i kazna" Vnesete go avtorot na knigata : Dostoevski Vnesete cena na knigata : 400 Programata pe~ati: Kniga : Naslov : "Zlostorstvo i kazna" Avtor : Dostoevski Cena : 400

Page 117: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

117

12. Da se razvie klasa za rabota so kompleksen broj so preoptovaruvawe na operatorite +(sobirawe) i *(mno`ewe). Re{enie:

Klasa Kompleksen

int realen, imaginaren realniot i imaginarniot del

void pecati() funkcija za pe~atewe na karakteristikite na triagolnikot

Kompleksen operator+(Kompleksen k) preotovaruvawe na operatorot +

Kompleksen operator*(Kompleksen k) preotovaruvawe na operatorot *

Vlezni promenlivi Izlezni promenlivi

re, im

promenlivi za realniot i imaginarniot del k3, k4 zbirot i proizvodot

na k1 i k2

k1, k2 kompleksni broevi

#include<iostream> using namespace std; class Kompleksen { private: int realen, imaginaren; public: Kompleksen() { realen=imaginaren=0; } Kompleksen(int r, int i) {

Page 118: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

118

realen=r; imaginaren=i; } ~Kompleksen() {} int getRealen() { return realen; } int getImaginaren() { return imaginaren; } void pecati() { cout<<"\n"<<realen<<"+ i*("<<imaginaren<<") \n"; } Kompleksen operator+(Kompleksen k) { int re=k.getRealen(); int im=k.getImaginaren(); int pomreal, pomimag; pomreal=realen+re; pomimag=imaginaren+im; Kompleksen pom(pomreal, pomimag); return pom; } Kompleksen operator*(Kompleksen k) { int re=k.getRealen(); int im=k.getImaginaren(); int pomreal, pomimag; pomreal=realen*re-imaginaren*im; pomimag=realen*im+imaginaren*re; Kompleksen pom(pomreal, pomimag); return pom; } }; int main() {

Page 119: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

119

int re, im; cout<<"Vnesete go prviot kompleksen broj : "; cin>>re>>im; Kompleksen k1(re,im); cout<<"Vnesete go vtoriot kompleksen broj : "; cin>>re>>im; Kompleksen k2(re,im); Kompleksen k3=k1+k2; Kompleksen k4=k1*k2; cout<<"\nPrviot kompleksen broj e "; k1.pecati(); cout<<"Vtoriot kompleksen broj e "; k2.pecati(); cout<<"Nivniot zbir iznesuva "; k3.pecati(); cout<<"Nivniot proizvod iznesuva "; k4.pecati(); system("pause"); return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go prviot kompleksen broj : 6 -11 Vnesete go vtoriot kompleksen broj : 4 17 Programata pe~ati: Prviot kompleksen broj e 6 + i*(-11) Vtoriot kompleksen broj e 4 + i*(17) Nivniot zbir iznesuva 10 + i*(6) Nivniot proizvod iznesuva 211 + i*(58)

Page 120: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

120

13. Da se razvie klasa Niza koja sodr`i niza od celi broevi i da se preoptovari operatorot [ ] za dobivawe na elementite od nizata. Re{enie:

Klasa Niza

int a[20], n nizata i brojot na elementi od nizata

int &operator[](int i) preoptovaruvawe na operatorot [ ]

int dodadiElement(int element)

funkcija za dodavawe elementi vo nizata

int getSize() funkcija za dobivawe na brojot na elementi od nizata

Vlezni promenlivi Izlezni promenlivi

broj pomo{na promenliva

nova niza

#include<iostream> using namespace std; class Niza { private: int a[20]; int n; public: Niza(int x) { n=x; } ~Niza() {} int dodadiElement(int element) { if(n<20)

Page 121: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

121

{ a[n]=element; n++; return 1; } else { cout<<"Nizata e celosno popolneta\n"; return 0; } } int getSize() { return n; } int &operator[](int i) { if(i<0 || i>=n) { cout<<"\nPogresen index! \n"; exit(-1); } else return a[i]; } }; int main() { int broj; Niza nova(0); cout<<"Vnesete gi elementite od nizata : "; while(cin>>broj) { if(nova.dodadiElement(broj)==0) break; } cout<<"\nVnesenata niza e :\n"; for(broj=0; broj<nova.getSize(); broj++) cout<<nova[broj]<<" "; cout<<endl; return 0; }

Page 122: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

122

_______________________________________________________ Test primer: VLEZ: Vnesete gi elementite od nizata : 13 -21 36 55 -101 x Programata pe~ati: Elementite na nizata se: 13 -21 36 55 -101

Page 123: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

123

14. Da se razvie klasa Delewe koja sodr`i realen broj i da se preoptovari operatorot za delewe /. Re{enie:

Klasa Delenje

float broj realen broj

Delenje operator/(Delenje d) preoptovaruvawe na operatorot /

void pecati() funkcija za pe~atewe na vrednosta na realniot broj

float getBroj() funkcija za dobivawe na realniot broj

Vlezni promenlivi Izlezni promenlivi

broj pomo{na promenliva

broj1, broj2,

rezultat

objekti od klasata Delewe

#include<iostream> using namespace std; class Delenje { private: float broj; public: Delenje(float x=1.0) { broj=x; } ~Delenje() {} Delenje operator/(Delenje d) { if(d.getBroj()==0.0) { cout<<"\nNema delenje so 0! \n";

Page 124: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

124

} else { Delenje rez(broj/d.getBroj()); return rez; } } float getBroj() { return broj; } void pecati() { cout<<broj; } }; int main() { int broj; cout<<"Vnesete go delenikot : "; cin>>broj; Delenje broj1(broj); cout<<"Vnesete go delitelot : "; cin>>broj; Delenje broj2(broj); Delenje rezultat=broj1/broj2; broj1.pecati(); cout<<" / "; broj2.pecati(); cout<<" = "; rezultat.pecati(); return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go delenikot : 10 Vnesete go delitelot : 3 Programata pe~ati: 10 / 3 = 3.33333

Page 125: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

125

15. Da se napi{e klasa za telo od 3D prostor so funkcii za povr{ina i volumen. Od nea da se izvedat klasite za sfera i kvadar. Re{enie:

Klasa Telo

virtual float povrsina()=0 funkcija za povr{ina na telo

virtual float volumen()=0 funkcija za volumen na telo

virtual void pecati() funkcija za pe~atewe na podatocite na teloto

Klasa Sfera

int radius radius na sferata

Klasa Kvadar

int a, b, c strani na kvadarot

Vlezni promenlivi Izlezni promenlivi

s, k sfera i kvadar

#include<iostream> using namespace std; class Telo { public: virtual float povrsina()=0; virtual float volumen()=0; virtual void pecati() {

Page 126: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

126

cout<<"Povrsina : "<<povrsina()<<endl; cout<<"Volumen : "<<volumen()<<endl; } }; class Sfera: public Telo { private: int radius; public: Sfera(int r=0) { radius=r; } float povrsina() { return 4*radius*radius*3.14; } float volumen() { return (4*radius*radius*radius*3.14)/3; } void pecati() { cout<<"\nKrug so radius "<<radius<<endl; Telo::pecati(); } }; class Kvadar: public Telo { private: int a, b ,c; public: Kvadar(int x=0, int y=0, int z=0) { a=x; b=y; c=z; } float povrsina() {

Page 127: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

127

return 2*(a*b+b*c+c*a); } float volumen() { return a*b*c; } void pecati() { cout<<"Kvadar so strani "<<a<<", "<<b<<" i "<<c; Telo::pecati(); } }; int main() { Sfera s(10); Kvadar k(2,3,4); s.pecati(); cout<<endl; k.pecati(); return 0; } _______________________________________________________ Test primer: Programata pe~ati: Krug so radius 10 Povr{ina : 1256 Volumen : 4186.67 Kvadar so strani 2, 3 i 4 Povr{ina : 52 Volumen : 24

Page 128: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

128

16. Da se napi{e klasa za to~ka vo 2D prostor so funkcija za rastojanie pome|u dve to~ki, i od nea da se nasledi klasa za to~ka vo 3D, isto taka so funkcija za rastojanie pome|u dve to~ki vo 3D prostor. Re{enie:

Klasa Tocka2D

int x, y koordinati na to~kata

int getX(), getY() funkcii za dobivawe na vrednostite na x i y

float rastojanie(Tocka2D &t)

rastojanie pome|u to~kite od 2D prostor

void pecati() funkcija za pe~atewe na koordinatite na to~kata

Klasa Tocka3D

int z koordinatata z na to~kata

int getZ() funkcija za dobivawe na vrednosta na z

float rastojanie(Tocka3D &t)

rastojanie pome|u to~kite od 3D prostor

void pecati() funkcija za pe~atewe na koordinatite na to~kata

Vlezni promenlivi Izlezni promenlivi

t1, t2 to~ki od 2D prostor

k1, k2 to~ki od 3D prostor

Page 129: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

129

#include<iostream> #include<math.h> using namespace std; class Tocka2D { private: int x, y; public: Tocka2D(int a, int b) { x=a; y=b; } ~Tocka2D() {} int getX() { return x; } int getY() { return y; } float rastojanie(Tocka2D &t) { int tx=t.getX(); int ty=t.getY(); return sqrt((x-tx)*(x-tx)+(y-ty)*(y-ty)); } void pecati() { cout<<x<<", "<<y; } }; class Tocka3D: public Tocka2D { private: int z; public: Tocka3D(int a, int b, int c):Tocka2D(a,b)

Page 130: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

130

{ z=c; } ~Tocka3D() {} int getZ() { return z; } float rastojanie(Tocka3D &t) { int mx=Tocka2D::getX(); int my=Tocka2D::getY(); int tx=t.getX(); int ty=t.getY(); int tz=t.getZ(); return sqrt((mx-tx)*(mx-tx)+(my-ty)*(my-ty)+(z-tz)*(z-tz)); } void pecati() { Tocka2D::pecati(); cout<<", "<<z; } }; int main() { Tocka2D t1(3,4); Tocka2D t2(0,0); Tocka3D k1(1,2,2); Tocka3D k2(0,0,0); cout<<"Tocka vo 2D : ("; t1.pecati(); cout<<")\n"; cout<<"Tocka vo 3D : ("; k1.pecati(); cout<<")\n"; cout<<"\nRastojanie na tockata od 2D do koordinaten pocetok e "<<t1.rastojanie(t2)<<endl; cout<<"Rastojanie na tockata od 3D do koordinaten pocetok e "<<k1.rastojanie(k2)<<endl;

Page 131: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

131

return 0; } _______________________________________________________ Test primer: Programata pe~ati: To~ka vo 2D : (3, 4) To~ka vo 3D : (1, 2, 2) Rastojanie na to~kata od 2D do koordinaten po~etok e 5 Rastojanie na to~kata od 3D do koordinaten po~etok e 3

Page 132: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

132

17. Da se razvie klasa Smetka koja sodr`i ime i prezime na korisnikot i iznos na smetkata, kako i metod za dodavawe i podigawe pari od smetkata i metod za pe~atewe na podatocite od smetkata. Od nea da se izvede klasa SmetkaMinus vo koja }e bide dozvoleno da se odi vo minus do prethodno opredelena suma. Re{enie:

Klasa Smetka

char ime[15], prezime[20] imeto i prezimeto na korisnikot

int iznos iznos na smetkata

void pecati() funkcija za pe~atewe na podatocite od smetkata

void dodadiSuma(int suma)

funkcija za dodavawe pari na smetkata

void podigniSuma(int suma)

funkcija za podigawe pari od smetkata

int getIznos() funkcija za dobivawe na iznosot na pari na smetkata

void setIznos(int i) funkcija za dodeluvawe vrednost na iznosot na pari na smetkata

Klasa SmetkaMinus

int minus dozvolen minus (pozitiven broj)

void podigniSuma(int suma)

funkcija za podigawe pari od smetkata

Page 133: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

133

Vlezni promenlivi Izlezni promenlivi

suma promenliva za vnesenite sumi

s smetka

ime[15], prezime[20]

imeto i prezimeto na korisnikot

#include<iostream> #include<string.h> using namespace std; class Smetka { private: char ime[15]; char prezime[20]; int iznos; public: Smetka(char *i='\0', char *p='\0', int suma=0) { strcpy(ime,i); strcpy(prezime,p); iznos=suma; } ~Smetka() {} void dodadiSuma(int suma) { if(suma<=0) cout<<"Ne se dodava negativna suma\n"; else iznos+=suma; } void podigniSuma(int suma) { if(suma<=0) cout<<"Ne se podiga negativna suma\n"; else

Page 134: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

134

{ if(iznos-suma<0) cout<<"Ne e dozvolen minus na smetkata\n"; else iznos-=suma; } } int getIznos() { return iznos; } void setIznos(int i) { iznos=i; } void pecati() { cout<<"\nIme : "<<ime<<endl; cout<<"Prezime : "<<prezime<<endl; cout<<"Iznos na smetka : "<<iznos<<endl; } }; class SmetkaMinus: public Smetka { private: int minus; public: SmetkaMinus(char *i='\0', char *p='\0', int suma=0, int min=0):Smetka(i,p,suma) { minus=min*(-1); } ~SmetkaMinus() {} void podigniSuma(int suma) { int iz=Smetka::getIznos(); if(suma<=0) cout<<"Ne se podiga negativna suma\n"; else

Page 135: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

135

{ if(iz-suma<minus) cout<<"Ne e dozvolen tolku golem minus na smetkata\n"; else { iz-=suma; Smetka::setIznos(iz); } } } }; int main() { int suma, minus; char ime[15], prezime[10]; cout<<"Vnesete go imeto na korisnikot : "; cin>>ime; cout<<"Vnesete go prezimeto na korisnikot : "; cin>>prezime; cout<<"Vnesete poceten iznos na smetkata : "; cin>>suma; cout<<"Vnesete dozvolen minus na smetkata : "; cin>>minus; SmetkaMinus s(ime,prezime,suma, minus); s.pecati(); cout<<"\nDodadete pari na smetkata : "; cin>>suma; s.dodadiSuma(suma); s.pecati(); cout<<"\nPodignete pari od smetkata : "; cin>>suma; s.podigniSuma(suma); s.pecati(); return 0; }

Page 136: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

136

_______________________________________________________ Test primer: VLEZ: Vnesete go imeto na korisnikot : Elena Vnesete go prezimeto na korisnikot: Doneska Vnesete po~eten iznos na smetkata : 5000 Vnesete dozvolen minus na smetkata : 2000 Programata pe~ati: Ime : Elena Prezime : Doneska Iznos na smetka : 5000 Dodadete pari na smetkata : 1000 Ime : Elena Prezime : Doneska Iznos na smetka : 6000 Podignete pari od smetkata : 7000 Ime : Elena Prezime : Doneska Iznos na smetka : -1000

Page 137: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

137

18. Da se napi{e klasa za Vraboten koja sodr`i ime, prezime i plata na vraboteniot, kako i metod za pe~atewe na podatocite. Od nea da se izvede klasa Menaxer koja sodr`i i oddel so koj rakovodi menaxerot. Re{enie:

Klasa Vraboten

char ime[15], prezime[20] imeto i prezimeto na vraboteniot

int plata plata

void pecati() funkcija za pe~atewe na podatocite za vraboteniot

Klasa Menadzer

char oddel[20] oddel so koj rakovodi menaxerot

void pecati() funkcija za pe~atewe na podatocite za menaxerot

Vlezni promenlivi Izlezni promenlivi

plata plata

v, m vraboten i menaxer ime[15],

prezime[20], oddel[20]

imeto, prezimeto i oddelot

c pomo{na promenliva

#include<iostream> #include<string.h> #include<ctype.h> using namespace std;

Page 138: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

138

class Vraboten { private: char ime[15]; char prezime[20]; int plata; public: Vraboten(char *i='\0', char *p='\0', int pl=0) { strcpy(ime,i); strcpy(prezime,p); plata=pl; } ~Vraboten() {} void pecati() { cout<<"\nIme : "<<ime<<endl; cout<<"Prezime : "<<prezime<<endl; cout<<"Plata : "<<plata<<" denari"<<endl; } }; class Menadzer: public Vraboten { private: char oddel[20]; public: Menadzer(char *i='\0', char *p='\0', int suma=0, char *o='\0'):Vraboten(i,p,suma) { strcpy(oddel,o); } ~Menadzer() {} void pecati() { cout<<"\nMenadzer :"; Vraboten::pecati(); cout<<"Oddel : "<<oddel<<endl; }

Page 139: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

139

}; int main() { int plata; char ime[15], prezime[20], oddel[20], c; cout<<"Vnesete go imeto na vraboteniot : "; cin>>ime; cout<<"Vnesete go prezimeto na vraboteniot : "; cin>>prezime; cout<<"Vnesete ja platata na vraboteniot : "; cin>>plata; cout<<"Dali vraboteniot e menadzer (Y/N) : "; cin>>c; c=toupper(c); if(c=='Y') { cout<<"Vnesete go oddelot na menadzerot : "; cin>>oddel; Menadzer m(ime,prezime,plata,oddel); m.pecati(); } else { Vraboten v(ime,prezime,plata); v.pecati(); } return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go imeto na vraboteniot : Marko Vnesete go prezimeto na vraboteniot: Bo`inovski Vnesete ja platata na vraboteniot: 25000 Dali vraboteniot e menaxer (Y/N) : y Vnesete go oddelot na menaxerot : Nabavki

Page 140: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

140

Programata pe~ati: Menaxer : Ime : Marko Prezime : Bo`inovski Plata : 25000 Oddel : Nabavki

Page 141: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

141

19. Da se razvie klasa Delewe koja sodr`i realen broj i da se preoptovari operatorot za delewe / koj pri delewe so nula dava poraka za gre{ka. Re{enie:

Klasa Delenje

float broj realen broj

Delenje operator/(Delenje d) throw(char*)

preoptovaruvawe na operatorot / so poraka za gre{ka pri delewe so nula

void pecati() funkcija za pe~atewe na vrednosta na realniot broj

float getBroj() funkcija za dobivawe na realniot broj

Vlezni promenlivi Izlezni promenlivi

broj pomo{na promenliva

broj1, broj2,

rezultat

objekti od klasata Delewe

#include<iostream> using namespace std; class Delenje { private: float broj; public: Delenje(float x=1.0) { broj=x; } ~Delenje() {} Delenje operator/(Delenje d) throw(char*) { if(d.getBroj()==0)

Page 142: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

142

{ char *pom; pom="Greska! So nula ne se deli!.\n"; throw pom; } Delenje rez(broj/d.getBroj()); return rez; } float getBroj() { return broj; } void pecati() { cout<<broj; } }; int main() { int broj; cout<<"Vnesete go delenikot : "; cin>>broj; Delenje broj1(broj); cout<<"Vnesete go delitelot : "; cin>>broj; Delenje broj2(broj); try { Delenje rezultat=broj1/broj2; cout<<endl; broj1.pecati(); cout<<" / "; broj2.pecati(); cout<<" = "; rezultat.pecati(); cout<<endl; } catch(char *s) { cout<<s;

Page 143: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

143

} return 0; } _______________________________________________________ Test primer: VLEZ: Vnesete go delenikot : 15 Vnesete go delitelot : 0 Programata pe~ati: Gre{ka! So nula ne se deli!

Page 144: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

144

20. Da se razvie klasa Niza koja sodr`i niza od celi broevi i da se preoptovari operatorot [ ] za dobivawe na elementite od nizata koj dava poraka za gre{ka pri nevaliden indeks. Re{enie:

Klasa Niza

int a[20], n nizata i brojot na elementi od nizata

int &operator[](int i) throw(int)

preoptovaruvawe na operatorot [ ] koj dava poraka za gre{ka pri nevaliden indeks

int dodadiElement(int element)

funkcija za dodavawe elementi vo nizata

Vlezni promenlivi Izlezni promenlivi

broj, n, i pomo{ni promenlivi

nova niza

#include<iostream> using namespace std; class Niza { private: int a[20]; int n; public: Niza(int x) { n=x; } ~Niza() {} int dodadiElement(int element) { if(n<20) {

Page 145: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

145

a[n]=element; n++; return 1; } else { cout<<"Nizata e celosno popolneta\n"; return 0; } } int &operator[](int i) throw(int) { if(i<0 || i>=n) throw i; else return a[i]; } }; int main() { int broj, n, i; Niza nova(0); cout<<"Kolku elementi ke ima nizata? ";

cin>>n; cout<<"Vnesete gi elementite od nizata :\n"; for(i=0; i<n; i++) {

cout<<"a["<<i<<"] = "; cin>>broj; nova.dodadiElement(broj);

} try { cout<<"Vnesete indeks na elementot koj ve interesira : "; cin>>broj; cout<<nova[broj]; } catch(int i) { cout<<"Ne postoi element a["<<i<<"] \n"; }

Page 146: pisi@mt.net.mk , , …matematika.mk/wp-content/uploads/Cpp_Zbirka_Fakultet_PISI.pdf · Programski jazik C++ ... 560, + 32 380 - 418 pisi@mt.net.mk , , ... Test primer: VLEZ: Vnesete

Programski jazik C++ PISI Funkcii

146

return 0; } _______________________________________________________ Test primer: VLEZ: Kolku elementi }e ima nizata ? 5 Vnesete gi elementite od nizata: a[0]=33 a[1]= -7 a[2]=12 a[3]=0 a[4]=10 Vnesete indeks na elementot koj ve interesira : 7 Programata pe~ati: Ne postoi element a[7].