Witam mam problem z pewną Klasą. Polecenie jest takie:
Zdefiniuj klasę TKwota, z polami prywatnymi zlote i grosze (liczby całkowite , grosze z zakresu 0,...,99).
Dla obiektów Klasy powinny być możliwe następujące operacje:
- ustawienie pól klasy na podstawie parametrów,
- Konstrukcja obiektu klasy na podstawie parametrów (domyślna kwota o wartości 0 ),
- dodawanie kwot (przeciążyć operatory + , +=),
- mnożenie kwoty przez nie ujemną liczbę rzeczywistą(przeciążyć operatory * , *=),
- przypisywanie jednej kwoty do drugiej (przeciążyć operator =),
- porównywanie kwot(przeciążyć operatory == , > , >=),
- wczytywanie i wyświetlanie (>> , << ).
Mam problem taki :
1 - nie wiem czy operatory przeciążania dobrze napisałem głównie chodzi mi o = , > , >= , następnie czy operator *= który jest za komentowany czy jest tez poprawnie napisany , a jak nie to prosze o poprawienie.
2 - Przykłady jak z nich skorzystać w main() , bo działa mi i wiem jak skorzystać z == , += , +.
#include<iostream>
#include<cmath>
using namespace std;
class TKwota
{
private:
int zlote;
int grosze;
public:
TKwota( int, int );
void ustaw( int, int );
TKwota & operator =( TKwota & );
TKwota operator +( TKwota & w );
TKwota operator *( double w );
TKwota & operator +=( const TKwota & );
TKwota & operator *=( const TKwota & );
bool operator ==( TKwota & w );
bool operator >=( TKwota & w );
bool operator >( TKwota & w );
friend ostream & operator <<( ostream &, TKwota w );
friend istream & operator >>( istream &, TKwota w );
};
TKwota::TKwota( int zl = 0, int gr = 0 )
{
ustaw( zl, gr );
}
void TKwota::ustaw( int zl, int gr )
{
int rob;
rob = gr / 100;
grosze = gr % 100;
zl += rob;
zlote = zl;
}
bool TKwota::operator >( TKwota & w )
{
if( w.zlote > zlote && w.grosze > grosze )
return true;
else
return false;
}
bool TKwota::operator >=( TKwota & w )
{
if( w.zlote >= zlote && w.grosze >= grosze )
return true;
else
return false;
}
bool TKwota::operator ==( TKwota & w )
{
if(( w.zlote == zlote ) &&( w.grosze == grosze ) )
return true;
else
return false;
}
TKwota & TKwota::operator =( TKwota & w )
{
ustaw( zlote = w.zlote, grosze = w.grosze );
return * this;
}
TKwota & TKwota::operator +=( const TKwota & w )
{
ustaw( zlote += w.zlote, grosze += w.grosze );
return * this;
}
TKwota TKwota::operator *( double w )
{
TKwota k;
int totalgrosze = zlote * w * 100 + grosze * w;
k.zlote = totalgrosze / 100;
k.grosze = totalgrosze % 100;
return k;
}
TKwota TKwota::operator +( TKwota & w )
{
TKwota k;
k.ustaw( zlote + w.zlote, grosze + w.grosze );
return k;
}
ostream & operator <<( ostream & wyj, TKwota w )
{
if( w.zlote > 0 )
wyj << w.zlote << " Zl " << endl;
if( w.grosze < 10 && w.grosze > 0 )
{
wyj << "0" << w.grosze << " gr " << endl;
}
else if( w.grosze > 10 )
{
wyj << w.grosze << " gr " << endl;
}
else if( w.zlote == 0 && w.grosze == 0 )
{
wyj << "0" << endl;
}
w.ustaw( w.zlote, w.grosze );
return wyj;
}
istream & operator >>( istream & wczy, TKwota w )
{
wczy >> w.zlote;
wczy >> w.grosze;
return wczy;
}
int main()
{
TKwota Kf;
Kf.ustaw( 3, 3 );
TKwota Kw, suma;
Kw.ustaw( 2, 5 );
cout << "suma:" << endl;
suma = Kf + Kw;
cout << suma << endl;
system( "pause" );
return 0;
}