For-Schleife überspringt Zeile
-
Hallo liebe Programmier!
Ich hätte nochmal eine Frage bzgl. meines Programms: Die For-Schleife in Zeile 23 wird nicht ausgeführt. Es kommt keine Fehlermeldung, aber beim Output habe ich gesehen, dass diese nicht vorhanden ist. Oder mache ich da einen Fehler? Wenn ich die nachfolgende Schleife auskommentiere, macht sie, was sie machen soll, aber sobald diese wieder ausgeführt wird, wird kein Wert eingetragen. Woran kann das liegen?#include <iostream> #include <string> #include <fstream> #include <vector> #include <sstream> using namespace std; void CompletionM2 ( vector <int> &proctimes, vector <int> &Cm1, int nbrjobs ) { int summeneu, summe=0; int Max; for (int jobs=0; jobs<20; jobs++) { summeneu = summe + proctimes [jobs]; summe = summeneu; Cm1.push_back(summeneu); cout << Cm1 [jobs]<<" "; } /*for (int i =0; i< nbmach; i++)*/ for (int i = 1; i<5; i++) { Cm1.push_back(Cm1[i-1]+proctimes[(i)+nbrjobs]); for (int jobs=1+(i*nbrjobs); jobs < (i+1)*nbrjobs; jobs++) { summeneu = max (Cm1[jobs-nbrjobs], Cm1 [jobs-1]) + proctimes [jobs]; Max = summeneu; Cm1.push_back(summeneu); cout << Cm1 [jobs] << " "; } } cout << "Der makespan ist: " << Cm1 [99] << endl; }
-
Wie wäre es, wenn du dir sämtliche Zwischenwerte ausgeben lässt. In beiden Schleifen. Und dann mal guckst, wo sie aufhört zu laufen, und welche Werte da grade in den Variablen stehen. Dann guckst du natürlich warum die Werte falsch sind.
Außerdem rückst du die zweite Schleife am besten mal vernünftig ein.
EDIT:
Oder mache ich da einen Fehler?
Ja machst du. Eine Programm macht immer genau das was DU schreibst - sofern es möglich ist. Wenn ein Programm nicht macht was du möchtest, dann liegt es nicht daran, dass es nicht macht was es soll, sondern daran das es macht was du falsch gemacht hast!
Mit der Erkenntnis wird viel leicher beim programmieren

-
Nutze den Debugger! Unheimlich wichtiges Werkzeug! Setze einen Haltepunkt und schaue dir Schritt für Schritt an, wie das Programm abläuft.