Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
929 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Gros soucis ! element modifié tout seul alors que je ne veux pas!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gros soucis ! element modifié tout seul alors que je ne veux pas!

n°1995324
rahela
Posté le 22-05-2010 à 16:41:56  profilanswer
 

Bonjour !  
 
Alors j'ai un gros problème qui m'énerve sérieusement depuis plus d'une semaine!
Je ne sais vraiment pas comment l'expliquer... mais les jours passent et je dois bientôt rendre mon projet donc j'en ai marre de tourner en rond et de rester impuissante sans avancer.
Je vais essayer d'expliquer du mieux que je peux...(en évitant de donner du code entier car je suis en école et je ne suis pas seule a travailler sur ce projet)
 
J'ai créé des structures Polynome comme suit :
 

Code :
  1. typedef struct{
  2. int deg;
  3. double *coefficients;
  4. }polynome;


 
par exemple pour le polynome 5X^3 + 2X^2 + 4X +1 on a  

Code :
  1. int deg=3;
  2. double coefficients [4] = {1,4,2,5}


 
A un moment donné, dans une méthode je crée un pointeur sur polynome :  

Code :
  1. polynome *somme = new_polynome(3,coefficients);

 
J'affiche le polynome (avec la methode affiche_polynome(polynome *p)) j'obtiens:

Code :
  1. [5X^3 + 2X^2 + 4X +1]


Tout va bien.
Ensuite j'appelle une methode A qui n'utilise SURTOUT PAS le polynome somme que je viens de créer au dessus.
Je reaffiche somme et j'obtiens :

Code :
  1. [0X^3 + 2X^2 + 4X +1]


 
!!!!! je ne comprend rien !!!! dans la methode A je ne touche pas a somme, alors pourquoi le 5 a disparu?
 
Avez vous une idée de quoi ca peut être dû? comme je manipule pas mal de pointeurs est ce qu'à un moment donné j'accède à l'adresse où été stocké le 5 même si en aucune façon j'ai modifié les éléments de somme?
Est ce que je n'ai pas libéré de mémoire comme il fallait?
 
Je suis complétement perdue surtout que je ne maitrise pas vraiment bien ce qu'il se passe dans la mémoire...
Je vous remercie d'avance pour votre aide ...
 
 

mood
Publicité
Posté le 22-05-2010 à 16:41:56  profilanswer
 

n°1995325
gilou
Modérateur
Modzilla
Posté le 22-05-2010 à 16:46:35  profilanswer
 

:hello: Faut montrer le code, car il n'est pas possible d'en dire plus.
Comment tu alloues la mémoire pour coefficients?
A+,


Message édité par gilou le 22-05-2010 à 16:46:54

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1995327
rahela
Posté le 22-05-2010 à 16:50:15  profilanswer
 

ok je vais le faire


Message édité par rahela le 22-05-2010 à 16:51:16
n°1995328
GrosBocdel
Posté le 22-05-2010 à 16:51:21  profilanswer
 

T'aurais pas confondu degré (n) et nombre de coefficients (n+1) quelque part comme laisse supposer gilou?

n°1995330
rahela
Posté le 22-05-2010 à 17:08:51  profilanswer
 

Code :
  1. void methode(double *donnees, int size){
  2. //creation d'un polynome
  3. double coef [1] = {0};
  4. polynome *p = new_polynome(0,coef);
  5. polynome *tmp;
  6. int i;
  7. for(i=0; i<size; i+=2){
  8.  affiche_polynome(p);
  9.  tmp = autre_methode(donnees[i]); // autre_methode renvoie un pointeur sur polynome, elle fonctionne bien
  10.  affiche_polynome(p);
  11. }
  12. return 1;
  13. }


 
quand on arrive a la seconde boucle, le second affichage est différent du premier, alors que vous voyez bien que je n'y touche pas

n°1995331
rahela
Posté le 22-05-2010 à 17:09:59  profilanswer
 

Et non je ne pense pas avoir confondu, j'ai toujours fait gaffe que le nombre de coefficients est deg+1

n°1995335
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 22-05-2010 à 17:25:18  profilanswer
 

et si tu commentes tmp = autre... ?


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°1995337
rahela
Posté le 22-05-2010 à 17:35:21  profilanswer
 

si je commente evidemment il n'y a plus l'erreur....

n°1995339
rahela
Posté le 22-05-2010 à 17:42:32  profilanswer
 

jai modifié autre_methode en lui faisant prendre le polynome p en argument.
J'ai pu donc afficher p jusqu'à l'erreur, et c'est lorsque je déclare un polynome temporaire (pour diverses opérations) que le 5 a disparu...
 

Code :
  1. //affichage ok
  2. double coef [2]={1,0};
  3. polynome *tmp = new_polynome(0,coef);
  4. //affichage pas ok du tout


 
voila, cet vraiment juste quand je crée un polynome temporaire qui ne me sert juste pour des opérations internes (comme la successions de produits de polynomes)

n°1995345
GrosBocdel
Posté le 22-05-2010 à 18:06:15  profilanswer
 

Ton new_polynome(...) est écrit comment?

mood
Publicité
Posté le 22-05-2010 à 18:06:15  profilanswer
 

n°1995353
gilou
Modérateur
Modzilla
Posté le 22-05-2010 à 18:31:57  profilanswer
 

Ben oui, c'est ca qu'on veut savoir: comment tu alloues la mémoire.
Bref, c'est ou que tu fais le malloc? qu'on voie la taille allouée par rapport au degré du polynôme.
(Pas pu répondre plus tôt, mon frère a débarqué avec mes 3 nièces)
A+,


Message édité par gilou le 22-05-2010 à 18:32:28

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1995360
rahela
Posté le 22-05-2010 à 18:51:14  profilanswer
 

Je suis désolée c'est vraiment compliqué d'expliquer ce que je suis en train de faire déjà que j'arrive même pas à me l'expliquer... si je vous envoie le code entier ca va être dur de me comprendre...
 
J'ai trouvé un algo PLUS SIMPLE qui m'évite de manipuler tous ces polynômes merdiques...(2semaines quand meme) n'empêche que je ne vois toujours pas pourquoi j'ai eu cette erreur mais avec le peu de temps qu'il me reste il vaut mieux que je passe à la suite...
 
Désolée d'avoir pris de votre temps !  
Je vous remercie beaucoup, c'est cool d'avoir un forum aussi actif comme celui ci, j'ai bien peur d'y revenir souvent les prochains jours :)
 
Bonne soirée à vous et merci!  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Gros soucis ! element modifié tout seul alors que je ne veux pas!

 

Sujets relatifs
Supprimer un élément XML en ayant son IDCron qui s'arrête tout seul au bout de deux heures précise
soucis de POST-GET UTF8 etc etc[Résolu] Bug: le texte est gros aléatoirement...
Optimiser mon My.cnf pour un gros forumUpload de gros fichier ?
soucis MYSQLImpossible d'obtenir ce que je veux sur mon header.php (wordpress)
Positionnement d'élements, scroll et élements défilants[bash] wait pour n'attendre qu'un seul fils
Plus de sujets relatifs à : Gros soucis ! element modifié tout seul alors que je ne veux pas!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR