pk ça marche pas tout le temps ?

pk ça marche pas tout le temps ? - C++ - Programmation

Marsh Posté le 02-06-2003 à 14:47:35    

Bonjour ,  
j'ai un pb dans un petit programme .
 
j'ai une fonction , appelons la fonction A ;
et une deuxieme appelons la B ;
 
quand je lance A dans mon main avec les parametres adequates (deux demi-droites ) la fonction marche tres bien .
 
Seulement lorsque je lance A dans B , (a partir de B ) , la fonction A ne marche pas tout le temps !! J'affiche les paramettres pour etre sur que tout va bien , par ex , on va dire que A , compare deux valeurs ,  elle affiches donc ces deux valeurs a l'ecran , par ex 50 et 50 et me renvoit qu'elles ne sont pas egalles ... alors que 50 et 50 c la meme chose .. (en float ) ;
 
Et ce qui est encore plus etrange c'est que c'est seulement parfois que la fonction A ne marche pas lorsqueje la lance depuis B. mais avec un exemple donnée A lancé de B plantera toujours alors que lancé du main tout va bien ..
 
Et je tiens a preciser que je suis sur des valeurs que je passe a A ....
 
Donc , je suis dans la ..... ! si qqn a une idée du pourquoi ....
 
aussi ce qui est etrange , c'est que lorsque  ça fait ce que je viens de decrire , en changeant (par exemple) l'ordre des parametres,  la fonction marche (alors que l'ordre n'a absolument rien a voir puisqu'il sagit de regarder si c deux parametres sont egaux ... et les deux parametres sont de meme type )) ..  
 
help , je comprends plus rien ..

Reply

Marsh Posté le 02-06-2003 à 14:47:35   

Reply

Marsh Posté le 02-06-2003 à 14:49:01    

aloo a écrit :

Bonjour ,  
j'ai un pb dans un petit programme .
 
j'ai une fonction , appelons la fonction A ;
et une deuxieme appelons la B ;
 
quand je lance A dans mon main avec les parametres adequates (deux demi-droites ) la fonction marche tres bien .
 
Seulement lorsque je lance A dans B , (a partir de B ) , la fonction A ne marche pas tout le temps !! J'affiche les paramettres pour etre sur que tout va bien , par ex , on va dire que A , compare deux valeurs ,  elle affiches donc ces deux valeurs a l'ecran , par ex 50 et 50 et me renvoit qu'elles ne sont pas egalles ... alors que 50 et 50 c la meme chose .. (en float ) ;
 
Et ce qui est encore plus etrange c'est que c'est seulement parfois que la fonction A ne marche pas lorsqueje la lance depuis B. mais avec un exemple donnée A lancé de B plantera toujours alors que lancé du main tout va bien ..
 
Et je tiens a preciser que je suis sur des valeurs que je passe a A ....
 
Donc , je suis dans la ..... ! si qqn a une idée du pourquoi ....
 
aussi ce qui est etrange , c'est que lorsque  ça fait ce que je viens de decrire , en changeant (par exemple) l'ordre des parametres,  la fonction marche (alors que l'ordre n'a absolument rien a voir puisqu'il sagit de regarder si c deux parametres sont egaux ... et les deux parametres sont de meme type )) ..  
 
help , je comprends plus rien ..


Donne ton code...

Reply

Marsh Posté le 02-06-2003 à 15:30:16    

je serais bien tanté mais ça fait environ 1500 lignes , et vu que c la premiere fois que j'ecris qqch de cette taille , je pense pas que ça soit super facil a lire , enfin si tu le veux y a pas de pb ....

Reply

Marsh Posté le 02-06-2003 à 15:32:11    

aloo a écrit :

je serais bien tanté mais ça fait environ 1500 lignes , et vu que c la premiere fois que j'ecris qqch de cette taille , je pense pas que ça soit super facil a lire , enfin si tu le veux y a pas de pb ....


 
donne juste les fct A et B d'en haut...
(sauf si les 1500 lignes sont reparties dans ces 2 fct, dans ce cas, evite tout court)

Reply

Marsh Posté le 02-06-2003 à 15:32:46    

aloo a écrit :

je serais bien tanté mais ça fait environ 1500 lignes , et vu que c la premiere fois que j'ecris qqch de cette taille , je pense pas que ça soit super facil a lire , enfin si tu le veux y a pas de pb ....


Donne que le code utile...en gros la fonction qui ne fonctionne pas, et le bout de code qui l'appelle!

Reply

Marsh Posté le 02-06-2003 à 16:10:30    

la fonction qui appelle la fonction marhce bien quand on la prend separemment , de meme pour celle qui appelle celle qui l'appelle ...  
apres  ça fait 1500 lignes ....

Reply

Marsh Posté le 02-06-2003 à 16:15:04    

aloo a écrit :

la fonction qui appelle la fonction marhce bien quand on la prend separemment , de meme pour celle qui appelle celle qui l'appelle ...  
apres  ça fait 1500 lignes ....


Tu dois bien être capable de nous filer un bout de code de taille raisonnable et qui est concerne vraiment ton bug, non?
On va pas sortir notre boule de cristal pour t'aider hein... :fou:

Reply

Marsh Posté le 02-06-2003 à 16:17:14    

utilise purify pour voir ce qu'il en dit, niveau gestion mémoire tu dois merdouiller qque part

Reply

Marsh Posté le 02-06-2003 à 16:30:22    

fais des affichages un peu partout et tu verras tres vite ou ca deconne

Reply

Marsh Posté le 02-06-2003 à 17:32:11    

comment on utilise purify ?????
 

Reply

Marsh Posté le 02-06-2003 à 17:32:11   

Reply

Marsh Posté le 02-06-2003 à 18:09:18    

aloo a écrit :

comment on utilise purify ?????


C'est marqué dans la doc !

Reply

Marsh Posté le 02-06-2003 à 20:19:50    

C'est peut etre con mais vérifie un peu tes variables locales dans la fonction B. Il y en a peut etre une qui n'est pas initialisée correctement, d'ou cette différence de comportement.

Reply

Marsh Posté le 02-06-2003 à 20:58:45    

Merci Ace17 , mais c deja fait :) la fonction B marche tres bien prise hors contexte .. de meme que la fonction qui passe les parametre a la fonction B
....

Reply

Marsh Posté le 04-06-2003 à 19:51:15    

Le fait que B marche bien hors contexte ne veux rien dire quand a l'initialisation des variables. Peut etre que une case qui est a zero hors contexte passe a une valeur bizzare ( résidu de calcul ) juste avant que A appelle B.
 
Et si c'est pas ca, alors ca vient surement des parametres.
 
Qu'est-ce qu'elle font tes deux fonctions, si c'est pas indiscret. Les parametres que tu passes a B, c'est des floats? Tu les obtiens a partir d'un calcul compliqué? Si oui, c'est normal qu'elles ne soient pas égales, tu dois les comparer en laissant une marge de tolérance.


Message édité par Ace17 le 04-06-2003 à 19:55:28
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed