You are on page 1of 8

Algoritmikë dhe Programim i Avancuar Seminar 4

1. Krijoni ne klase llogariDepozit. Perdorni nje anetar te dhene statike perqindjaInteresitVjetor per te
ruajtu perqindjen e interesit vjetor per cdo depozite. Cdo pjestar i klases ka nje te dhene private
balancaDepozites qe percakton shumen aktuale ne depozite. Krijoni nje funksion
llogaritInteresinMujor qe llogarit interesin mujor duke shumezuar balancen me
perqindjaInteresitVjetor/12, ky interes duhet te shtohet tek balancaDepozites. Krijoni nje funksion
static modifikoPerqindjenInteresit qe vendos perqindjaInteresitVjetor ne nje vlere te re. Shkruani
programin qe teston klasen e krijuar. Inicializoni dy objekte te ndryshem te klases depozita1 dhe
depozita2 me balance perkatesisht $2000.00 dhe $3000.00. Vendosni vleren e
perqindjaInteresitVjetor ne 3 perqind. Me pas llogaritni interesin mujor dhe printoni balancen e re per
cdo depozite. Me pas vendoseni perqindjaInteresitVjetor ne vleren 4 perqind dhe llogaritni interesin e
muajit pasardhes dhe printoni balancen per cdo depozite.

llogaria.h
#ifndef Llogaria
#define Llogaria
class llogariDepozit
{
public:
llogariDepozit(){}
llogariDepozit(double vlera);
~llogariDepozit(){}
static double perqindjaInteresitVjetor;
void llogaritInteresinMujor();
static void modifikoPerqindjenInteresit (double vlera);
double printoBalance() const { return balancaDepozites; }
private:
// cdo anetar i klases ka nje anetar privat qe percakton balancen aktuale te depozites
double balancaDepozites;
};
#endif

llogaria.cpp
#include "llogaria.h"
#include <iostream>
#include <iomanip>
using namespace std;
// konstruktori i kopjes per te inicializuar vlerat
llogariDepozit::llogariDepozit(double vlera)
{
balancaDepozites = vlera;
}

// perdorimi i nje te dhene statike perqindjaInteresitVjetor per te ruajtur interesin vjetor


double llogariDepozit::perqindjaInteresitVjetor(0);

// Funksioni llogaritInteresinMujor qe llogarit interesin mujor duke shumezuar


// balancaDepozites me perqindjaInteresitVjetor/12; ky interes i shtohet vleres se balancaDepozites.
void llogariDepozit::llogaritInteresinMujor()
{
balancaDepozites += ((balancaDepozites * perqindjaInteresitVjetor) / 12);
1
Algoritmikë dhe Programim i Avancuar Seminar 4
}
//funksioni statik modifikoPerqindjenInteresit qe vendos nje vleret te re ne perqindjaInteresitVjetor.
void llogariDepozit::modifikoPerqindjenInteresit (double vlera)
{
perqindjaInteresitVjetor = vlera;
}

main.cpp
#include <cstdlib>
#include <iostream>
#include "llogaria.h"
using namespace std;
int main()
{
llogariDepozit depozita1(2000.00);
llogariDepozit depozita2(3000.00);

// vendos perqindjaInteresitVjetor ne 3%.


llogariDepozit::modifikoPerqindjenInteresit (0.03);

// llogaritet interesi mujor dhe i shtohet balances


cout << "Interesi i muajit te pare eshte :\n\n";
depozita1.llogaritInteresinMujor();
cout << "Balanca e Depozita 1 eshte: $" << depozita1.printoBalance() << "\n";

depozita2.llogaritInteresinMujor();
cout << "Balanca e Depozita 2 eshte: $" << depozita2.printoBalance() << "\n";

cout << endl;

// vendos perqindjaInteresitVjetor ne 4%
llogariDepozit::modifikoPerqindjenInteresit (0.04);

// llogaritet interesi i muajit pasardhes me vleren e re te interesit dhe printohet balanca e depozites
cout<< "Interenci i muajit te dyte eshte :\n\n";
depozita1.llogaritInteresinMujor();
cout << "Balanca e Depozita 1 eshte: $" << depozita1.printoBalance() << "\n";

depozita2.llogaritInteresinMujor();
cout << "Balanca e Depozita 2 eshte: $" << depozita2.printoBalance() << "\n";
cout << endl;
return 0;
}

2. Krijoni nje klase Thyesat qe ka karakteristikat e meposhtme :


a. Krijoni nje konstruktor qe nuk lejon vendosjen e emerues ten je vlere 0, thjeshton thyesat qe nuk
jane ne formen e tyre me te thejshte dhe nuk lejon vlere negative ne emerues.
b. Overload operatoret e mbledhjes, zbritjes, shumezimit dhe pjestimit per kete klase.
c. Overload operatoret relacional dhe te barazimit per kete klase.

2
Algoritmikë dhe Programim i Avancuar Seminar 4
thyesa.h
#ifndef thyesat
#define thyesat
class Thyesat
{
public:
Thyesat(int = 0, int = 1);
Thyesat operator +(const Thyesat&);
Thyesat operator -(const Thyesat&);
Thyesat operator *(const Thyesat&);
Thyesat operator /(Thyesat&);
bool operator >(const Thyesat&) const;
bool operator <(const Thyesat&) const;
bool operator >=(const Thyesat&) const;
bool operator <=(const Thyesat&) const;
bool operator ==(const Thyesat&) const;
bool operator !=(const Thyesat&) const;
void print(void) const;
private:
int numeruesi;
int emeruesi;
void thjeshto(void);
};

#endif

thyesat.cpp
#include <iostream>
#include <cstdlib>
#include "thyesat.h"
using namespace std;

// krijon nje konstruktor qe nuk lejon vendosjen e vleres 0 ne emerues


//thjeshton thyesat qe nuk jane ne forme te thjeshtuar dhe nuk lejon vlera negative ne emerues
Thyesat::Thyesat(int n, int d)
{
numeruesi = n;
emeruesi = d;
if (d == 0 || d < 0)
{
cout << "Nuk mund te futet vlere negative ose zero ne emerues" << endl;
exit (1);
}
thjeshto();
}

// Overload veprimi mbledhjes


Thyesat Thyesat::operator +(const Thyesat &shto)
{
Thyesat shuma;
3
Algoritmikë dhe Programim i Avancuar Seminar 4
shuma.numeruesi = numeruesi * shto.emeruesi + emeruesi * shto.numeruesi;
shuma.emeruesi = emeruesi * shto.emeruesi;
shuma.thjeshto();
return shuma;
}

// Overload operatori zbritjes


Thyesat Thyesat::operator -(const Thyesat &zbrit)
{
Thyesat diferenca;
diferenca.numeruesi = numeruesi * zbrit.emeruesi - emeruesi * zbrit.numeruesi;
diferenca.emeruesi = emeruesi * zbrit.emeruesi;
diferenca.thjeshto();
return diferenca;
}

// Overload operatorit te shumezimit


Thyesat Thyesat::operator *(const Thyesat &shumezo)
{
Thyesat shumezimi;
shumezimi.numeruesi = numeruesi * shumezo.numeruesi;
shumezimi.emeruesi = emeruesi * shumezo.emeruesi;
shumezimi.thjeshto();
return shumezimi;
}

// Overload operatori pjestimit


Thyesat Thyesat::operator /(Thyesat &pjesto)
{
Thyesat pjestimi;
if (pjesto.numeruesi == 0)
{
cout << "Nuk mund te behet pjestim me 0" << endl;
exit (1);
}
else
{
pjestimi.numeruesi = numeruesi * pjesto.emeruesi;
pjestimi.emeruesi = emeruesi * pjesto.numeruesi;
pjestimi.thjeshto();
}
return pjestimi;
}

// Overload operatoreve relacional dhe te barazimit


