Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Zmiana znaku na przeciwny i porównanie

Ostatnio zmodyfikowano 2015-08-01 20:22
Autor Wiadomość
carlosmay
Temat założony przez niniejszego użytkownika
[C++] Zmiana znaku na przeciwny i porównanie
» 2015-08-01 16:21:14
Najprościej:
C/C++
class Ror
{
private:
    std::string _fname;
    std::string _lname;
    std::string _account;
    std::string _pin;
    double _balance;
    void SetBal( const double & amt ) { _balance += amt; }
public:
    Ror();
    Ror( const std::string & pin, const std::string & fn, const std::string & ln,
    const std::string & acc_num, double bal = 0 );
    ~Ror();
    void Deposit( const double & amt );
    void Withdrawal( double amt );
    bool operator ==( const std::string & t ) const;
    void Show();
};

Metody:
C/C++
void Ror::Deposit( const double & amt ) {
    if( amt < 0 )
    {
        std::cout << "Wplata nie moze byc ujemna.\nPrzerywam sesje" << std::endl;
        return;
    }
    else SetBal( amt );
   
}

void Ror::Withdrawal( double amt ) {
    if( amt > _balance ) {
        std::cout << "Nie mozesz wyplacic wiecej niz posiadasz." << std::endl;
        std::cout << "Zamykam sesje." << std::endl;
        return;
    }
    else {
        amt *=( - 1 );
        SetBal( amt );
    }
}

bool Ror::operator ==( const std::string & t ) const {
    if( _pin == t ) return true;
    else return false;
   
}

Użycie:
C/C++
case '1': // wplata
cout << "Podaj wysokosc wplaty: ";
cin.clear(); cin.sync();
cin >> amount;
cout << endl;
bailee[ i ].Deposit( amount );
op = '0';
break;
case '2': // wyplata
cout << "Podaj wysokosc wyplaty: ";
cin.clear(); cin.sync();
cin >> amount;
cout << endl;
bailee[ i ].Withdrawal( amount );
op = '0';
break;

Pytania:
1. Czy taka zamiana znaku na przeciwny jest ok, czy może w jakimś przypadku nie zadziałać?
C/C++
amt *=( - 1 );
2. Operator== przeciążony jest dla pola _pin. Jeśli chciałbym dodać drugi sposób na sprawdzenie logowanego użytkownika,
np: przez pin, nazwisko lub nr konta, to nie mam za bardzo pomysłu jak to można zrobić.
Czy takie wyjście jest dobre?
C/C++
bool Ror::operator ==( const std::string & t ) const {
    if( _pin == t || _lname == t || _account == t ) return true;
    else return false;
   
}
 
P-135582
pekfos
» 2015-08-01 16:42:08
C/C++
amt *=( - 1 );
SetBal( amt );
Krócej tak.
C/C++
SetBal( - amt );

Czy takie wyjście jest dobre?
C/C++
bool Ror::operator ==( const std::string & t ) const {
    if( _pin == t || _lname == t || _account == t ) return true;
    else return false;
   
}
Jeśli działa..
P-135583
carlosmay
Temat założony przez niniejszego użytkownika
» 2015-08-01 20:22:15
Tak wszystko działa.
Dzięki za

C/C++
amt *=( - 1 );
SetBal( amt );

Krócej tak.
C/C++
SetBal( - amt );
nie wpadłem na to.
P-135589
« 1 »
  Strona 1 z 1