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 main.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
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 population.cpp:display : Sélectionner tout - Visualiser dans une fenêtre à part
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 population.cpp:next_season : Sélectionner tout - Visualiser dans une fenêtre à part
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.