Fonction push_back(val) ne fonctionne pas correctement

Re: Fonction push_back(val) ne fonctionne pas correctement

by Daphne Gwendolyne van-Hollebeke -
Number of replies: 0

Bonjour et merci de votre réponse, 

Malheureusement, ma question ne devait pas être assez claire. 
Mon bout de code qui pose problème est très simple et n'effectue que la tâche suivante : 

  1. Création d'un vector appelé tab
  2. Calculer une valeur x 
  3. Afficher cette valeur x 
  4. Si x est inférieur à 0.3, faire tab.push_back(0.3)
  5. Si x est compris entre 0.3 et 0.7, faire tab.push_back(0.7)
  6. Si x est supérieur à 0.7, faire tab.push_back(1)
  7. Afficher le tableau

Les messages de contrôles sont les suivants : ils m'indiquent que x a été calculé et qu'il a la bonne valeur. Aussi, un message indique dans quel "if" on se trouve (p.e : "x est inférieur à 0.3, on effectue le cas n*1"). Après avoir fait un push_back, je demande d'afficher le tableau ; celui-ci est bien remplie d'une valeur. Cependant, lorsque x>0.7 ou que x<0.3 elle est toujours équivalente à 0.7 lorsque le code est tel que ci-dessus et elle est égale à des nombres qui semblent "aléatoires" lorsque je change la donnée "0.3" et "1" par d'autres valeurs.

Le code est relativement simple et ne fait pas appel à un tableau qui pourrait lui-même avoir un soucis, ni au nbC, nbL... Je sais aussi pour sûr que mes blocs de if et ma boucle (car je répète cette opération autant de fois que je calcule de x) sont bien rédigées puisque les messages de contrôlent m'assurent le bon déroulement du code tout au long de l'opération. 
Le soucis survient exactement à la consigne push_back(val) où ma variable val ne semble pas être prise en compte par la fonction push_back. Aussi, il est certain que le code ne rentre pas dans une boucle if sans que cela ne soit voulu (messages de contrôles pour source). 


Lorsque je garde les seuils suivants : 0.3, 0.7 et 1, le tableau ne se remplit que de 0.7. Jusque là, je supposais que mon "if" avec un soucis puisqu'il s’exécute de la façon suivante :

  1. Si x>0.7 ou que x<0.3 alors on entre dans ce "if" dans lequel se trouve une forme : if x>0.7 alors [...] else alors [...]
  2. Sinon (c'est-à-dire si x n'est pas supérieur à 0.7 et n'est pas inférieur à 0.3), on fait [...] 

Cependant, lorsque je change 0.3 et 1 par de nouvelles valeurs, le problème change totalement ! Le tableau ne se remplit plus uniquement de 0.7 mais toujours pas correctement pour autant. Selon les nouvelles valeurs m et n rentrées à la place de 0.3 et de 1, j'obtient soit : 

  1. un tableau contenant des variables aléatoires aux indices où on aurait dû obtenir un m ou n 
  2. soit des m et n pas à la bonne place. 
Il semble aussi que cela s'effectue sans régularité, j'entends par là que 1. ou 2. se produisent pour des variables m et n parfois différentes ou parfois très proches. Par exemple, un m = 14 ou un m = 15 me produira soit l'erreur 1. (pour m=14) soit l'erreur 2. (m=15).

Ayant le code sous les yeux, il est bien plus simple de suggérer des erreurs potentiels, mais je peine à la trouver. Le code est simpliste, les boucles sont bien respectées à la lecture du programme, le calcul du x est bon, la valeur à mettre dans le tableau est annoncée dans le terminale avec d'être push_back(val) et celle-ci est toujours correcte... 

Je ne sais absolument pas d'où peut venir le soucis à ce stade.

Merci.