Run Time Error hilf plz :'(
-
ich bekomm ein run time error aber ich weis nicht wiso alles lauft so wie es muss, siht einer was was ich nicht sehe.
#include <iostream> using namespace std; class Cashier{ private: bool open_flag, serving_flag; int customers_served; int L; public: Cashier(){open_flag=0; serving_flag=0;} void set_L(int a){L=a;} void open(){ cout << "Cashier now opened!" << endl; open_flag=1; customers_served=0;} void close(){ cout << "Cashier closed!" << endl; open_flag=0;} void serve(){ cout << "Serving customer!" << endl; serving_flag=1;} void free(){ cout << "Customer served, now free!" << endl; serving_flag=0; if(++customers_served==L) close();} bool is_open(){ return open_flag;} bool is_free(){ return serving_flag;} }; class Bank{ private: int customer; int serving; int K, M, N; public: int GcashierNm; void open(int cashierNm){ cashier[cashierNm].open();} void close(int cashierNm){ cashier[cashierNm].close();} int waiting_customers(){return(customer-serving);} int open_cashiers(){ int counter=0; for(int i=0; i<5; i++){ if(cashier[i].is_open()==1) counter++;} return counter; } bool check_to_open(){ if((customer-serving)>(open_cashiers()*K)) return 1; else return 0; } bool check_to_close(){ if((customer-serving)<=((open_cashiers()-1)*K)) return 1; else return 0; } Cashier cashier[5]; Bank(int a, int b, int c){ K=a; M=b; N=c; customer=0; serving=1; GcashierNm=0; open(GcashierNm); } bool enter(){ if(check_to_open()==1) customer++; else if (GcashierNm<5){ open(open_cashiers()); customer++;} else { cout << "Sorry you cannot enter until some customers are served!" << endl; return 0;} } void exit(){ int counter=0; customer++; if(check_to_close()==1){ for(int i=0; i<5; i++) if(cashier[i].is_open()==1){ close(i); } } } void serve(){ int counter=0; for (int i=0; i<5; i++) if(cashier[i].is_open()==0) counter++; open(counter); cout << "Customer No:" << serving << " by cashier No:" << counter << endl; cashier[counter].serve(); cashier[counter].free(); // exit(); } }; int main(int argc, char *argv[]){ int counter = 0; Bank My_bank(2, 2, 2); for(int i=0; i<2; i++){ for(int j=0; j<2; j++){ My_bank.enter(); if(My_bank.enter()==false) counter++; My_bank.serve(); } } for(int i=0; i<counter; i++){ My_bank.serve();} return EXIT_SUCCESS; }
-
benutz den debugger
-
Master User schrieb:
siht einer was was ich nicht sehe.

-
leg ein augenmerk auf dieses
void serve(){ int counter=0; for (int i=0; i<5; i++) if(cashier[i].is_open()==0) counter++; open(counter); cout << "Customer No:" << serving << " by cashier No:" << counter << endl; cashier[counter].serve(); cashier[counter].free(); // exit(); } }hier sieht man schon, dass du mal versucht hast, durch extreme methoden auszusteigen
wieso rekursiv? also wieso der aufruf von serve in serve?denke, da liegt eine harke, auch wenn ich jetzt mal nicht weiter schaue ...
-
danke alles ok jetzt