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


Anmelden zum Antworten