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ängen

    while( 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 👍


Anmelden zum Antworten