#include <iostream>
using namespace std;
class BankAccount{
private:
double balance,rate;
int accound_id [12];
public:
BankAccount();
void display();
void data();
void update();
};
BankAccount::BankAccount(){
strcpy(account_id,111111111111);
balance=0.0;
rate=0.0;
}
void BankAccount::display(){
cout<<"\n Account ID: "<<account_id<<"\n Balance: "<<balance<<"\n Rate: "<<rate<<endl;
}
void BankAccount::data(){
cout<<"\n********* WELCOME *********\n Enter ID: ";
cin.getline(account_id,12);
cout<<" Enter account's total BALANCE and RATE: ";
cin<<balance<<rate;
}
int main(int argc, char** argv) {
BankAccount no1,no2;
no1.data();
no1.display();
no2.display();
return 0;
}
Αυτη ειναι η γενικη ιδεα. Οπως παρατηρει κανεις υπαρχουν συντακτικα λαθη (πχ δεν μπορω να εμαφανισω πινακα που εχω κανει παραπανω στον κωδικα). Δεν εχω λαβει υποψη λαθη οπως πχ ο χρηστης να εισαγει αρνητικους αριθμους και φυσικα οπως γινεται ευκολα αντιληπτο δεν υπαρχει ιχνος απο set_ get_ καθως και ολοκληρη η update (αυτη που ειναι υπευθηνη για τον τοκισμο 1 χρονου που ειναι ((balance*rate)*12)+balance ). Μεχρι εκει τα καταφερα.
Αρχικά για το ότι δεν σου εμφανίζεται ο πίνακας, είναι επειδή στο stream του δίνεις το account_id ως όρισμα. Θα πρέπει να διατρέξεις τον πίνακα και να εκτυπώνεις κάθε στοιχείο του για να σου το δείξει σωστά.
Aφού επέλεξες να βάλεις πίνακα για το ID, στην υλοποιήση σου αυτό
strcpy(account_id,111111111111);
είναι λάθος. H strcpy κάνει copy null-terminated C strings, θα πρέπει να χρησιμοποιήσεις αυτό
memset(account_id, 1, sizeof(int) * 12)
για να μην έχεις access violation και να αρχικοποιήσεις τον πίνακα σωστά.
Ακόμα πιο σωστό θα ήταν να χρησιμοποιήσεις το std::array από την standard βιβλιοθήκη της C++ και απλώς να κάνεις
account_id.fill(1)
Tα set και τα get δεν ξέρω γιατί σε δυσκολεύουν, ουσιαστικά θα είναι κάτι τέτοιο:
double Rate() const
{
return m_rate;
}
void SetRate(double rate)
{
m_rate = rate;
}
H update, χωρίς να έχεις ανατοκισμό κάθε μήνα θα είναι κάτι τέτοιο:
void Update()
{
auto interest = (balance * rate * kAccountableMonthsForInterest);
balance += interest;
}
και θα πρέπει να έχεις δηλώσει αυτό κάπου στην κλάση σου
const kAccountableMonthsForInterest = 12;
Δηλαδή η Update ουσιαστικά είναι ο τύπος που έγραψες (υποθέτωντας ότι κάνεις τον ανατοκισμό στο τέλος του χρόνου).