Witam mam takie zadanie:
Poniższe zadania dotyczą tematów: "Zaawansowane funkcje użytkownika", "Preprocesor, a moduły", "Klasy", "Konstruktory i destruktory".
WSKAZÓWKI:
- zastanów się jakich potrzebujesz obiektów składowych dla swojej klasy,
- zastanów się jakich potrzebujesz funkcji składowych dla swojej klasy,
- pamiętaj, że w poniższych programach wszystkie obiekty składowe muszą być prywatne,
- pamiętaj, że w poniższych programach funkcje składowe mogą być prywatne albo publiczne.
Zaprojektować klasę jako osobny moduł (patrz: dalej). W klasie publiczne są TYLKO funkcje składowe. Stan początkowy klasy ustalamy za pomocą konstruktora klasy.
Aby zaliczyć program należy utworzyć klasę umożliwiającą wyświetlanie wydruku analogicznego do przykładowych wydruków pokazanych poniżej. Należy wzorować się na przykładowym programie przedstawionym w temacie: Definiowanie klasy w osobnym module.
Klasa ma realizować następujące zadanie:
"Sejf" - do przechowywania euro oraz dolarów (zdefiniowac maksymalne kwoty osobne dla obu walut). Wkładanie i wyjmowanie pieniędzy oraz informowanie o stanie sejfu możliwe jest tylko przy otwartym sejfie. Przykładowy wydruk:
Sejf zamknięty (objętość sejfu to maksymalnie: 1000 banknotów)
Wkładam 5x10$...
BŁĄD: nie można nic włożyć do zamkniętego sejfu
Wyciągam 5x10$...
BŁĄD: nie można nic wyciągnąć z zamkniętego sejfu
Otwieram sejf...
Sejf otwarty - w środku znajduje się:
10x500€ = 5000€
40x100$ = 4000$
Razem banknotów: 50
Wkładam 5x10$, 5x1$...
Sejf otwarty - w środku znajduje się:
10x500€ = 5000€
40x100$ + 5x10$ + 5x1$ = 4055$
Razem banknotów: 60
Wkładam 1000x100$...
BŁĄD: za dużo banknotów (w sejfie zmieści się jeszcze tylko 940 banknotów)
Sejf otwarty - w środku znajduje się:
10x500€ = 5000€
40x100$ + 5x10$ + 5x1$ = 4055$
Razem banknotów: 60
Zamykam sejf...
Sejf zamknięty (objętość sejfu to maksymalnie: 1000 banknotów)
#include <iostream> //załączanie bibliotek
using namespace std;
int indeks, i;
class sejf{
private:
int l_bank; // liczba banknotów
int euro[7]; // nominaly euro - 5, 10, 20, 50, 100, 200, 500
int dolar[6]; // nominaly dolara - 1, 5, 10, 20, 50, 100
bool otwarty; // otwarte, zamkniete?
int max;
public:
sejf(int max_);
void otworz(); // deklaracja funkcji skladowych
void zamknij();
void wloz(bool waluta, int nom, int ilosc); // if you know what i mean
void wyciagnij(bool waluta, int nom, int ilosc);
void info();
};
sejf::sejf(int max_){
max=max_;
for(i=0;i>6;i++){
euro[i]=0;
}
for(i=0;i>5;i++){
dolar[i]=0;
}
}
void sejf::otworz(){
cout << "Otwieram sejf...\n";
otwarty = 1;
}
void sejf::zamknij(){
cout << "Zamykam sejf...\n";
otwarty = 0;
}
void sejf::wloz(bool waluta, int nom, int ilosc){
if(otwarty=1){
if(max-l_bank<ilosc){
cout << "BLAD: sejf nie zmieści tyle banknotów.\n";
}
else{
if(waluta=0){
switch(nom){ // sprawdzanie czy nominal jest prawdziwy
case 5: indeks=0;
case 10: indeks=1;
case 20: indeks=2;
case 50: indeks=3;
case 100: indeks=4;
case 200: indeks=5;
case 500: indeks=6;
default: cout << "Nieprawidlowy nominal!\n"; // błąd
}
euro[indeks]=ilosc;
cout << "Wkladanie " << ilosc << " banknotow euro o nominale " << nom << "\n";
}
else{
switch(nom){ // sprawdzanie czy nominal jest prawdziwy
case 1: indeks=0;
case 5: indeks=1;
case 10: indeks=2;
case 20: indeks=3;
case 50: indeks=4;
case 100: indeks=5;
default: cout << "Nieprawidlowy nominal!\n"; // błąd
}
dolar[indeks]=ilosc;
l_bank+=ilosc;
cout << "Wkładanie " << ilosc << " banknotow dolarowych o nominale " << nom << "\n";
}
}
}
else{
cout << "BLAD: nie można nic włozyc do zamknietego sejfu\n";
}
}
void sejf::wyciagnij(bool waluta, int nom, int ilosc){
if(otwarty=1){
if(max-l_bank<ilosc){
cout << "BLAD: sejf nie zmieści tyle banknotów.\n";
}
else{
if(waluta=0){
switch(nom){ // sprawdzanie czy nominal jest prawdziwy
case 5: indeks=0;
case 10: indeks=1;
case 20: indeks=2;
case 50: indeks=3;
case 100: indeks=4;
case 200: indeks=5;
case 500: indeks=6;
default: cout << "Nieprawidlowy nominal!\n"; // błąd
}
euro[indeks]=ilosc;
cout << "Wkladanie " << ilosc << " banknotow euro o nominale " << nom << "\n";
}
else{
switch(nom){ // sprawdzanie czy nominal jest prawdziwy
case 1: indeks=0;
case 5: indeks=1;
case 10: indeks=2;
case 20: indeks=3;
case 50: indeks=4;
case 100: indeks=5;
default: cout << "Nieprawidlowy nominal!\n"; // błąd
}
dolar[indeks]=ilosc;
l_bank+=ilosc;
cout << "Wkładanie " << ilosc << " banknotow dolarowych o nominale " << nom << "\n";
}
}
}
else{
cout << "BLAD: nie można nic włozyc do zamknietego sejfu\n";
}
}
void sejf::info(){
if(otwarty=0) cout << "\n\nSejf zamkniety"; cout << "Sejf otwarty";
cout << ", maksymalna liczba banknotow to " << max << ".\n" <<"W srodku znajduje sie:\n" << "€:\tNominal\tIlosc\n\n";
cout << "\t5\t" << euro[0] << "\n";
cout << "\t10\t" << euro[1] << "\n";
cout << "\t20\t" << euro[2] << "\n";
cout << "\t50\t" << euro[3] << "\n";
cout << "\t100\t" << euro[4] << "\n";
cout << "\t200\t" << euro[5] << "\n";
cout << "\t500\t" << euro[6] << "\n\n";
cout << "$:\tNominal\tIlosc\n\n";
cout << "\t1\t" << dolar[0] << "\n";
cout << "\t5\t" << dolar[1] << "\n";
cout << "\t10\t" << dolar[2] << "\n";
cout << "\t20\t" << dolar[3] << "\n";
cout << "\t50\t" << dolar[4] << "\n";
cout << "\t100\t" << dolar[5] << "\n";
}
int main(void){
sejf pancerniak(1000);
pancerniak.wloz(1,20,40);
pancerniak.otworz();
pancerniak.wloz(0,50,768);
pancerniak.wloz(1,100,60);
pancerniak.info();
pancerniak.zamknij();
};
Tylko to nie działa poprawnie , wkładanie w ogóle nie działa i nie wiem co tu jest jeszcze źle, dodam tylko że jestem zielony w programowaniu. ;P