Schleife Overflow?



  • Hallo,
    und zwar ich habe folgendes Problem(ich denke ich poste zu erst einmal meinen Code und erläutere dann meine Gedanken dazu):

    int car[]= {1,1,1,1,1,1,1,1,1};
    
    int Verleih(){
        char y;
        cout<<"Economy(e)....Normal(n).....Luxus(l)";
        cin >> y;
        if (y =='e'){
            for(int i=0;i<=2;i=i+1){
                if(car[i]==1){
                    cout<<"Stellplatz: "<<i;
                    car[i]=0;
                }
                else cout<<"Kein Auto frei";
            }
        }
        else if(y =='n'){
            for(int i=3;i<=5;i=i+1){
                if(car[i]==1){
                    cout<<"Stellplatz: "<<i;
                    car[i]=0;
                }
                else cout<<"Kein Auto frei";
            }
    
        }
        else if(y=='l'){
            for(int i=4;i<=9;i=i+1){
                if(car[i]==1){
                    cout<<"Stellplatz: "<<i;
                    car[i]=0;
                }
                else cout<<"Kein Auto frei";
            }
        }
    }
    

    Das ganze ist eine Funktion in meinem Programm, welche Abfragen soll welche Autoklasse man ausleihen will und ausgibt auf welchem Stellplatz das Auto ist.

    So mein Gedankengang:
    Ich habe die Globale Variable "car".
    Zuerst fragt er den Benutzer erst einmal welche Klasse er ausleihen will, dies wird dann in nem char gespeichert. Je nachdem welche Eingabe der Benutzer getätigt hat, geht er in die entsprechende if Bedingung und wiederum in die for Schleife. Die erste Klasse hat die ersten drei Felder des "car" Arrays, die zweite Klasse die mittleren drei Felder und die letze Klasse hat die letzen drei Arrays.
    In der for Schleife habe ich dann das "i" so gewählt, dass es innerhalb der zugeteilten Felder bleibt. Dann wird überprüft ob ein Auto in dem Feld ist(1 wenn eines drinnen ist) und gibt dann das Feld des Arrays aus, wo das Auto drinnen steht.
    Xcode macht mir jedoch einen Breakpoint und meint, dass die Funktion eine Endloschleife ist.
    Ich komm einfach nicht drauf, wo das Problem liegt.
    Könntet ihr mir Tipps geben, wie ich den Fehler finden kann?
    Danke im Voraus.



  • Deine Schleife in Zeile 28 geht von 4 bis 9 einschließlich. Da in deinem Array nur 9 Elemente vorhanden sind, läufst du eins zu weit.

    Fehlermeldungen des Compilers u.ä. solltest du exakt so wiedergeben, wie sie gemeldet wurden und nicht versuchen, sie zu umschreiben.



  • Okay, habe den Fehler ausgebessert.
    Beim Aufruf der Schleife erzeugt Xcode mir einen Breakpoint(Thread 1: Breakpoint 1.1)(Zeile 14).

    int main(int argc, const char * argv[])
    {
    
        char x;
    
        cout <<"Verleih(v)....Rueckgabe(r).....Ausmustern(a): ";
        cin >> x;
    
        cout <<endl;
        Verleih();
    
        if (x =='v'){
            Verleih();
        }
        else if(x =='r'){
            Rueck();
        }
        else cout <<"Falsche eingabe";
    
        return 0;
    }
    

    Die Ausgabe schaut dann wie folgt aus:
    Verleih(v)....Rueckgabe(r).....Ausmustern(a): v

    Economy(e)....Normal(n).....Luxus(l)e
    (lldb)



  • marce132 schrieb:

    Beim Aufruf der Schleife erzeugt Xcode mir einen Breakpoint(Thread 1: Breakpoint 1.1)(Zeile 14).

    Ich sehe hier nichts, wo XCode meint. Auch in der Ausgabe von lldb sehe ich nichts. Hast du dort selber einen Breakpoint gesetzt?

    marce132 schrieb:

    Xcode macht mir jedoch einen Breakpoint und meint, dass die Funktion eine



  • Nein, ich selbst habe dort keinen Breakpoint gesetzt.

    manni66 schrieb:

    Ich sehe hier nichts, wo XCode meint. Auch in der Ausgabe von lldb sehe ich nichts.

    Ich verstehe nicht, was du damit meinst.

    Ich habe bevor ich den Thread erstellt habe gegoogelt was lldb bedeutet und so wie ich das verstanden habe herrscht ein Overflow in der Funktion, was ich mit meinem Gedankengang nicht nachvollziehen kann.

    Edit: Programm funktioniert jetzt. Jedoch habe ich keine Ahnung wieso es jetzt auf einmal geht. Danke für deine Hilfe manni66



  • marce132 schrieb:

    Ich habe bevor ich den Thread erstellt habe gegoogelt was lldb bedeutet und so wie ich das verstanden habe herrscht ein Overflow in der Funktion, was ich mit meinem Gedankengang nicht nachvollziehen kann.

    lldb ist der Debugger. Wenn du links in den Rand einer geöffneten Datei klickst erscheint dort ein blauer Pömpel, der für einen Breakpoint steht. Führst du das Programm anschließend aus, hält es dort an.

    Ein Debugger ist ein sehr sinnvolles Werkzeug, wenn man Fehler sucht.


Anmelden zum Antworten