You are on page 1of 127

1.

Funksionet

Funksioni sht nj grup i shprehjeve dhe komandave t ndryshme q kur


ekzekutohet kryen nj pun t caktuar. Funksioni pas kryerjes s puns
mund t kthej rezultat pr punn e kryer apo edhe mund t mos kthej
rezultat (void). Forma abstrakte e funksionit sht dhn n figurn
1. Rezultati/dalja e nj funksioni mund t jet hyrje e nj funksioni tjetr.

Prvojat tregojn q mnyra m e mir pr t zhvilluar dhe mirmbajtur


programe t mdha sht konstruktimi i tyre nga pjes t vogla
(module/nnprograme). Figura 2 paraqet se si nj program i shkruar i tri n
funksionin main sht ndar n pjes t vogla (funksione).

Prdorimi i funksioneve lehtson dizajnin, ndrtimin, debugimin, zgjerimin,


modifikimin, riprdorim dhe organizmin m t mir t programit. Mnyra se si
funksioni main i thirr funksionet e tjera ka nj analogji sikurse shefi me
puntort. Shefi (funksioni thirrs) i krkon puntorit (funksioni i thirrur) pr t
kryer nj pun dhe pr t kthyer prgjigje
20 kur t kryhet puna.
20

Nj nga arsyet kryesore pr prdorimin e funksioneve sht ndarja e programit


n pun t vogla dhe nse dika nuk shkon mir, ather sht m e leht t
identifikohet se ku sht problemi.

1.1.

Funksionet e paracaktuara

Funksionet paracaktuara jan funksione q jan ndrtuar n C + + pr t kryer


disa operacione standarde. Funksionet e paracaktuara jan t grupuara n
librari t ndryshme t baz t kategorive. N C + +, koncepti i nj funksioni
sht i ngjashm me at t nj funksioni n algjebr. Pr shembull, do
funksion ka nj emr dhe n varsi t vlerave t prcaktuara nga prdoruesi,
ai bn llogaritjet e duhura. Disa nga funksionet e paracaktuara n C++ jan
y
abs(x), pow(x,y), sin(x), cos(x), log(x) etj. Funksioni pow (x, y), llogarit x ,
4
q sht, vlera e x e ngritur n fuqin y. Pr shembull, pow (2, 4) = 2
=
16.

1. T shkruhet funksioni pr llogaritjen e vlers absolute pr nj vler t


caktuar.

#include <iostream>
#include <cmath>
using namespace std;

int main ()
{
cout<< "Vlera absolute e 3.1416 sht "
<< abs (3.1416)
<< endl;
cout<< "Vlera absolute e -2.89 sht "
<< abs (-2.89) << endl;
system("pause");
return 0;
}

2. T shkruhet funksioni pr llogaritjen e gjatsis s hipotenuzs pr


trekndshin knddrejt, nse dihen gjatsia e brinjs a dhe brinjs b.

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
double a, b;
cout<<"Llogaritja e hipotenuzs pr trekndshin kndrejt\n";
cout << "Shno gjatsin e brinjs a:";
cin >> a ;
cout << "Shno gjatsin e brinjs b:";
cin >>b;
cout << "Gjatsia e hipotenuzs:

" << hypot(a, b) << '\n';

system("pause");
return 0;
}

3. T shkruhet programi pr llogaritjen e siprfaqes s rrethit duke prdorur


funksionin pow.

#include<iostream >
using namespace std;

int main()
{
float r, s;
const float pi=3.14159;
cout<< "Vlera e rrezes r = ";
cin >> r;

s = pi*pow(r,2);
//pow(r,2) e ngrit ne katror rrezen r
cout<< "\nSiperfaqja e rrethit: s = "
<< s << endl;
return 0;
}

4. T shkruhet programi pr llogaritjen e rrnjs katrore t nj numri t


dhn, duke e prdorur funksionin sqrt.

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
double x = 25;
cout<<"Rrenja katrore e "<<x
<<" eshte " <<sqrt(x);
system("pause");
return 0;
}

5. T shkruhet programi pr llogaritjen e sinusit t nj kndi t caktuar


duke prdorur funksionin sin.

#include <iostream>
#include <cmath>
using namespace std;

#define PI 3.14159265

int main ()
{
double kendi;
kendi = 30.0;
cout<<"Sinusi i " << kendi
<< " shkalleve eshte "
<< sin (kendi*PI/180)
<<endl;
system("pause");
return 0;
}

6. T shkruhet programi pr llogaritjen e kosinusit t nj kndi t caktuar


duke prdorur funksionin cos.

#include <iostream>
#include <cmath>
using namespace std;

#define PI 3.14159265

int main ()
{
double kendi;

kendi = 45.0;
cout<<"Kosinusi i " << kendi
<< " shkalleve sht
<< cos (kendi*PI/180)
<<endl;
system("pause");
return 0;
}

7. T shkruhet programi pr llogaritjen e tangjentit pr nj vler t


caktuar, duke prdorur funksionin tan.

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
double x = 0.3333;
cout<<"Tangjenti i " <<x
<<" sht " << tan(x);

system("pause");
return 0;
}

8. T shkruhet programi pr llogaritjen


funksionin exp.

shprehjes

y=e

duke prdorur

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
double x = 2.7;
cout<<"'e' e ngritur ne fuqin 2.7 sht "
<<exp(x)
<<endl;
system ("pause");
return 0;
}

9. T shkruhet programi pr llogaritjen e ln(x) pr nj vler t caktuar duke e


prdorur funksionin log.

#include <iostream>
#include <cmath>
using namespace std;

int main ()
{
double x=5.8;
cout<<"ln("<<x<<") = "
<<log (x);
system("pause");
return 0;
}

1.2.

Funksionet e caktuara nga prdoruesi

C + + nuk ofron t gjitha funksionet e mundshme q i nevojiten prdoruesit


, sepse nevojat e secilit prdorues mund t jen t ndryshme dhe specifike,
prandaj pr kt arsye duhet t shkruhen funksionet e caktuara nga
prdoruesi. Funksionet e caktuara nga prdoruesi, n C++ klasifikohen n dy
kategori:

Funksione q kthejn vler kto funksione kan nj tip kthyes


dhe duke prdorur deklaratn return e kthejn rezultatin e llojit
t caktuar t t dhnave.

Funksione boshe (q nuk kthejn vler) kto funksione nuk kan tip
kthyes t t dhnave. Kto funksione nuk e prdorin deklaratn
return pr t kthyer rezultat.

1.2.1.

Funksionet q kthejn vler

Sintaksa e deklarimit t nj funksioni t caktuar nga prdoruesi dhe i cili


kthen rezultat sht si m posht:

tipi emri_funksionit(tipi1 par1, tipi2 par3 ...)


{
deklarimet dhe shprehjet tjera_
}

emri_funksionit secili identifikator valid

tipi tipi i t dhnave pr funksionin/rezultatin

tipi1, tipi2 tipi i t dhnave pr parametrat

par1,
parametrave

par2

emrat

Figura 4 paraqet deklarimin dhe implementimin e funksionit ngritjaNeFuqi i


cili parametrin e par (baza) e ngrit n fuqi me parametrin e dyt
(eksponenti)

10.

T shkruhet programi i cili prmes funksionit max e kthen si rezultat


numrin m t madh n mes numrave x dhe y.

#include <iostream>
using namespace std;

double max(double x, double y)


{
double max;
if (x >= y)
max = x;
elsemax = y;

return max;
}

int main()
{
double a,b;
a=42;
b=567;

cout<< "Numri m i madh sht: "


<<max(a,b)
<<endl;

system("pause");
return 0;
}

11.

Krijo funksionin hipotenuza i cili llogarit gjatsin e hipotenuzs s


trekndshit kur dihet dihen gjatsit e dy krahve tjer. Funksioni duhet t
ket dy parametra hyrs t tipit double dhe t kthej hipotenuzn t tipit
double.

#include <iostream>
#include <iomanip>
using namespace std;

double hypotenuza( double, double );

int main()
{
double brinja1, brinja2;
cout << setiosflags( ios::fixed | ios::showpoint );

cout << "Jep gjatsin e brinjs b1= ";


cin >> brinja1;
cout << "Jep gjatsin e brinjs b2= ";
cin >> brinja2;
cout << "Hypotenuza: " << setprecision(2)
<< hypotenuza( brinja1, brinja2 )
<< endl<<endl;

system("pause");
return 0;
}

double hypotenuza( double b1, double b2 )


{
return sqrt(b1 * b1 + b2 * b2 );
}

12.

T shkruhet funksioni shumfshi i cili prcakton pr iftin e numrave t


plot nse numri i dyt sht shumfish i numrit t par. Funksioni

duhet t ket dy parametra t tipit t plot dhe t kthej si rezultat


true ose false.

#include <iostream>
using namespace std;

bool shumefishi( int, int );

