wieso "...hat ein Problem festgestellt und muss beendet werden"?



  • #include <iostream>
    #include <cstring>
    #include <stdlib.h>
    using namespace std;
    
    struct schlange{
           int kundennummer;
           schlange *next;
    };
    schlange *first=NULL;
    
    int maxlenght=0;
    int anzkunden=0;
    int anzleer=0;
    int laenge=0;
    int kdnummer=0;
    
    void neuerkunde(int *maxlenghtptr){
           schlange *kunde=new schlange;
           kdnummer++;
           kunde->kundennummer=kdnummer;
           kunde->next=NULL;
           if(first==NULL){
              first=kunde;
           }
           else{
              schlange *tmp=first;
              while(tmp->next!=NULL){
                 tmp=tmp->next;
              }
              tmp->next=kunde;
              }
           laenge++;
           if(laenge > *maxlenghtptr){
              *maxlenghtptr=laenge;
           }
         }
    
    void kundeweg(int *anzkundenptr, int *anzleerptr){
           schlange *tmp=first;
           first=first->next; //hier ist der fehler, aber was??
           delete tmp;
           (*anzkundenptr)++;
           if(*anzkundenptr==0){
              (*anzleerptr)++;
           }
         }
    
    int main(){
    
        srand(1000);
        for(int i=0; i<200; i++){
        if(rand()%2){
           neuerkunde(&maxlenght);
        }
    
        if(rand()%2){
           kundeweg(&anzkunden,&anzleer);
        }
    
        }
    
        cout << "Anzahl Kunden bedient: " << anzkunden << endl;
        cout << "Die Schlange war " << anzleer << " mal leer und max. " << maxlenght << " Elemente lang." << endl;   
    
    system("PAUSE");
    return 0;
    }
    

    das Programm stürzt so ab, und wenn ich zeile 41 auskommentiere läuft es... dort muss also etwas unerlaubtes geschehen, aber was?? kann mir jemand helfen was ich falsch mach?



  • first ist null

    du versuchst manchmal mehr elemente zu loeschen als in der liste drinnen sind... das kann ja nicht gutgehen...



  • danke dir, jetzt funktionierts 🙂



  • Bei solchen Fehlern kann der Debugger eine grosse Hilfe sein... 😉


Anmelden zum Antworten