counter in einer while schleife
-
Hallo zusammen,
sitze grade vor einem kleinen Problem. ich habe eine Abfolge von Funktionen geschrieben, die solange durchläuft, bis ein gewisser wert (fitness[0]) einen Wert übersteigt. Das klappt auch alles wunderbar, außer der geschichte mit dem Counter. Am ende würde ich gerne wissen, wieviele Durchläufe er dafür gebraucht hat. Wenn ich generation++ einfüge, wird die schleife nämlich nur einmal durchlaufen und er gelangt nicht zur Lösung...
int generation = 0;
in i;
...
...
...
while (fitness[0] <= -0.02)
{
FITNESS (individuum, fitness);
IndFit = fitness[0];
KLONEN (individuum, klone);
MUTATION (mutant, klone);
FITNESS (mutant, fitness);
MutFit = fitness[0];
SORTIEREN (IndFit, MutFit, mutant, individuum);
generation++; //ohne klappt es wunderbar???
}
printf("%i", generation); //das würde ich gerne sehen!!!
-
Ich kann keinen Fehler diesbezüglich finden,
für Gleitkommakonstanten besser einen Typspezifizierer anhängenwhile( fitness[0] <= -0.02f )
Mach doch einfach eine Kontrollausgabe IN der Schleife
printf("\ng=%d, f=%f",generation,fitness[0]);
wobei ich davon ausgehe, dass fitness[0] vom Typ float oder double ist.
-
Danke für deine Antwort. Dank ihr habe ich mal nen bisl genauer auf den Code vor der Schleife geschaut. Weil's drin ja nicht falsch war
Das Problem war, dass ich den fitness[0] Wert nicht vorher initialisiert habe... Kaum habe ich [int generation = 0;] initialisiert, war der Wert der fintess nicht mher zu fällig negativ... sonder 0. Naja, dumm von mir.
irgendwie löst sich sowas immer auf... meist liegt's am Programmierer