Boucle infinie malgré incrémentation
Bonjour,
Je suis confrontée à un problème assez étrange : j'ai une boucle for, à l'intérieur, se trouve un simple affichage, et pourtant... Elle ne s'incrémente jamais. A priori, c'est pas un problème d'options de compilation (j'ai essayé la batterie d'options au début, puis plus rien et le résultat est le même.
Une autre chose : la méthode next_season() semble effacer la valeur de v. Mais je ne comprends pas pourquoi. Et j'ai googlé, sans rien trouver.
Avez-vous une idée de ce qui se passe ? Je vous joins les bouts de code incriminés.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| int main(int, char **)
{
Population P;
P.display(-1);
for(int v = 1 ; v < 10 ; v++)
{
P.display(v);
P.next_season();
std::cout << "v = " << v << std::endl;
}
return 0;
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| void Population::display(int v)
{
if(v == -1)
{
std::cout << "Total number of rabbits:\t" << total << std::endl;
std::cout << "Males:\t" << partition[3] + partition[4] + partition[5] << "\tFemales:\t" << partition[0] + partition[1] + partition[2] << std::endl;
}
else
{
for(int i = 0 ; i < v ; i++)
{
std::cout << "Age " << i << ": " << partition[i+6] << std::endl;
}
}
} |
Code:
1 2 3 4 5 6 7 8 9 10
| void Population::next_season()
{
/* First: aging */
/* After month 185, all rabbits are dead */
for(int k = 185 ; k > 5 ; k--)
{
partition[k+1] = partition[k];
}
partition[6] = 0;
} |
P.S. Patapé, je suis pas très expérimentée.