Wo ist der Fehler hier ??



  • // Optimierung Landereihenfolge
    
    #include<iostream.h>
    #include<math.h>
    #include<ctype.h>
    #include<conio.h>
    #include<iomanip.h>
    #include<stdlib.h>
    
    int main(void)
    {
      const max = 10;
      int flieger [max];
      int Bestfeld [max];
      int n, m, k;
      int j1, j2, j3, j4, j5, j6, j7, j8, j9, j10;
      int i, Summe, Bestzeit;
    
      cout << "Es wird jetzt eine Reihenfolge von Maschinen generiert und berechnet:  " << endl;
      cout << endl;
      cout << "1 = Light" << endl;
      cout << "2 = Medium" << endl;
      cout << "3 = Heavy" << endl;
      cout << endl;
      cout << endl;
      n=0;
      m=0;
      k=0;
    
        for (j1=1; j1 <=3; j1++)
            {
            flieger [1] = j1;
                if (j1=1) n++;
                if (j1=2) m++;
                if (j1=3) k++;
                for (j2=1; j2 <=3; j2++)
                {
                flieger [2] = j2;
                    if (j2=1) n++;
                    if (j2=2) m++;
                    if (j3=3) k++;
                    for (j3=1; j3 <=3; j3++)
                    {
                    flieger [3] = j3;
                        if (j3=1) n++;
                        if (j3=2) m++;
                        if (j3=3) k++;
                        for (j4=1; j4 <=3; j4++)
                        {
                        flieger [4] = j4;
                            if (j4=1) n++;
                            if (j4=2) m++;
                            if (j4=3) k++;
                            for (j5=1; j5 <=3; j5++)
                            {
                            flieger [5] = j5;
                                if (j5=1) n++;
                                if (j5=2) m++;
                                if (j5=3) k++;
                                for (j6=1; j6 <=3; j6++)
                                {
                                flieger [6] = j6;
                                    if (j6=1) n++;
                                    if (j6=2) m++;
                                    if (j6=3) k++;
                                    for (j7=1; j7 <=3; j7++)
                                    {
                                    flieger [7] = j7;
                                        if (j7=1) n++;
                                        if (j7=2) m++;
                                        if (j7=3) k++;
                                        for (j8=1; j8 <=3; j8++)
                                        {
                                        flieger [8] = j8;
                                            if (j8=1) n++;
                                            if (j8=2) m++;
                                            if (j8=3) k++;
                                            for (j9=1; j9 <=3; j9++)
                                            {
                                            flieger [9] = j9;
                                                if (j9=1) n++;
                                                if (j9=2) m++;
                                                if (j9=3) k++;
                                                for (j10=1; j10 <=3; j10++)
                                                {
                                                flieger [10] = j10;
                                                     if (j10=1) n++;
                                                     if (j10=2) m++;
                                                     if (j10=3) k++;
                                                if (((n==3) && (m==4)) && (k==3))
                                                {                                            {
                                                cout << "Test" << endl;
                                                Summe = 0;
    
                                                for (i=0; i <=9; i++)
                                                    {
                                                    if (flieger [i] == 1 && flieger [i+1] == 2)
                                                    {
                                                        Summe = Summe + 82;
                                                    }
                                                    else if (flieger [i] == 2 && flieger [i+1] == 1)
                                                    {
                                                         Summe = Summe + 146;
                                                    }
                                                    else if (flieger [i] == 3 && flieger [i+1] == 1)
                                                    {
                                                          Summe = Summe + 167;
                                                    }
                                                     else if (flieger [i] == 1 && flieger [i+1] == 3)
                                                      {
                                                          Summe = Summe + 78;
                                                      }
                                                      else if (flieger [i] == 3 && flieger [i+1] == 2)
                                                     {
                                                        Summe = Summe + 138;
                                                      }
                                                     else if (flieger [i] == 2 && flieger [i+1] == 3)
                                                   {
                                                           Summe = Summe + 78;
                                                    }
                                                      else if (flieger [i] == 1 && flieger [i+1] == 1)
                                                    {
                                                            Summe = Summe + 82;
                                                       }
                                                        else if (flieger [i] == 2 && flieger [i+1] == 2)
                                                    {
                                                           Summe = Summe + 82;
                                                     }
                                                     else if (flieger [i] == 3 && flieger [i+1] == 3)
                                                    {
                                                             Summe = Summe + 167;
                                                     }
                                                    }
                                                    if (Summe < Bestzeit)
                                                    {
                                                    Bestzeit=Summe;
                                                    Bestfeld [max] =flieger [max];
                                                    cout << Bestzeit << endl;
                                                    }
    
                       }
                                             }
                                         }
                                    }
                                }
                             }
                        }
                     }
                   }
                 }
    
            }
      cout << "Reihenfolge: " << endl;
      cout << n << endl;
      cout << m << endl;
      cout << k << endl;
    
        for (i=1; i <max+1; i++)
          {
           cout << Bestfeld [i];
            }
    
        cout << endl;
        cout << endl;
       cout << "Die Summe ist:  " << Bestzeit << "sec" <<endl;
       cout << n;
        cout << "Die Summe ist:  " << Bestzeit/60 << "min" <<endl;
    
    getch();
    cout << "Test" << endl;
    }
    }
    

    Es muß wohl an den Klammern liegen, oder an dem if-Ausdruck in der Mitte...

    Danke für eure Hilfe!



  • --Neo-- schrieb:

    Es muß wohl an den Klammern liegen, oder an dem if-Ausdruck in der Mitte...

    Und was bitte ist "Es"? Einfach nur den Code hinzuklatschen, ohne jede Fehlerbeschreibung, ist eine Frechheit.

    Mir fällt nur auf, dass Bestzeit nicht initialisiert wird.



  • *lach*

    klammern zählen solltest du erstmal alleine.
    eine ordentliche einrückung wirkt da wunder..

    im übrigen sehe ich soviel "ähnlichen" code, dass da sicher was zu optimieren ist.

    so long



  • Hi!

    😮 Ich würde sagen der Quellcode schreit nach einer Generalüberholung!!! :-|

    grüße



  • Das einzige, was mir spontan einfällt, ist, dass die letzte if bedingung vor dem grossen "for" zwei öffnende klammern enthält.
    Bei solchen Problem hilft nur noch: Stift und Papier nehmen und Quellcode abschreiben. Dann jeder öffnenden Klammer eine andere Farbe geben und ruckzuck hat man das Problem gefunden.
    Kürzer: Refactoring!!!!!!!!!!!!!1111111111111111111111111einhundertelf

    edit: noch nen fehler: arrays fangen in c++ bei 0 an. Deine 2 Arrays besitzen 10 Elemente und zwar von 0-9. Du versuchst aber auf das 10. Element zuzugreifen, was im schlimmsten Fall zu einer Zugriffsverletzung führt.


Anmelden zum Antworten