int main()
{
int x, y;
for ( int i = 1; i <= 3; ++i )
{
cout << "Shtyp dy numra t plot: ";
cin >> x >> y;
if ( shumefishi( x, y ) )
cout << y << " sht shumfish i " << x << "\n\n";
elsecout << y << " nuk sht shumfish i " << x << "\n\n";

cout << endl;


system("pause");
return 0;
}

bool shumefishi( int a, int b )


{
return !( b % a );
}

13.

T shkruhet funksioni sekondat i cili merr tre parametra t tipit int


(meqense koha sht pozitive, parametrat dhe funksioni t jen t
unsigned int). Funksioni t llogaris diferencn n mes dy kohve t dhna
dhe ta kthej rezultatin n sekonda.

#include <iostream>
using namespace std;

unsigned int sekondat(unsigned, unsigned, unsigned );

int main()
{
unsigned ora, minuta, sekonda, temp;
cout << "Jep kohn e par n formatin hh mm ss (p.sh 12 15 20): ";
cin >> ora >> minuta >> sekonda;
temp = sekondat( ora, minuta, sekonda );
cout << "Jep kohn e dyt n formatin hh mm ss (p.sh 12 15 20): ";
cin >> ora >> minuta >> sekonda;
cout << "Diferenca n mes kohs 1 dhe 2 sht "
<< sekondat( ora, minuta, sekonda ) - temp
<< " sekonda" << endl;

system("pause");
return 0;
}

unsigned int sekondat( unsigned ora, unsigned min, unsigned sec)


{
return 3600 * ( ora >= 12 ? ora - 12 : ora ) + 60 * min + sec;

14.

T shkruhet funksioni perfekt i cili prcakton nse parametri i tij


sht
numr
perfekt.
(Numri
sht
perfekt
nse
shuma
e
faktorve/plotpjestuesve t tij duke prfshir edhe 1, por jo vetveten sht
baras me numrin. p.sh 6=1+2+3). Duke shfrytzuar funksionin perfekt t
shtypen t gjith numrat perfekt nga 1 deri n 5000.

#include <iostream>
using namespace std;

bool perfekt(int numri )


{
int shuma = 1;
for ( int i = 2; i <= numri / 2; ++i )
if ( numri % i == 0 )
shuma += i;
return shuma == numri ? true : false;
}

int main()
{
cout << "Pr numrat e plot nga 1 deri 5000:\n";
for ( int j = 2; j <= 5000; ++j )

if ( perfekt( j ) )
cout << j << " sht perfekt\n";

cout << endl;


system("pause");
return 0;
}

15.

T shkruhet funksioni distanca i cili llogarit distancn n mes dy


pikave. Funksioni t ket 4 parametra t tipit double dhe si rezultat t kthej
distancn e tipit double.

#include <iostream>
#include <iomanip>
using namespace std;

double distanca( double, double, double, double );

int main()
{
double x1, y1, x2, y2, dist;
cout << "Shtyp koordinatat e piks 1: ";
cin >> x1 >> y1;
cout << "Shtyp koordinatat e piks 2: ";
cin >> x2 >> y2;
dist = distanca( x1, y1, x2, y2 );
cout << setiosflags( ios::fixed | ios::showpoint )
<< "Distanca n mes ("
<< setprecision(2)
<< x1 << ", " << y1 << ") dhe ("
<< x2 << ", " << y2 << ") sht "
<< dist << endl;

system("pause");
return 0;

double distanca( double x1, double y1, double x2, double y2 )


{
return sqrt( pow( x1 - x2, 2 ) + pow( y1 - y2, 2 ) );
}

16.

T shkruhet funksioni shumezimi i cili gjeneron n mnyr t


rastsishme dy numra nga 0-10 dhe pyet pr prodhimin n mes e tyre.
Prmes nj unaze t prsritet procesi pr m shum numra dhe n fund
t shtypet se sa tentime kan qen t sakta dhe sa t pasakta.

#include <iostream>
#include <ctime>
using namespace std;

void shumezimi();
void mesazhi(bool rasti);

int main()
{
srand(time(0));
shumezimi();

system("pause");
return 0;
}

void shumezimi()
{

int x, y, pergjigja, sakte = 0, gabim = 0, m=5;


for ( int i = 1; i <= m; ++i )
{
x = rand() % 10; //numr i rastit 0-9
y = rand() % 10; //numr i rastit 0-9
cout << "Sa bejne: " << x << " x " << y << "? ";
cin >> pergjigja;

while (pergjigja != x * y )
{
++gabim;
cout << "Gabim. Provo prseri\n";
cout << "Sa bjn: " << x << " x " << y << "? ";
cin >> pergjigja;
}
++sakte;
cout << "Sakte. Urime!\n";
}

cout<< "Pyetje: "<<m


<< "\nTentime t sakta: " <<sakte
<< "\nTentime gabim: "<<gabim;
}

17.

T shkruhet programi i cili prmes funksionit aritmetika kryen veprimet


e mbledhjes, zbritjes, shumzimit dhe pjestimit pr dy numra t gjeneruar
n mnyr t rastsishme. Prmes funksionit menyja t pyetet pr
veprimin q duhet t kryhet (mbledhje, zbritje, shumzim, pjestim apo
kombinim i rastsishm). Veprimi t prsritet disa her dhe n fund t
shtypet se sa tentime kan qen t sakta dhe sa t pasakta.

#include <iostream>
#include <ctime>
using namespace std;

int menyja();
void aritmetika(); void
mesazhi_sakte(); void
mesazhi_gabim();
char v[]="\n------------------------------------------------------\n";

int main()
{
srand(time(0));
aritmetika();

system("pause");
return 0;
}

int menyja()
{
int opsioni;
do
{
cout<< "Zgjidh nj opsion nga 1-5."
<<v
<< "\nShtyp: 1 pr mbledhje."
<< "\nShtyp: 2 pr zbritje"
<< "\nShtyp: 3 pr shumzim."
<< "\nShtyp: 4 pr pjestim."
<< "\nShtyp: 5 pr kombinim t opsioneve nga 1 deri 4. "
<<v
<<"op = ";
cin >> opsioni;
} while (opsioni < 1 || opsioni > 5 );
return opsioni;
}

void mesazhi_gabim()
{

cout << "Gabim. Provo edhe njher.";


}

void mesazhi_sakte( void )


{
cout << "Mire. Vazhdo tutje.";
}

void aritmetika()
{

30
30

int x, y, pergjigjeLexuar, pergjigjeSakte, sakte = 0, gabim = 0, perseritje=5;


char shenja;
int zgjedhja = menyja();

for (int i = 1; i <= perseritje; ++i )


{
x = rand() % 10;
y = rand() % 10;

if (zgjedhja == 5) //nese zgjidhet opsioni 5 zgjidh ne menyre te rastit


{
zgjedhja = 1 + rand() % 4;
}
switch ( zgjedhja )
{
case 1:

// mbledhja

shenja = '+';
pergjigjeSakte = x + y;
break;
case 2:
// zbritja shenja
= '-'; pergjigjeSakte = x
- y; break;
case 3:
// shumezimi
shenja = '*';
pergjigjeSakte = x * y;
break;
case 4:

// pjesetimi

31
31

shenja = '/';
if (y == 0)
{
y = 1; // pjesetimi me zero
pergjigjeSakte = x / y;
}
else
{
x *= y;
}

pergjigjeSakte = x / y;

break;
}
cout << "\nSa bjn: " << x << " " << shenja << " " << y << "? ";
cin >> pergjigjeLexuar;

while (pergjigjeLexuar != pergjigjeSakte)


{
++gabim;
mesazhi_gabim();
cout << "\nSa bjn: " << x << " x " << y << "? ";
cin >> pergjigjeLexuar;
}
++sakte;
mesazhi_sakte();
}
cout<< v
<<"\nPyetje: "<<perseritje
<< "\nTentime t sakta: " <<sakte
<< "\nTentime gabim: "<<gabim <<endl;
}

1.2.2.

Funksionet q nuk kthejn vler

Funksionet boshe (q nuk kthejn vler) dhe funksionet q kthejn vler e


kan strukturn e njjt. T dy llojet e kan edhe kokn (heading) dhe trupin
(body). Funksionet boshe nuk kthejn rezultat, por vetm e kryejn nj pun
t caktuar dhe nuk e prdorin deklaratn return. Megjithat edhe tek kto
funksione mund t prdoret return pa ndonj vler kthyese. Pr t
deklaruar nj funksion bosh prdoret fjala void para emrit t funksionit, pr
tipin kthyes t t dhnave. Sintaksa e deklarimit sht si n vijim:

void

emri_funksionit(tipi1 par1, tipi2 par3 ...)

{
deklarimet dhe shprehjet tjera_
}

Edhe funksionet q kthejn vler edhe funksionet boshe, mund t ken apo
mos t ken parametra formal. Figura 5 paraqet deklarimin dhe implementimin e
funksionit printoNumrin i cili shtyp vlern e parametrit.

18.

T shkruhet funksioni
parametrit t tij.

void

shtyp_numrin

#include <iostream>
using namespace std;

void shtyp_numrin(int numri)


{
cout << numri << '\n';
}

int main()
{
cout<<"Thirja e funksionit void\n";
shtyp_numrin(10);

system("pause");
return 0;
}

cili

shtyp

vlern

19.

T shkruhet funksioni void max i cili gjen dhe shtyp numrin m t


madh nga dy parametrat formal t tipit double.

#include <iostream>
using namespace std;

void max(double x, double y)


{
double m;
if (x >= y)
m = x;
elsem = y;

cout<<"Numri m madh sht"


<<m;
}

int main()
{
double a=42,b=55;
max(a,b);

//thirrja e funksionit void

system("pause");
return 0;
}

20.

T shkruhet funksioni void shtypja i cili shtyp numrat e plot nga 1


deri n n. Funksioni le ta ket nj parametr formal t tipit int.

#include <iostream>
using namespace std;

void shtypja(int);

//prototipi i funksionit

int main ()
{
shtypja(5);

//thirrja e funksionit

system("pause");
return 0;
}

void shtypja (int n)


{
cout << "Shtypa e numrave nga 1 deri n <<n<< endl;
for (int i=1;i<=n;i++)
cout<<i<<endl;
}

21.

T shkruhet programi

pr printimin e numrave t thjesht nga 1 deri n

n duke prdorur funksionin i cili nuk kthen rezultat (void).

#include <iostream>
using namespace std;

void numriThjeshte(int numri)


{
int i,j,kontrolli;
cout<<"Numrat e thjesht eri "<<numri <<"\n";
for(i = 1; i <= numri; i++)

{
kontrolli = 0;
for(j = i-1; j > 1 ; j--)
if(i%j == 0)
{
kontrolli++;
break;
}
if(kontrolli == 0)
{
cout.width(3);
cout<<i;
}
}
cout<<"\n";
}

int main()
{
numriThjeshte(50);

system("pause");
return 0;
}

1.3.

Funksionet Inline

Jan funksione n t cilin kompajleri krkon q t kryhet nj zgjerim, pra


kodi i funksionit e zvendson vendin ku thirret funksioni.

Figura 5 paraqet thirrjen e funksionit inline, kurse figura 6 paraqet


zgjerimin e kodit t pjesa ku thirret funksioni.

22.

T shkruhet programi i cili prdor nj funksion inline t quajtur


sipRrethi i cili e llogarit siprfaqen e rrethit.

#include <iostream>
using namespace std;

double const pi = 3.14159;

inline double sipRrethi(double r)


{
return pi * r * r;
}

int main()
{
double rrezja;

cout << "Shtyp rrezen e rrethit: ";


cin >> rrezja;

cout<< "Siperfaqja e rrethit sht "


<< sipRrethi(rrezja) << endl;

system("pause");
return 0;
}

23.

T shkruhet programi i cili prdor nj funksion inline t quajtur


vellKubi i cili e llogarit vllimin e kubit.

#include <iostream>
using namespace std;

inline double vellKubi(double brinja )


{
return brinja * brinja * brinja;
}

int main()
{
double brinja;
cout << "Shno gjatsin e brinjs s kubit: ";
cin >> brinja;
cout << "Vllimi i kubit sht: "
<< vellKubi(brinja) <<

endl;

system("pause");
return 0;
}

24.

T shkruhet funksioni inline max i cili kthen vlern m t madhe n


mes dy vlerave t dhna.

#include <iostream>
using namespace std;

inline int max(int a, int b)


{
return a > b ? a : b;
}

int main( void)


{
int x1, x2;
cout<<"Jep dy vlera ";
cin>>x1>>x2;
cout<< "Maksimumi i numrit "
<<x1<<" dhe " << x2
<< " sht "
<<max(x1, x2) << endl;

system("pause");
return 0;
}

25.

T shkruhet programi i cili shkronjn e vogl e kthen n shkronj t


madhe. Kjo t realizohet duke prdorur operatorin e kushtzuar ? dhe
funksionin inline.

#include <iostream>
using namespace std;

inline char shkronja_madhe( char a )


{
return ((a >= 'a' && a <= 'z') ? a-('a'-'A') : a );
}

int main()
{
cout<<("Shno nj shkronj: ");
char shkronja;
cin>> shkronja;
shkronja= shkronja_madhe( shkronja);
cout<<"Shkronja e madhe: "
<<shkronja
<<endl;

system("pause");
return 0;
}

1.4.

Makro funksionet

M s shpeshti prdoren pr t deklaruar konstante t cilat mund t prdoren


n vend t konstanteve t deklaruara dhe variablave. Pr deklarimin e makro

- funksioneve prdoret direktiva #defne. Disa shembuj t deklarimit t makrofunksioneve jan dhn n figurn 7.

Avantazhi i makro-funksioneve sht se interpretohen gjat kohs s


kompajlimit. Jan jashtzakonisht t dobishme kur blloqe t njjta t kodit duhet
t ekzekutohen disa her.

26.

T shkruhet makro funksioni max i cili kthen vlern m t madhe n


mes dy vlerave t dhna.

#include <iostream>
using namespace std;

#define max (a, b)

((a > b)? a: b)

int main( void)


{
int x1, x2;
cout<<"Jep dy vlera ";
cin>>x1>>x2;
cout<< "Maksimumi i numrit "
<<x1<<" dhe " << x2
<< " sht "
<<max(x1, x2) << endl;

system("pause");
return 0;
}

27.

T krijohet makroja e funksionit llogaritja e cila llogarit shprehjen e


mposhtme, nse dihet vlera e x-it.

#include<iostream>
using namespace std;
#define llogaritjaY(x) ((x>0) ? (6*x-2):(2*x+6))

int main()

{
double y=0, x=5;
y=llogaritjaY(x);
cout<< "\nVlera e llogaritur pr x="
<<x
<<" sht y="
<<y
<< "\n\n";

system("pause");
return 0;
}

1.5.

Funksionet e mbingarkuara

Funksionet e mbingarkuara jan dy ose m shum funksione me t njjtin


emr, por me parametra t ndryshm pr nga numri i parametrave ose
tipi i t dhnave t parametrave. C++ lejon disa funksione me emr t njjt
deri sa e kan nnshkrimin e ndryshm. Kompajleri i C++ zgjedh funksionin e
duhur pr ta thirrur, duke u bazuar n numrin, tipin dhe rendin e
parametrave. Zakonisht funksionet e mbingarkuara prdoren pr t kryer
pun t ngjashme por me tipa t ndryshm t t dhnave.

Nj shembull i funksionit t mbingarkuar shihet n figurn e mposhtme.

28.

T shkruhet programi i cili llogarit siprfaqen e rrethit


drejtkndshit prmes funksionit t mbingarkuar siperfaqja().

#include<iostream>
using namespace std;

#define pi 3.14159265359

void siperfaqja(int r)
{

dhe

cout<<"Siprfaqja e rrethit:"<<pi*r*r;
}

void siperfaqja(int a,int b)


{
cout<<"Siprfaqja e drejtkndshit:"<<a*b;
}

int main()
{
int a,b,r;

cout<<"Rrezja r= ";
cin>>r;
siperfaqja(r);

cout<<"\nKrahet a=?b=?";
cin>>a>>b;
siperfaqja(a,b);
cout<<endl;
system("pause");
return 0;
}

29.

T shkruhet programi pr llogaritjen e shprehjes s mposhtme


prmes funksionit t mbingarkuar shuma().

#include <iostream>
using namespace std;

double shuma(int n)
{
double s;
int i; s=0;
for (i=0;i<=n;i++)
s=s+(4*i+2);
return s;
}

double shuma(int n,double x)


{
double s;
int i; s=0;
for (i=3;i<=2*n;i++)
s=s+(3*i-2*x);
return s;
}

int main()
{
double x,y1,y2;
int n=10;

cout << "Vlera x=";


cin >> x;
cout << "\nVlerat e llogaritura\n\n";
y1=shuma(n);
cout << " y=" << y1;

y2=pow(x+3,2)+shuma(n,x);
cout << "\n z="<< y2
<< "\n\n";

system("pause");
return 0;
}

30.

T shkruhen 2 funksione me emrin maksimumi(). Njri funksion t


gjej dhe ta shtyp numrin m t madh n vektorin A(m), kurse funksioni
tjetr numrin m t madh n matricn B(m,m). Vektori dhe matrica gjat
deklarimit t iniciohen me vlera fillestare.

#include <iostream>
using namespace std;

const int m=3;

int maksimumi(int v[], int m)


{
int max = v[0];
for (int i = 1; i < m; i++)
if (v[i] > max)
max = v[i];
return max;
}

int maksimumi(int a[m][m], int m)


{
int max=a[0][0];
for (int i = 0; i < m; i++)
for (int j = 0; j < m; j++)
if (max < a[i][j])
max = a[i][j];
return max;
}

int main()
{
int a[m] = {3,-7,8};
int Z[m][m] = {{3,7,4},{-6,2,-3},{6,1,5}};

cout<<"Vlera maksimale e vektorit: "<< maksimumi(a,m);


cout<<"\nVlera maksimale e matrics: "<< maksimumi(Z,m);
cout<<endl;

system("pause");
return 0;
}

40
40

31.

T shkruhen 3 funksione me emrin siperfaqja() t cilat llogarisin


siprfaqen e kubit,
sfers dhe konit. Funksionet t thirren pr vlera t
lexuara prmes tastiers.

#include<iostream>
using namespace std;

#define pi 3.14159265359

void siperfaqja(int a)
{
cout<<"Siprfaqja e kubit:"<<6*a*a;
}

void siperfaqja(double r)
{
cout<<"Siprfaqja e sferes:"<<4*pi*r*r;
}

void siperfaqja(double r,double h)


{
cout<<"Siprfaqja e konit:"<<pi*r*sqrt(r*r+h*h);
}

int main()
{
int a=10;
double r=12.56,h=8.26;

41
41

cout<<"Llogaritja e siprfaqes se kubit, sfers dhe konit\n";


siperfaqja(a);
cout<<endl;
siperfaqja(r);
cout<<endl;
siperfaqja(r,h);
cout<<endl;

system("pause");
return 0;
}

5.1.

Krijimi i klasave t zakonshme

Krijimi i klass fllon me fjaln els (keyword) class.

82.

T krijohet klasa me emrin personi e cila prmban emrin,


mbiemrin, qytetin dhe vitin e lindjes.

class personi
{
public:
char emri[15];
char mbiemri[20];
char qyteti[20];
int vitilindjes;
};

5.2.

Deklarimi i objekteve

Objekti sht nj instanc e klass. Deklarimi bhet sikurse edhe deklarimi i


variablave t tjera. Sintaksa e deklarimit t objektit sht:

Gjat krijimit t nj klase nuk rezervohet memorie, memoria rezervohet pr


variablen e klass, d.m.th gjat deklarimit t objektit.

Pr klasn e krijuar n shembullin paraprak t deklarohet objekti me


emrin studenti1.

Vehbi Neziri & Ramadan Dervishi

83.

#include <iostream>
using namespace std;

class personi
{
public:
char emri[15];
char mbiemri[20];
char qyteti[20];
int vitilindjes;
};

int main()
{
personi studenti1;
return 0;
}

5.3.

Qasja n komponentt e klass

Qasja n antart e klass bhet duke prdorur operatorin . (pik).

90
90

Shembull, pr klasn studenti, sht deklaruar objekti studenti1 dhe


sht br qasja n antarin emri.

84.

T iniciohen me vlera antart e klass s dhn personi n


shembullin paraprak. M pas t shtypen vlerat e antarve.

91
91

#include <iostream>
using namespace std;

class personi

public:
char emri[15];
char mbiemri[20];
char qyteti[20];
int vitilindjes;
};

int main()
{
personi studenti1;
cout << "\nShno t dhnat e studentit\n";
cout << "Emri dhe mbiemri: ";
cin >> studenti1.emri>>studenti1.mbiemri;
cout << "Qyteti: ";
cin >> studenti1.qyteti; cout
<< "Viti i lindjes: "; cin >>
studenti1.vitilindjes;
cout << "\n\nT dhnat e lexuara\n";
cout<< "\nEmri dhe mbiemri: "
<< studenti1.emri
<< " "
<< studenti1.mbiemri;
cout << "\nQyteti: "
<< studenti1.qyteti;
cout << "\nViti i lindjes: "
<< studenti1.vitilindjes << "\n\n";
return 0;

Vehbi Neziri & Ramadan Dervishi

85.

T shkruhet programi, prmes s cilit krijohet klasa artikulli n


antart e s cils paraqiten ID, Emrtimi, Sasia dhe mimi. Vlerat e
antarve t iniciohen duke i lexuar prmes tastiers dhe m pas t
shtypen kto vlera.

#include<iostream>
#include <iomanip>
using namespace std;

class artikulli
{
public:
int id;
char emertimi[15];
double sasia;
double cmimi;
};

int main()
{
artikulli art;
cout << "\nShno t dhnat e artikullit\n";
cout << "ID: ";

cin >> art.id;


cout << "Emertimi: ";
cin >> art.emertimi;
cout << "Sasia: ";
cin >> art.sasia;
cout << "imi: ";

cout<<"\nT dhnat e artikullit\n"


<<"----------------------------------------"
<<"\nID:"
<< setw (10)<<"Emri"
<< setw (15) <<"Sasia"
<<setw (10) <<"Cmimi\n"
<<"----------------------------------------\n"
<<art.id
<<setw (10)<<art.emertimi
<<setw (15)<<art.sasia
<<setw (10)<<art.cmimi
<<endl;

system("pause");
return 0;
}

5.4.

Forma e prgjithshme e klasave

Antart e klasave jan t klasifikuar n tri kategori: public, private dhe


protected.

Vehbi Neziri & Ramadan Dervishi

cin>> art.cmimi;

N C++, fjalt private, protected, dhe public jan fjal t rezervuara dhe
quhen specifikuesit e qasjes. Nse antari i klass sht variabl, deklarimi
bhet njjt sikurse variablat tjera. Gjat krijimit t klass, variabla nuk mund t
iniciohet. Nse antari i klass sht funksion, prdoret prototipi i funksionit pr t
deklaruar at antar. Zakonisht, antart me t dhna deklarohen si privat,
kurse funksionet si publike. Skema e mposhtme paraqet pjesn private dhe
publike t klass. Shihet qart se tek antart privat nuk lejohet hyrja apo
qasja nga jasht klass, por atyre antarve duhet qasur prmes funksioneve
q jan t pjesa publike.

Vehbi Neziri & Ramadan Dervishi


86.

T shkruhet programi, prmes t cilit krijohet klasa katrori n


antart e s cils paraqitet variabla private, krahu dhe variabla
publike,
varpub,
si
dhe
funksionet
publike
vendos_vleren
dhe
lexo_vleren. N funksionin main t implementohet vendosja dhe leximi i vlerave
prmes variabls private dhe publike.

#include <iostream>
using namespace std;

class katrori
{
private:
int krahu;

public:
int varpub;
void vendos_vleren(int k)
{
krahu = k;
}
int lexo_vleren()
{
return krahu;
}
};

int main()
{
katrori kat;
cout << "Vlera e brinjes a: ";
cin>>kat.varpub;
kat.vendos_vleren(55);

cout<<"Vlera e variabls publike = "


<<kat.varpub;
cout << "\nVlera e variabls private = "
<< kat.lexo_vleren()
<< "\n\n";
system("pause");
return 0;
}

5.5.

Shfrytzimi i funksioneve brenda klass

87.

T shkruhet programi, prmes s cilit krijohet klasa rrethi. Brenda


klass t krijohet rrezja si private dhe prototipat e funksioneve si
publike. Funksionet vendos_rrezen dhe siperfaqja t implementohen jasht
klass

#include <iostream>
using namespace std;

const double pi=3.1415;

class rrethi
{
private:
double rrezja;
public:
void vendos_rrezen(double);
double siperfaqja();
};

void rrethi::vendos_rrezen(double r)

Vehbi Neziri & Ramadan Dervishi

Edhe tek klasat (sikurse edhe tek strukturat), funksionet mund t krijohen
jasht trupit t klasave, por, brenda klasave duhet t shnohen prototipat e
funksioneve.

{
rrezja = r;
}

double rrethi::siperfaqja()
{
return pi * rrezja * rrezja ;
}

int main()
{
rrethi rr; rr.vendos_rrezen(5.6);
cout<<"Siperfaqja e rrethit = "
<<rr.siperfaqja()
<< "\n\n";
system("pause");
return 0;
}

88.

T shkruhet programi, prmes t cilit krijohet klasa katerkendeshi n


komponentt e s cils paraqitet variablat private, gjatesia dhe lartesia si
dhe funksionet publike, vendos_gjatesine, vendos_lartesine, siperfaqja
dhe perimetri. N funksione t llogaritet siprfaqja, respektivisht perimetri i
katrkndshit knddrejt.

#include <iomanip>
using namespace std;

class katerkendeshi
{
public:
double perimetri()
{
return 2 * ( gjatesia + lartesia );
};
double siperfaqja()
{
return gjatesia * lartesia;
};

void vendos_gjatesine( double g )


{
gjatesia = g ;
}

void vendos_lartesine(double l)
{
lartesia = l;
}
private:
double lartesia;
double gjatesia;

Vehbi Neziri & Ramadan Dervishi

#include <iostream>

};

int main()
{
katerkendeshi kater;

kater.vendos_gjatesine(5.5);
kater.vendos_lartesine(3.4);
cout<<"Perimetri = " <<kater.perimetri()
<<"\nSiperfaqja = " <<kater.siperfaqja()
<< endl;

system("pause");
return 0;
}

5.6.

Forma t tjera t inicimit t variablave

Skema e mposhtme paraqet inicimin prmes leximit. Duke prdorur funksionin


leximi, vlera e variabls private a iniciohet me nj vler t dhn prmes
tastiers.

89.

T krijohet klasa me emrin inicimi e cila prmban variabln private me


emrin variabla dhe dy funksione publike, leximi pr inicimin e variabls
dhe funksioni shtypja pr shtypjen e vlers s variabls.

#include<iostream>
using namespace std;

class inicimi
{
private:
int variabla;
public:

Vehbi Neziri & Ramadan Dervishi

Nj form tjetr e inicimit t variablave sht edhe gjat deklarimit t


objektit t klass. N skemn e mposhtme sht deklaruar klasa me
emrin klasa dhe m pas tek funksioni main sht deklaruar objekti kl dhe
sht iniciuar me vlera.

void leximi();
void shtypja();
};

void inicimi::leximi()
{
cout << "Jep nje vlere per variablen: ";
cin >> variabla;
}

void inicimi::shtypja()
{
cout<< "Variabla e dhn prmes funksionit leximi: "
<< variabla << "\n";
}

int main()
{
inicimi objekti;

objekti.leximi();
objekti.shtypja();

system("pause");
return 0;
}

90.

T krijohet klasa me emrin inicimi_direkt e cila prmban tri variabla


publike t cilat do t inicohen gjat deklarimit t objektit t klass. M pas,
prmes funksionit shtypja t shtypen vlerat e variablave.

#include<iostream>

class inicimi_direkt
{
public:
int x1,x2;
double y;
void shtypja();
};

void inicimi_direkt::shtypja()
{
cout << "\nVlera e x1="
<< x1
<< "\nVlera e x2="
<< x2
<< "\nVlera e y="
<< y
<< "\n\n";
}

int main()
{
inicimi_direkt ini_d={16,4,20.13};
ini_d.shtypja();

system("pause");
return 0;

Vehbi Neziri & Ramadan Dervishi

using namespace std;

91.

T shkruhet programi, prmes t cilit krijohet klasa data n


komponentt e s cils paraqitet variablat private, p_dita, p_muaji dhe
p_viti si dhe
prototipat e funksioneve pr vendosje dhe lexim t dits,
muajit dhe vitit. Funksionet pr vendosje dhe lexim t dats t
implementohen jasht klass data. N funksionin main t deklarohet
nj objekt i klass dhe t shtypet nj dat e caktuar.

#include <iostream>
using namespace std;

class data
{
private: //variablat private
int p_dita;
int p_muaji;
int p_viti;
public:
int l_dita(); int
l_muaji(); int
l_viti();

void muaji(int);

void dita(int);
void viti(int);

int data::l_dita(){return p_dita;} int


data::l_muaji(){return p_muaji;} int
data::l_viti(){return p_viti;}

void data::muaji(int f_muaji)


{
p_muaji=f_muaji;
};

void data::dita(int f_dita)


{
p_dita=f_dita;
};

void data::viti(int f_viti)


{
p_viti=f_viti;
};

int main()
{
data dt;
//vendosa e vlerave
dt.dita(27);
dt.muaji(2);
dt.viti(2008);

//leximi i vlerave

Vehbi Neziri & Ramadan Dervishi

};

cout << dt.l_dita() << "."


<< dt.l_muaji() << "."
<< dt.l_viti() << endl;

system("pause");
return 0;
}

5.7.

Shfrytzimi i vlerave t variablave private

Qasja direkte n variablat private t klass nuk lejohet. Pr shfrytzimin e tyre,


duhet t krijohen funksione t veanta brenda klass, t deklaruara si publike. Kto
funksione mund t jen: pa parametra formal ose me parametra referent.

92.

T shkruhet programi n t cilin krijohet klasa artikulli. Klasa


artikulli si antar privat e ka variablen kodi, kurse si antar publik i ka
funksionet leximi, shtypja dhe funksionin merr_vleren i cili e merr
vlern e antarit privat dhe e ruan tek nj variabl jasht klass.

#include <iostream>
using namespace std;

class artikulli
{

public :
void leximi();
void shtypja();
int merr_vleren();
};

void artikulli::shtypja()
{
cout << "Kodi="
<< kodi << "\n\n";
}

void artikulli::leximi()
{
cout << "Jep vlern e kodit: ";
cin >> kodi;
}

int artikulli::merr_vleren()
{
return kodi;
}

int main()
{
int k;

Vehbi Neziri & Ramadan Dervishi

int kodi;

artikulli art;
art.leximi();
k=art.merr_vleren();

cout<<"Vlera e kodit sht ruajtur tek k-ja; k="


<< k <<
"\n"; art.shtypja();
system("pause");
return 0;
}

93.

T modifikohet shembulli paraprak dhe funksioni merr_vleren t ket si


parametr referent variablen e deklaruar jasht klass.

#include <iostream>
using namespace std;

class artikulli
{
int kodi;
public :
void leximi();
void shtypja();
int merr_vleren(int& k);
};

void artikulli::shtypja()

{
cout << "Kodi="
<< kodi << "\n\n";
}

void artikulli::leximi()

Vehbi Neziri & Ramadan Dervishi

{
cout << "Jep vlern e kodit: ";
cin >> kodi;
}

int artikulli::merr_vleren(int& k)
{
return kodi;
}

int main()
{
int k; artikulli art;
art.leximi();
k=art.merr_vleren(k);

cout<<"Vlera e kodit sht ruajtur tek k-ja; k="


<< k << "\n";
art.shtypja();
system("pause");
return 0;
}

5.8.

Llogaritjet me variabla t klass


10
01

Variablat q paraqiten n antart e klass mund t shfrytzohen pr


llogaritje t ndryshme. Shfrytzimi i variablave t klass varet nga ajo se a jan
deklaruar antart prkats si publik ose privat. Nse antart e klass jan
publik, mund t shfrytzohen duke e shnuar para tyre emrin e objektit
prkats dhe pikn. Nse antart e klass jan privat, ata mund t
shfrytzohen vetm prmes funksioneve brenda klass.

94.

T shkruhet programi n t cilin krijohet klasa llogaritja pr


llogaritjen e shprehjes s mposhtme. Variabla n sht private, kurse
variabla m sht publike.

#include
<iostream>
using
std;

namespace

class llogaritja
{
private:
int n;

10
11

public:
int m;
void leximi();
void shtypja();
int merr_vleren();

int main()
{
int p; double
y=0; llogaritja
llog; llog.leximi();

cout << "Jep vleren e variables publike m: ";


cin >> llog.m;

llog.shtypja();
p=llog.merr_vleren();

for (int i=0;i<=(llog.m+p);i++)


y=y+(3*i+2*p);
y=llog.m+y;
cout<< "\nVlera e funksionit y="
<< y << "\n\n";
system("pause");
return 0;
}

void llogaritja::leximi()
{
cout << "Jep vleren e variables private n: ";
cin >> n;
}

Vehbi Neziri & Ramadan Dervishi

};

void llogaritja::shtypja()
{
cout<< "\nVlera e variables private n="<< n
<< "\nVlera e variables publike m="

<< m

<< "\n";
}

int llogaritja::merr_vleren()
{
return n;
}

5.9.

Shfrytzimi i funksioneve brenda klass

Funksionet mund t paraqiten n pjesn publike ose private t klass. Nse


funksionet jan prfshir tek pjesa publike, shfrytzimi i tyre si brenda, ashtu
edhe jasht klass nuk ka asnj kufzim. Mirpo nj funksion i cili sht
antar privat, mund t thirret vetm nga nj tjetr funksion i cili sht
antar i s njjts klas. Funksioni privat nuk mund t thirret prmes objektit
dhe operatorit pik (.)

T modifikohet shembulli paraprak dhe


llogaritet duke shfrytzuar funksionin publik
klass llogaritja.

#include <iostream>
using namespace std;

class llogaritja
{
private:
int n;
public:
int m;
void leximi();
void shtypja();
double shuma(int m, int n);
int merr_vleren();
};

int main()
{
int p;
double y=0;
llogaritja llog;
llog.leximi();

cout << "Jep vleren e variables publike m: ";


cin >> llog.m;

llog.shtypja();

shprehja e mposhtme t
shuma i cili sht brenda

Vehbi Neziri & Ramadan Dervishi

95.

p=llog.merr_vleren();

y=llog.m+llog.shuma(llog.m,p);
cout<< "\nVlera e funksionit y="
<< y << "\n\n";
system("pause");
return 0;
}

double llogaritja::shuma(int m, int n)


{
double s=0;
for (int i=0;i<=(m+n);i++)
s=s+(3*i+2*n);
return s;
}

void llogaritja::leximi()
{
cout << "Jep vlern e variabls private n: ";
cin >> n;
}

void llogaritja::shtypja()
{

cout<< "\nVlera e variabls private n="<< n


<< "\nVlera e variabls publike m="

<< m

<< "\n";
}

{
return n;
}

96.

T modifikohet shembulli paraprak dhe


llogaritet duke shfrytzuar funksionin privat
klass llogaritja.

#include <iostream>
using namespace std;

class llogaritja
{
private:
int n,m;
double shuma(int m, int n);
public:
void leximi();
void shtypja();
double thirr_shumen();
};

int main()
{
int p; double
y=0; llogaritja
llog; llog.leximi();

shprehja e mposhtme t
shuma i cili sht brenda

Vehbi Neziri & Ramadan Dervishi

int llogaritja::merr_vleren()

y=llog.thirr_shumen();
llog.shtypja();

cout<< "\nVlera e funksionit y="


<< y << "\n\n";
system("pause");
return 0;
}

double llogaritja::thirr_shumen()
{
return shuma(m,n);
}

double llogaritja::shuma(int m, int n)


{
double s=0;
for (int i=0;i<=(m+n);i++)
s=s+(3*i+2*n);
return m+s;
}

void llogaritja::leximi()
{
cout << "Jep vlern e variabls m dhe n: ";

cin >> m>>n;


}

void llogaritja::shtypja()
{

<< "\nVlera e variabls m="<< m


<< "\n";
}

97.

T shkruhet programi n t cilin krijohet klasa llogaritja pr


llogaritjen e shprehjes s mposhtme. Llogaritja e shprehjes t kryhet
prmes nj funksioni publik t quajtur shuma i cili sht brenda klass llogaritja.
Variabla n sht private, kurse variabla m sht publike.

#include <iostream>
using namespace std;

class llogaritja
{
private:
int n;
public:
int m;
void leximi();
void shtypja();
double shuma(int a, int b, int c, int d );
int merr_vleren();
};

Vehbi Neziri & Ramadan Dervishi

cout<< "\nVlera e variabls n="<< n

int main()
{
int p;
double y=0;
llogaritja llog;
llog.leximi();

cout << "Jep vleren e variables publike m: ";


cin >> llog.m;

llog.shtypja();
p=llog.merr_vleren();

y=llog.m+llog.shuma(0,llog.m+p,3,2) + llog.shuma(3,llog.m,1,0);

cout<< "\nVlera e funksionit y="


<< y <<
"\n\n";
system("pause");
return 0;
}

double llogaritja::shuma(int a, int b, int c, int d)


{
double s=0;
for (int i=a;i<=b;i++)

s=s+(c*i+d);
return s;
}

void llogaritja::leximi()

cout << "Jep vlren e variables private n: ";


cin >> n;
}

void llogaritja::shtypja()
{
cout<< "\nVlera e variabls private n="<< n
<< "\nVlera e variabls publike m="

<< m

<< "\n";
}

int llogaritja::merr_vleren()
{
return n;
}

98.

T shkruhet programi n t cilin krijohet klasa llogaritja pr


llogaritjen e shprehjes s mposhtme. Llogaritja e shprehjes t kryhet
prmes nj funksioni privat t quajtur prodhimi i cili sht brenda klass llogaritja.
Variabla n sht private.

#include <iostream>
using namespace std;

Vehbi Neziri & Ramadan Dervishi

class llogaritja
{
private:
int n;
double prodhimi();
public:
void vendos_vlerat();
void shtypja();
double thirr_prodhimin();
};

int main()
{
double y=0; llogaritja llog;
llog.vendos_vlerat();
y=llog.thirr_prodhimin();
llog.shtypja();

cout<< "\nVlera e funksionit y="


<< y <<
"\n\n";
system("pause");
return 0;
}

double llogaritja::prodhimi()
{
double p=1;
for (int i=1;i<=n;i++)
p=p*(2*i);

void llogaritja::vendos_vlerat()
{
cout << "Jep vleren e variabls n: ";
cin >> n;
}

double llogaritja::thirr_prodhimin()
{
return prodhimi();
}

void llogaritja::shtypja()
{
cout<< "\nVlera e variabls n ="<< n
<< "\n";
}

99.

T shkruhet programi n t cilin krijohet klasa FormatiDates. Klasa t


ket antart pr mbajtjen e dits, muajit dhe vitit si dhe funksionet pr
vendosjen dhe marrjen e ktyre vlerave. T deklarohet disa objekte t
klass dhe prmes konstruktorit t thirret funksioni pr vendosjen e
dats. Nse data sht gabim t vendoset n 1.1.1900. Funksioni pr
shfaqjen/shtypjen e dats t ket disa opsione t shtypjes si p.sh
dd.mm.vvv, dd/mm/vvvv etj.

Vehbi Neziri & Ramadan Dervishi

return p;

#include <iostream>
#include <string>
using namespace std;

class FormatiDates
{
private:
int muaji;
int dita; int
viti;
public:
void vendosDaten(int d, int m, int v);
int merrDiten();
int merrMuajin();
int merrVitin();
void shfaqDaten(string formati);
FormatiDates(int m = 1, int d = 1, int v = 1900);
bool vitiBrishte(int);
};

void FormatiDates::vendosDaten(int d,int m, int v)


{
bool gabim=false;
int shkurt=28;

switch(m)
{

case
case
case
case
case
case

3 :
5 :
7 :
8 :
10:
12:

if (d > 31)
gabim=true;
break;
case 4 : //muaji 4, 6, 9 dhe 11 i kan nga 30 dit
case 6 :
case 9 :
case 11:
if (d > 30)
gabim=true;
break;
case 2 : //muaji 2 i ka 28 ose 29 dit
if(vitiBrishte(v))
shkurt=29;
if(d>shkurt)
gabim=true;
}
if(gabim)
{
cout<<"Data "<<d<<"/"<<m<<"/"<<v<<" sht jo valide. Do t prdoret
1/1/1900\n";
d=1;
m=1;
v=1900
;
}
dita = d;
muaji =

Vehbi Neziri & Ramadan Dervishi

//muaji 1, 3, 5, 7, 8, 10, 12 i kan nga 31 dit


case 1 :

m; viti =
v;
}

bool FormatiDates::vitiBrishte(int v)
{
if((v%4==0 && v!=0)|| v==0)
return true;
return false;
}

int FormatiDates::merrDiten()
{
return dita;
}

int FormatiDates::merrMuajin()
{
return muaji;
}

int FormatiDates::merrVitin()
{
return viti;
}

void FormatiDates::shfaqDaten(string formati)


{
if (formati=="dd.mm.vvvv")
cout << dita << "." << muaji << "." << viti;

cout << muaji << "." << dita << "." << viti;
else if(formati=="dd/mm/vvvv")
cout << dita << "/" << muaji << "/" << viti;
else if(formati=="dd-mm-vvvv")
cout << dita << "-" << muaji << "-" << viti;
else
cout << dita << "/" << muaji << "/" << viti;
}

FormatiDates::FormatiDates(int d,int m, int v)


{
vendosDaten(d, m, v);
}

int main()
{
FormatiDates d1(29,2,2010);
cout<<"Data e par: ";
d1.shfaqDaten("dd.mm.vvvv")
; cout<<endl;

FormatiDates d2(17,02,2008);
cout<<"Data e dyt: ";
d2.shfaqDaten("dd/mm/vvvv")
; cout<<endl;

system("pause");
return 0;

Vehbi Neziri & Ramadan Dervishi

else if(formati=="mm.dd.vvvv")

5.10. Konstruktort
Konstruktori sht nj funksion antar i cili inicion variablat n brendsi t
klass. Konstruktori mnjanon nevojn e inicimit t variablave sa her q
krijohet nj objekt i ri. Konstruktori e ka emrin e njjt si vet klasa por nuk
ka tip kthyes. Konstruktori thirret automatikisht sa her q krijohet nj instanc
e klass. Nse nuk krijohet konstruktori, kompajleri do ta krijoj
nj n mnyr automatike default i cili do ti inicioj variablat e klass
n vlern null.

5.10.1.

Konstruktort pa parametra formal

Konstruktort mund t mos ken parametra formal, nse prcaktimi i


vlerave t variablave n antart privat bhet brenda konstruktorve.

Vehbi Neziri & Ramadan Dervishi


100. T shkruhet programi prmes s cilit llogaritet siprfaqja s dhe
perimetri p i rrethit me rreze r. Pr inicimin e konstantes pi, brenda
klass rrethi, e cila krijohet n program t shfrytzohet konstruktori
prkats i klass.

#include <iostream>
using namespace std;

class rrethi
{
private:
double pi,r,s,p;
public:
rrethi(); //konstruktori
void rrezja(double x);
void llogaritja();
void shtypja();

};

int main()
{
rrethi rr;
double x;
cout << "\nRrezja e rrethit x: ";
cin >> x;
rr.rrezja(x);
rr.llogaritja();
rr.shtypja();
system("pause");
return 0;
}

rrethi::rrethi() //thirret gjate deklarimit te instances se klases


{
pi=3.1415926;
}

void rrethi::rrezja(double x)
{
r=x;
}

void rrethi::llogaritja()
{

s=pi*r*r;
p=2*pi*r;
}

void rrethi::shtypja()

cout<< "\nSiperfaqja s="<<s


<< "\n\nPerimetri p="<<p<< "\n";
}

5.10.2.

Konstruktort me parametra formal

Konstruktori (default) nuk ka parametra, por nse nevojiten ai mund t ket.


Kjo ndihmon pr inicimin e vlerave gjat kohs s deklarimit t nj instance t
re (objekti).

11
01

Vehbi Neziri & Ramadan Dervishi

101. T modifkohet shembulli paraprak dhe pr inicimin e konstantes pi dhe


rrezes r t prdoret konstruktori me rrezen e rrethit si parametr formal.

#include <iostream>
using namespace std;

class rrethi
{
private:
double pi,r,s,p;
public:
rrethi(double x); //konstruktori me parametra formale
void llogaritja();
void shtypja();
};

int main()
{
double x;
cout << "\nRrezja e rrethit x: ";
cin >> x;
rrethi rr(x);
rr.llogaritja();
rr.shtypja();
system("pause");
return 0;

11
11

rrethi::rrethi(double x) //thirret gjate deklarimit te instances se klases


{
pi=3.1415926;

void rrethi::llogaritja()
{
s=pi*r*r;
p=2*pi*r;
}

void rrethi::shtypja()
{
cout<< "\nSiperfaqja s="<<s
<< "\nPerimetri p="<<p<< "\n";
}

102.
T shkruhet programi dhe t krijohet klasa NumratKompleks pr
mbledhjen dhe zbritjen e numrave kompleks. Vendosja e pjess reale dhe
imagjinare t mundsohet prmes konstruktorit me dy parametra si dhe prmes
funksionit vendosNumrin i cili ka parametra pjesn reale dhe imagjinare
t numrit kompleks. N funksionin main t kryhet mbledhja pr dy numra t
vendosur prmes konstruktorit, kurse zbritja t kryhet prmes dy
numrave t vendosur prmes funksionit vendosNumrin.

#include <iostream>
using namespace std;

class NumratKompleks

Vehbi Neziri & Ramadan Dervishi

r=x;

{
private:
double Reale;
double Imagjinare;
public:
NumratKompleks(double = 0.0, double = 0.0);
void mbledhja(NumratKompleks &a
); void zbritja(NumratKompleks &a
); void shtyp();
void vendosNumrin(double r, double i);
};

NumratKompleks::NumratKompleks(double reale, double imagjinare)


{
vendosNumrin(reale, imagjinare);
}

void NumratKompleks::mbledhja(NumratKompleks &a)


{
Reale += a.Reale;
Imagjinare += a.Imagjinare;
}

void NumratKompleks::zbritja(NumratKompleks &s)


{

Reale -= s.Reale;
Imagjinare -= s.Imagjinare;
}

void NumratKompleks::shtyp()

cout << '(' << Reale << ", " << Imagjinare << ')';
}

void NumratKompleks::vendosNumrin(double r, double i )


{
Reale = r;
Imagjinare = i;
}

int main()
{
//prmes konstruktorit
NumratKompleks nr1(2, 7.5), nr2(4.2, 2.3 );
nr1.shtyp();
cout << " +
"; nr2.shtyp();
cout << " =
";
nr1.mbledhja(nr2);
nr1.shtyp();
cout << '\n';

//prmes funksionit vendosNumrin


nr1.vendosNumrin(10, 1.5);
nr2.vendosNumrin(8.5, 5);
nr1.shtyp();
cout << " - ";
nr2.shtyp(); cout <<
" = "; nr1.zbritja(
nr2 ); nr1.shtyp();

Vehbi Neziri & Ramadan Dervishi

cout << endl;

system("pause");
return 0;
}

5.11. Llogaritjet brenda konstruktorve


Prve inicimit t variablave, brenda konstruktorve mund t kryhen edhe
llogaritje t ndryshme. Rezultatet e llogaritjeve duhet t prcillen/ruhen tek
variablat e prfshira n antart e klasave.

Vehbi Neziri & Ramadan Dervishi


103. T shkruhet programi n t cilin krijohet klasa llogaritja. Variablat m dhe
n t deklarohen si private, kurse rezultati i shprehjes t ruhet n variablen
publike y. Pr inicimin e variablave m dhe n dhe llogaritjen e shprehjes s
mposhtme t prdoret konstruktori i klass.

#include <iostream>
using namespace std;

class llogaritja
{
private:
int m, n;

public:
double y;
void shtypja();
llogaritja(); //konstruktori
};

int main()
{
int p;
double y=0;
llogaritja llog;
llog.shtypja();

system("pause");
return 0;
}

void llogaritja::shtypja()
{
cout<< "\nVlera e variables m="<< m
<< "\nVlera e variables n="

<< n

<< "\nVlera e funksionit y="<<y


<<"\n";
}

llogaritja::llogaritja()
{

cout << "Jep vleren e variables m dhe n: ";


cin >> m >>n;
double s=0;
for (int i=0;i<=(m+n);i++)
s=s+(3*i+2*n);
y=m+s;
}

104. T shkruhet programi prmes s cilit krijohet klasa thjeshte. Duke


shfrytzuar konstruktorin e klass i cili ka nj parametr formal t
kontrollohet nse numri i dhn sht numr i thjesht.

#include<iostream>
using namespace std;

class thjeshte
{
int nr,i;
bool r;
public:
thjeshte(int x)
{
nr=x;
for(i=2;i<=nr/2;i++)
if(nr%i==0)
{
}
}
}
else
{

r=false;
break;
r=true;

void shtyp()
{

cout<<"\n"<<nr<<" sht numr i thjesht.";


elsecout<<"\n"<<nr<<" nuk sht numr i thjesht.";

cout<<endl;
}
};

int main()
{
int a;
cout<<"Sheno nje numer te plote:";
cin>>a;
thjeshte obj(a);
obj.shtyp();

system("pause");
return 0;
}

Vehbi Neziri & Ramadan Dervishi

if(r==true)

5.12. Disa konstruktor njkohsisht


Klasa mund t ket m shum se nj konstruktor, por konstruktort duhet
t ken list t ndryshme t parametrave formal. Kjo mundsohet duke
prdorur metodn e mbingarkimit.

105. T shkruhet programi n t cilin krijohet


llogariten vlerat e funksioneve t mposhtme
konstruktor.

klasa
duke

faktorieli dhe
shfrytzuar dy

#include <iostream>
using namespace std;

class faktorieli
{
private:
int m;
double x;
public:
double g;
faktorieli();
faktorieli(int k);
};

int main()
{
faktorieli fa1;
cout << "Vlera e llogaritur y="
<< fa1.g;
faktorieli fa2(3);
cout << "Vlera e llogaritur z="
<< fa2.g << "\n\n";
system("pause");
return 0;

faktorieli::faktorieli()
{
m=3;

<< "\n-------------------"
<< "\nVariabla x: ";
cin >> x;
double
F=1; int i;
for (i=1;i<=m;i++)
F=F*i;
g=5*x+F;
}

faktorieli::faktorieli(int k)
{
m=k;
cout << "\n\nKonstruktori i dyt"
<< "\n-------------------"
<< "\nVariabla x: ";
cin >> x;
double
F=1; int i;
for (i=1;i<=(m+1);i++)
F=F*i;
g=x/2+F;
}

5.13. Destruktort

Vehbi Neziri & Ramadan Dervishi

cout << "Konstruktori i par"

Destruktori zakonisht prdoret pr lirimin e memories e cila sht rezervuar


gjat deklarimit t objekteve. Emri i destruktorit sht i njjt me emrin e
klass, por para tij vendoset simboli ~ (lexo: tilda). Klasa mund t ket
vetm nj destruktor. Destruktori nuk ka asnj parametr dhe nuk ka tip
kthyes.

106. T shkruhet programi, dhe t krijohet klasa vlera e cila prmban


funksionet publike pr vendosjen dhe marrjen e vlers s numrit. Numri
sht variabl private. T implementohet konstruktori dhe destruktori i
klass n t cilin tregohet se kur po thirret konstruktori dhe kur
destruktori.

#include<iostream>

using namespace std;

class vlera
{
int numri;

void vendos_numrin(int num);


int merr_numrin();
vlera()

//konstruktori

{
cout<<"\nKonstruktori eshte thirrur \n";
}

~vlera()

//destruktori

{
cout<<"\nDestruktori eshte thirrur \n";
system("pause");
}
};

void vlera::vendos_numrin(int nr)


{
numri = nr;
}

int vlera::merr_numrin()
{
return numri;
}

int main()
{
int nr = 2013;
vlera obj;

Vehbi Neziri & Ramadan Dervishi

public:

obj.vendos_numrin(nr); nr =
obj.merr_numrin(); cout<<"\nNumri
eshte = "<<nr<<endl;

system("pause");
return 0;
}

5.14. Trashgimia
Trashgimia sht tipar shum i rndsishm n programimin e orientuar
n objekte dhe nnkupton riprdorimin e kodit t krijuar m hert. Me fjal t
tjera trashgimia sht nj mekanizm i riprdorimit dhe i zgjerimit t
klass ekzistuese pa e modifikuar at, duke prodhuar marrdhnie hierarkike
midis klass ekzistuese dhe klass s re. Pra, prmes trashgimis (ang.
inheritance), antart e klass ekzistuese mund t shfrytzohen pr krijimin e
klass s re. do klas e re trashgon gjendjen dhe metodat nga klasa prej
s cils sht krijuar. Klasa ekzistuese njihet si klas baz (ang. Base
class), kurse klasa e re e cila i trashgon karakteristikat e klass baz, quhet
klasa e derivuar (ang. Derived class). Skema e mposhtme paraqet nj
hierarki t trashgimis s klasave.

Vehbi Neziri & Ramadan Dervishi


Klasat e derivuara, prve variablave dhe metodave t trashguara, mund
t ken edhe variabla dhe metoda t reja. C + + prkrah lloje t ndryshme t
trashgimis e t cilat jan:

1.
Trashgimia
vetme
2.
Trashgimia
nivele

e
me

shum

3. Trashgimia e shumfisht
4. Trashgimia hierarkike
5. Trashgimia hibride

Trashgimia e vetme sht kur ekziston vetm nj klas baz dhe nj


klas e derivuar t cilat kan nj komunikim nj me nj.

Trashgimis me shum nivele sht kur nj klas e derivuar


mund t trashgohet edhe nga nj klas tjetr dhe kshtu krijohet
nivel i shumfisht.

Trashgimia hierarkike sht kur klasa baz ka shum klasa t derivuara


ose kur klasa baz sht prdorur ose trashguar nga shum klasa t
derivuara.

Trashgimia hibride sht nj przierje e dy ose m shum trashgimive n


nj trashgimi t vetme.

Vehbi Neziri & Ramadan Dervishi

Trashgimia e shumfisht sht kur klasa e derivuar trashgon tiparet nga


dy ose m shum klasa baz. N kt lloj trashgimie mund t ket paqartsi
kur m shum se nj klas prmban nj funksion me t njjtin emr.

Forma e prgjithshme e sintakss pr klasn e derivuar sht:

Skema e mposhtme paraqet nj shembull t trashgimis, ku klasa rrethi sht


trashguar nga klasa figurat. Pra rrethi sht klasa e derivuar, kurse figurat
sht klasa baz.

si dhe funksionin pr shtypjen


derivuar dhe variabls publike t

e vlerave t
klass baz.

#include <iostream>
using namespace std;

class KlasaBaze
{
private:
int a;
public:
double b;
void shtyp_baze()
{
a=5;
b=8;
cout<< "Vlerat e klass baz"
<< "\na="<< a
<< "\nb="<< b
<< "\n\n";
}

12
01

variablave

t klass

Vehbi Neziri & Ramadan Dervishi

107. T shkruhet programi n t cilin krijohet klasa baz KlasaBaze dhe


klasa e derivuar KlasaDerivuar. Klasa baz prmban nj variabl
private dhe nj publike si dhe funksionin pr shtypjen e vlerave t
ktyre variablave. Klasa e derivuar prmban nj variabl private dhe nj
publike

};

class KlasaDerivuar:public KlasaBaze


{
private:
double c;
public:
int d;
void shtyp_derivuar()
{
b=2; //variabel e klass baz
c=4;
d=7;
cout << "Vlerat e klass s derivuar"
<< "\nb = "<< b
<< "\nc = "<< c
<< "\nd = "<< d
<< "\n\n";
}
};

int main()
{
KlasaBaze kb; KlasaDerivuar kd;

12
11

kb.shtyp_baze();
kd.shtyp_derivuar();
system("pause");
return 0;

108. T shkruhet programi n t cilin krijohet klasa baz Veturat dhe klasa
e derivuar VeturePolicie. Klasa baz prmban nj variabl private pr
shpejtsin dhe funksionet publike pr vendosjen dhe marrjen e
shpejtsis. Klasa e derivuar prmban shpejtsin aktuale dhe nse vetura
sht n aksion. T vendosen vlerat pr shpejtsin, shpejtsin aktuale
dhe nse vetura sht n aksion dhe me pas t shtypen vlerat.

#include <iostream>
using namespace std;

class Veturat
{
private:
int shpejtesia;
public: void v_shpejtesine(int sh)
{
shpejtesia=sh;
}
int m_shpejtesine()
{
return shpejtesia;
}
};

class VeturePolicie : public Veturat


{
private:
int shpejtesiAktuale;

Vehbi Neziri & Ramadan Dervishi

bool aksion;
public:
void v_shpejtAktuale(int a)
{
shpejtesiAktuale=a;
}
int m_shpejtAktuale()
{
return shpejtesiAktuale;
}
void v_neAksion(bool a)
{
aksion=a;
}
bool m_neAksion()
{
return aksion;
}
};

int main()
{

Veturat kb; VeturePolicie kd;


kb.v_shpejtesine(260);
kd.v_shpejtAktuale(180);
kd.v_neAksion(true);
if (kd.m_neAksion()==true)
cout<<"Vetura e policis sht n aksion\n "

<<kd.m_shpejtAktuale()
<<"/" <<kb.m_shpejtesine();
else
cout<<"Vetura e policis sht n aksion\n"
<<"dhe po leviz me shpejtsi "
<<kd.m_shpejtAktuale()
<<"/" <<kb.m_shpejtesine();
cout<<endl;
system("pause");
return 0;
}

109. T shkruhet programi n t cilin krijohen klasat pajisjeUSB dhe


pajisjeRrjeti t cilat kan nga nj antar privat me t njjtin emr dhe
nga nj funksion publik me t njjtin emr pr leximin e vlers s
variabls private. Secila klas t ket edhe konstruktorin pr vendosjen e
vlers s variabls private. T krijohet klasa pajisje_wireless e cila trashgohet
nga klasat pajisjeUSB dhe pajisjeRrjeti, pra trashgimi e shumfisht. Tek
funksioni main t deklarohet objekti i klass s derivuar dhe t thirret
funksioni pr leximin e vlers s variabls private. Cili funksion do t thirret?

#include <iostream>
using namespace std;

class pajisjeUSB
{
private:
long a_ID;

Vehbi Neziri & Ramadan Dervishi

<<"dhe po leviz me shpejtesi "

public:
pajisjeUSB(long id)
: a_ID(id)
{
}

long m_ID()
{
return a_ID;
}
};

class pajisjeRrjeti
{
private:
long a_ID;

public:
pajisjeRrjeti(long id)
: a_ID(id)

{
}

long m_ID()
{

}
};

class pajisje_wireless: public pajisjeUSB, public pajisjeRrjeti


{
public:
pajisje_wireless(long usb_id, long net_id)
: pajisjeUSB(usb_id), pajisjeRrjeti(net_id)
{
}
};

int main()
{
pajisje_wireless RJ45(12345678, 87654321);
//cout << RJ45.m_ID(); // Cila m_ID() do t thirret?
cout << RJ45.pajisjeUSB::m_ID();
cout<<endl;
cout << RJ45.pajisjeRrjeti::m_ID();

system("pause");
return 0;
}

5.15. Antart statik t klass

Vehbi Neziri & Ramadan Dervishi

return a_ID;

Deri me tani u pa se se secili objekt i klass i ka kopjet e veta t veqanta


pr t gjith antart e klass. Megjithat ekziston nj prjashtim ku vetm nj
variabl e caktuar mund t jet e prbashkt pr t gjitha objektet e klass.
Pr kt arsye prdoret nj antar statik dhe t gjitha objektet e klass kan
vetm nj instanc t ktij antari. Antari statik i klass mund t thirret edhe
pa u krijuar nj objekt i klass. Si shihet edhe nga skema e mposhtme jan
deklaruar dy objekte ob1 dhe ob2 dhe t dy objektet kan kopjet e
veqanta pr antarin Y, ob1 ka vlern 10, kurse ob2 ka vlern 20. Mirpo
antari X sht i prbashkt pr t dy objektet, pra sh t vetm nj
instanc dhe vlera e ktij antari sht 5 pr t dyja objektet.

Vehbi Neziri & Ramadan Dervishi


N baz t ksaj mund t thuhet se nj antar statik paraqet apo ruan
informacion t gjr i cili informacion sht i prbashkt pr t gjitha
instancat dhe nuk sht specifik pr secilin objekt.

110. T shkruhet programi n t cilin krijohet klasa AnetarStatik me


antart privat rendi dhe antarin statik numeruesi. Prmes konstruktorit t
nnkuptuar, t rritet numruesi pr nj sa her q krijohet nj objekt i
klass dhe t shtypet vlera e numruesit prmes variabls rendi e cila
lexohet prmes funksionit lexoRendi.

#include <iostream>
using namespace std;

class AnetarStatik
{

private:
static int numeruesi;
int rendi;
public:
AnetarStatik()
{
rendi = numeruesi++;
}

int merrRendi()
{
return rendi;
}
};

int AnetarStatik::numeruesi = 1;

int main()
{
AnetarStatik ob1;
AnetarStatik ob2;
AnetarStatik ob3;

cout <<"Objekti "<< ob1.merrRendi()


<<"\nObjekti "<<

ob2.merrRendi()

<<"\nObjekti "<<

ob3.merrRendi()

<< endl;

system("pause");
return 0;

111. T shkruhet programi n t cilin krijohet klasa kursimet pr


llogaritjen e kamats pr parat e kursyera n llogarin e kursimeve.
Interesi vjetor t ruhet n variabln statike n menyr q t jet i njt pr
t gjith klientt. T deklarohen dy klient t cilt vendosin shuma t ndryshme t
parave n llogarin e kursimeve dhe m pas t llogaritet interesi pr 12
muaj duke e shtypur rezultatin pr secilin muaj.

#include <iostream>
#include <iomanip>
using namespace std;

class kursimet
{
private:
double bilanciKursimeve;
static double InteresiVjetor;
public:
kursimet(double fillestare)
{
//nse gjendja fllestare eshte me e vogel se zero vendose 0.
bilanciKursimeve = fllestare >= 0 ? fllestare : 0;
}
void interesiMujor();
static void ndryshoInteresinMujor( double );
void shfaqBilancin() ;
};

Vehbi Neziri & Ramadan Dervishi

double kursimet::InteresiVjetor = 0.0;

void kursimet::interesiMujor()
{
bilanciKursimeve += bilanciKursimeve * ((InteresiVjetor/100)/12.0 );
}

void kursimet::ndryshoInteresinMujor( double interesi )


{
//nse interesi sht m I madh se 1.75% vendose ne 1.5
InteresiVjetor = ( interesi >= 0 && interesi <= 1.75 ) ? interesi : 1.5;
}

void kursimet::shfaqBilancin( void )


{
cout << fixed <<showpoint
<<

setprecision(2) << bilanciKursimeve

<< fixed <<showpoint ;


}

int main()
{
char v[]="\n------------------------------------------------------------ \n";
kursimet::ndryshoInteresinMujor(1.5); //inicimi para se t krijohen objektet

kursimet klienti1(1000), klienti2(1500); //krijimi i dy objekteve

cout <<
1.5%"

"\nBilancet mujore

pr

kursimet

me

interesi

<<v
<< "Bilanci fillestar i kursimeve: \nKlienti 1 ";

cout << "\t\nKlienti 2 ";


klienti2.shfaqBilancin();
cout<<v;

for (int muaji = 1; muaji <= 12; ++muaji )


{
klienti1.interesiMujor();
klienti2.interesiMujor();
cout << "\nMuaji" << setw(3) << muaji << "| Klienti 1: ";
klienti1.shfaqBilancin(); cout
<< "\t||\tKlienti 2: ";
klienti2.shfaqBilancin();
}
cout<<v;

system("pause");
return 0;
}

5.16. Shfrytzimi i antarve t mbrojtur


protected
Nse dshirohet q antart privat t klass baz t prdoren edhe n klasn
e derivuar, ather kta antar duhet t deklarohen si protected.
Antarve t deklaruar si protected nuk mund t iu qaset nga jasht klass,
por mund t iu qaset nga nj klas e derivuar.

Vehbi Neziri & Ramadan Dervishi

klienti1.shfaqBilancin();

112. T shkruhet programi n t cilin krijohet klasa baz fgura dhe klasa e
derivuar drejtkendeshi. Klasa baz prmban antart e mbrojtur
gjatesia dhe lartesia si dhe funksionet pr vendosjen e ktyre vlerave.
N klasn e derivuar t llogaritet siprfaqja e drejtkndshit, kurse n funksionin
kryesor t krijohet objekti i klass drejtkendeshi dhe t shtypet vlera e
siprfaqes.

#include <iostream>
using namespace std;

class figura

//Klasa baz

{
protected:
int gjatesia;
int lartesia;
public:
void v_gjatesine(int g)
{
gjatesia = g;
}
void v_lartesine(int h)

{
lartesia = h;
}

class drejtkendeshi: public figura

//Klasa e derivuar

{
public:
int m_siperfaqe()
{
return (gjatesia * lartesia);
}
};

int main()
{
drejtkendeshi drejt;
drejt.v_gjatesine(5);
drejt.v_lartesine(7);

cout << "Siperfaqja: "


<< drejt.m_siperfaqe()
<< endl;

system("pause");
return 0;
}

113. T shkruhet programi n t cilin krijohet klasa baz trajnimet dhe


klasa e derivuar topTrajnimi. Klasa baz prmban antart e mbrojtur
id dhe emri t tipit string si dhe funksionet pr vendosjen e ktyre vlerave.
N klasn e derivuar sht nj antar privat me emrin vleresimi i tipit
int dhe funksioni shtyp pr shtypjen e vlerave t id-s, emrit dhe

Vehbi Neziri & Ramadan Dervishi

};

vlersimit. N funksionin main t krijohet nj objekt i


derivuar, t vendosen vlerat dhe me pas t shtypen kto vlera.

#include <iostream>
#include <string>
using namespace std;

class trajnimet
{
protected:
string id;
string emri;
public:
void v_id(string id1)
{
id=id1;
}
void v_emrin(string emri1)
{
emri=emri1;
}
};

class topTrajnimi : public trajnimet

klass

{
private:
int vleresimi;
public:
void v_vleresimin(int vlera)

vleresimi=vlera;
}
void shtyp()
{
cout<<"Kursi me i vleresuar\n"
<<"ID: "<<id
<<"\nEmri: "<<emri
<<"\nVleresimi: "<<vleresimi <<"\n";
}
};

int main()
{

topTrajnimi top1;
top1.v_id("ASDh2013");
top1.v_emrin("Algoritmet dhe Struktura e t Dhenave");
top1.v_vleresimin(5);
top1.shtyp();

system("pause");
return 0;
}

Vehbi Neziri & Ramadan Dervishi

5.17. Shfrytzimi i antarve gjat trashgimis


Shfrytzimi i antarve gjat trashgimis mund t bhet si public, protected
dhe private. Nse nuk prcaktohet specifikuesi i qasjes, ather merret si
private. Skema e mposhtme paraqet mnyrat e trashgimis.

Trashgimia publike sht metoda m e praktikuar, prandaj sht m rndsi


q kjo metod t kuptohet mir. Kur t trashgohet nj klas si publike,
t gjith antart do t ruajn specifikimet origjinale t qasjes.

Trashgimia
publike

Specifikuesi i
qasjes
Public
Protected
Private

Specifikuesi i
qasjes (derivuar)
Public

Qasja e klass
s derivuar
Po

Qasja jasht
klass
Po
Jo
Jo

Specifikuesi i
qasjes
Public
Protected
Private

Trashgimia
Specifikuesi i
Qasja e klass
qasjes (derivuar)
Public

s derivuar
Po

Jo
Jo
Jo

Qasja jasht
klass

Me trashgimi t mbrojtur, antart publik bhet protected, kurse antart


privat mbesin privat. Trashgimia protected sht e ngjashme sikurse edhe
trashgimia private. Kjo mund t shihet edhe nga tabelat.

Specifikuesi i
qasjes
(baz)
Public
Protected
Private

Trashgimia e
Specifikuesimbrojtur
i
Qasja e klass
qasjes (derivuar)
Public

s derivuar
Po

Qasja jasht
klass
Jo
Jo
Jo

114. T shkruhet programi, prmes t cilit krijohet klasa Baza n antart e


s cils paraqitet tri variabla, nj publike, nj private dhe nj
protected. T krijohet klasa derivuar dhe t trashgohet si public nga
klasa baz. M pas t provohet me iu qasur antarve t klass s
derivuar.

#include <iostream>
using namespace std;

class Baza
{
public:

Vehbi Neziri & Ramadan Dervishi

Me trashgimi private t gjith antar e klass baz jan t trashguar si


private. Kjo do t thot antart private qndrojn private, dhe antart e mbrojtura
dhe publik bhen private.

int a_publik;
private:
int a_privat;
protected:
int a_mbrojtur;
};

class derivuar: public Baza


{
derivuar()
{
// Klasa e derivuar gjithmon prdor specifikuesit e klass prind
a_publik = 1;

a_privat = 2; // Klasa e derivuar nuk mund t qaset tek antaret privat.


a_mbrojtur = 3;
}
};

{
derivuar obj;
obj.a_publik = 1;
obj.a_privat = 2; // sht privat dhe nuk mundemi me iu qasur jasht klass
obj.a_mbrojtur = 3;

115. T shkruhet programi, prmes t cilit krijohet klasa Baza n antart e


s cils paraqitet tri variabla, nj publike, nj private dhe nj
protected. T krijohet klasa derivuar dhe t trashgohet si private nga
klasa baz. M pas t provohet me iu qasur antarve t ndryshm t
klass baz dhe t klass s derivuar.

#include <iostream>
using namespace std;

class Baza
{
public:
int a_publik;
private:
int a_privat;
protected:
int a_mbrojtur;
};

13
01

Vehbi Neziri & Ramadan Dervishi

int main()

class derivuar: private Baza


{
derivuar()
{
// Klasa e derivuar gjithmon prdor specifikuesit e klases prind
a_publik = 1;
a_privat = 2; // Klasa e derivuar nuk mund t qaset tek anetart privat.
a_mbrojtur = 3;
}
};

int main()
{
derivuar obj;
// a_publik tashme sht privat dhe nuk mundemi me iu qasur jasht
klass obj.a_publik = 1;
// a_privat tashme sht privat dhe nuk mundemi me iu qasur jasht
klass obj.a_privat = 2;
// a_mbrojtur tashm sht privat dhe nuk mundemi me iu qasur jashte
klass obj.a_mbrojtur = 3;

Baza obj_b;
obj_b.a_publik = 1;
// a_privat sht privat dhe nuk mundemi me iu qasur jasht klass
obj_b.a_privat = 2;

13
11

// a_mbrojtur sht protected dhe nuk mundemi me iu qasur jasht


klass obj_b.a_mbrojtur = 3;
}

You might also like