probleme mit der schleife



  • Guten Abend,

    ich habe ein großes Problem und zwar wird meine for-schleife nicht ausgeführt, woran könnte das liegen? Warum zählt er qx nicht hoch? Als Compiler verwende ich Dev c++, er melde keine Syntaxfehler.

    cout << "QX: " << qx;
    int stst;
    stst = qx + 2;     
         for (qx; qx == stst; qx++){     //da jetzt das quatal steht, pruefe
             cout << "-";
                 cout << "_";
                 if(feld[qx][1] == stein){
                                 cout << "\nQ nicht verwendbar";
                                 weiter = false;
                                 n = a;
                 }
         }
    

    Sorry für die Frage, aber ich bin noch Anfänger 😞



  • Eine for-Schleife wird ausgeführt, solange die Bedingung wahr ist. In deinem Fall passiert das nie, qx ist gleich zu Beginn nicht gleich stst.



  • fluffy17 schrieb:

    Guten Abend,

    ich habe ein großes Problem und zwar wird meine for-schleife nicht ausgeführt, woran könnte das liegen? Warum zählt er qx nicht hoch? Als Compiler verwende ich Dev c++, er melde keine Syntaxfehler.

    cout << "QX: " << qx;
    int stst;
    stst = qx + 2;     
         for (qx; qx == stst; qx++){     //da jetzt das quatal steht, pruefe
             cout << "-";
                 cout << "_";
                 if(feld[qx][1] == stein){
                                 cout << "\nQ nicht verwendbar";
                                 weiter = false;
                                 n = a;
                 }
         }
    

    Sorry für die Frage, aber ich bin noch Anfänger 😞

    for(/*initalisierung, du hast nichts also leer*/; qx<=stst;qx++) // mach solange qx++ bis qx stst entspricht
    

    ps. deine namen für die variablen könntest du besser benennen oder hast du es nur für das forum verändert ?

    mfg Stelfer



  • upps, vielen Dank für die Antwort.
    Ich habe nur die Variable stst hinzugefügt, um nur den Programmabschnitt zeigen zu müssen(zweck Übersichtlichkeit), ansonsten heißen meine Variablen so weil (z.B. Qx für Quatal und x für die Koordinate).

    Nur mein Problem war/ist, das wenn ich die Schleifenbedingung so abändere, dann zeigt er das bei der Ausgabe des Programms an:

    Stein : 4-______________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ______________________________________
    Q nicht verwendbar______________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________________________________
    ________________________________________________________
    

    dann stürzt er ab und er hängt in der Schleife 😡



  • Er könnte ja auch ein != in der FOR Anweisung verwenden,sonst muss er immer was anderes machen ^^



  • fluffy17 schrieb:

    Nur mein Problem war/ist, das wenn ich die Schleifenbedingung so abändere, dann zeigt er das bei der Ausgabe des Programms an:

    Und? Ist die Ausgabe so in Ordnung? Du hast ja bisher leider nicht erwähnt, wie die Ausgabe aussehen soll.

    dann stürzt er ab und er hängt in der Schleife 😡

    Entweder stürzt das Programm ab (Crash), oder es hängt (reagiert nicht). Beides geht nicht.

    In dem gezeigten Code ist jedenfalls kein Grund dafür zu erkennen. Das Problem liegt also vermutlich in Code, den du nicht gezeigt hast.



  • Die "-" sollte er nur ausgeben damit ich sehen kann ob er die Schleife korrekt durchführt, wenn es 9 Striche sind ist der Wert auch ok.
    Mit != in der for schleife, hört er garnicht mehr auf zu inkrementieren.

    ich habe es jetzt mit einer if schleife gelösst bekommen 🙂

    if (feld[qx][qy] == stein or feld[qx][qy+1] == stein or feld[qx][qy+2] == stein or feld[qx+1][qy] == stein or feld[qx+1][qy+1] == stein or feld[qx+1][qy+2] == stein or feld[qx+2][qy] == stein or feld[qx+2][qy+1] == stein or feld[qx+2][qy+2] == stein){
    //if ( (feld[qx][qy] or feld[qx][qy+1] or feld[qx][qy+2] or feld[qx+1][qy] or feld[qx+1][qy+1] or feld[qx+1][qy+2] or feld[qx+2][qy] or feld[qx+2][qy+1] or feld[qx+2][qy+2] ) == stein ){
                     cout << "\nQ nicht verwendbar";
                     weiter = false;
                     n = a;
                 }
    
                 else{
                     cout << "\nwurde ausgefuehrt";
                     n = 0;
                 }
    

    ist bestimmt nicht die effizienteste lösung, aber es läuft *freu*

    Entweder stürzt das Programm ab (Crash), oder es hängt (reagiert nicht). Beides geht nicht.

    In dem gezeigten Code ist jedenfalls kein Grund dafür zu erkennen. Das Problem liegt also vermutlich in Code, den du nicht gezeigt hast.

    Sorry, es war so gemeint das das Programm als letztes in der Schleife ist und dann abstürzt, warum weiß ich auch nicht weil qx und qy davor zugewiesen wurden.

    int qx, qy;
             qx = qy = 0;
             //                     da jetzt X u Y feststehen suche Kaestchen
             //Quatal                         Areal finden
             if(a <= 3 && a >= 1 && y <= 3 && y >= 1){
               qx=1; 
               qy=1; 
               cout << "Q 1\n";
             }if(a <= 6 && a >= 4 && y <= 3 && y >= 1){
               qx=4;
               qy=1; 
               cout << "Q 2\n";
             }if(a <= 9 && a >= 7 && y <= 3 && y >= 1){ 
               qx=7; 
               qy=1; 
               cout << "Q 3\n";
             }if(a <= 3 && a >= 1 && y <= 6 && y >= 4){
               qx=1; 
               qy=4; 
               cout << "Q 4\n";
             }if(a <= 6 && a >= 4 && y <= 6 && y >= 4){
               qx=4; 
               qy=4; 
               cout << "Q 5\n";
             }if(a <= 9 && a >= 7 && y <= 6 && y >= 4){
               qx=7; 
               qy=4; 
               cout << "Q 6\n";
             }if(a <= 3 && a >= 1 && y <= 9 && y >= 7){
               qx=1; 
               qy=7; 
               cout << "Q 7\n";
             }if(a <= 6 && a >= 4 && y <= 9 && y >= 7){
               qx=4; 
               qy=7; 
               cout << "Q 8\n";
             }if(a <= 9 && a >= 7 && y <= 9 && y >= 7){
               qx=7; 
               qy=7; 
               cout << "Q 9";
             }
    
             cout << "QX: " << qx << "QY: " << qy;
             cout << "\nStein : " << stein;
    
             if (stein != 11){
                if (feld[qx][qy] == stein or feld[qx][qy+1] == stein or feld[qx][qy+2] == stein or feld[qx+1][qy] == stein or feld[qx+1][qy+1] == stein or feld[qx+1][qy+2] == stein or feld[qx+2][qy] == stein or feld[qx+2][qy+1] == stein or feld[qx+2][qy+2] == stein){
    //if ( (feld[qx][qy] or feld[qx][qy+1] or feld[qx][qy+2] or feld[qx+1][qy] or feld[qx+1][qy+1] or feld[qx+1][qy+2] or feld[qx+2][qy] or feld[qx+2][qy+1] or feld[qx+2][qy+2] ) == stein ){
                     cout << "\nQ nicht verwendbar";
                     weiter = false;
                     n = a;
                 }
    
                 else{
                     cout << "\nwurde ausgefuehrt";
                     n = 0;
                 }
    
             }
    


  • fluffy17 schrieb:

    ich habe es jetzt mit einer if schleife gelösst bekommen 🙂

    Es gibt keine if-Schleifen.

    [cpp]if (feld[qx][qy] == stein or feld[qx][qy+1] == stein or feld[qx][qy+2] == stein or feld[qx+1][qy] == stein or feld[qx+1][qy+1] == stein or feld[qx+1][qy+2] == stein or feld[qx+2][qy] == stein or feld[qx+2][qy+1] == stein or feld[qx+2][qy+2] == stein){

    Hier würden Schleifen die Lesbarkeit IMHO extrem verbessern.


Anmelden zum Antworten