bool Thyesat::operator >(const Thyesat &grr) const
{
if (static_cast<double> (numeruesi) / emeruesi > static_cast<double>(grr.numeruesi) /
grr.emeruesi)
return true;
4
Algoritmikë dhe Programim i Avancuar Seminar 4
else
return false;
}

bool Thyesat::operator <(const Thyesat &lsr) const


{
if (static_cast<double>(numeruesi) / emeruesi < static_cast<double>(lsr.numeruesi) /
lsr.emeruesi)
return true;
else
return false;
}

bool Thyesat::operator >=(const Thyesat &grer) const


{
{
return *this == grer || *this > grer;
}
}

bool Thyesat::operator <=(const Thyesat &lser) const


{
{
return *this == lser || *this < lser;
}
}

bool Thyesat::operator ==(const Thyesat &eer) const


{
if (numeruesi == eer.numeruesi && emeruesi == eer.emeruesi)
return true;
else
return false;
}

bool Thyesat::operator !=(const Thyesat &ner) const


{
{
return !( *this == ner);
}
}

void Thyesat::print(void) const


{
if (numeruesi == 0)
cout << numeruesi;
else if (emeruesi == 1)
cout << numeruesi;
else
cout << numeruesi << '/' << emeruesi;
5
Algoritmikë dhe Programim i Avancuar Seminar 4
}

// thjeshto thyesat qe nuk jane ne nje forme te thejshtueshme


void Thyesat::thjeshto(void)
{
int meMadhi, pjestuesiMeMadh = 1;

meMadhi = (numeruesi > emeruesi) ? numeruesi: emeruesi;

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


if ( numeruesi % i == 0 && emeruesi % i == 0)
pjestuesiMeMadh = i;

numeruesi /= pjestuesiMeMadh;
emeruesi /= pjestuesiMeMadh;
}

main.cpp
#include <iostream>
#include "thyesat.h"
using namespace std;
int main()
{
Thyesat numer1(15, 2);
Thyesat numer2(8, 6);
Thyesat vlera;

// Mbledhja
cout << "Mbledhja: ";
numer1.print();
cout << " + ";
numer2.print();
cout << " = ";
vlera = numer1 + numer2;
vlera.print();
cout << "\n";

// diferenca
cout << "Diferenca: ";
numer1.print();
cout << " - ";
numer2.print();
cout << " = ";
vlera = numer1 - numer2;
vlera.print();
cout << "\n";

//shumezimi
cout << "Shumezimi: ";
numer1.print();
6
Algoritmikë dhe Programim i Avancuar Seminar 4
cout << " x ";
numer2.print();
cout<< " = ";
vlera = numer1 * numer2;
vlera.print();
cout << "\n";

//pjestimi
cout << "Pjestimi: ";
numer1.print();
cout << " / ";
numer2.print();
cout << " = ";
vlera = numer1 / numer2;
vlera.print();
cout << "\n";

//testimi i operatoreve overloaded relacional dhe operatorit te barazimit


cout << "Krahaso: ";
numer1.print();
cout << " eshte ";
cout << ((numer1 > numer2) ? "> " : "<= ");
numer2.print();

cout << "\nKrahaso: ";


numer2.print();
cout << " eshte ";
cout << ((numer1 < numer2) ? "< " : ">= ");
numer1.print();

cout << "\nKrahaso: ";


numer1.print();
cout << " eshte ";
cout << ((numer1 >= numer2) ? ">= " : "< ");
numer2.print();

cout << "\nKrahaso: ";


numer2.print();
cout << " eshte ";
cout << ((numer2 <= numer1) ? "<= " : "> ");
numer1.print();

cout << "\nKrahaso: ";


numer1.print();
cout << " eshte ";
cout << ((numer1 == numer2) ? "== " : "!= ");
numer2.print();

cout << "\nKrahaso: ";


numer2.print();
7
Algoritmikë dhe Programim i Avancuar Seminar 4
cout << " eshte ";
cout << ((numer2 != numer1) ? "!= " : "== ");
numer1.print();
cout << "\n\n";

Thyesat numer3 (20, 0);

Thyesat numer4(15, -5);

return 0;
}

You might also like