Problème langage C (fonction polynome)

Fermé
321iom - 13 oct. 2010 à 12:42
ydurce Messages postés 78 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 12 décembre 2010 - 14 oct. 2010 à 00:18
Bonjour,
je suis en L2 de mathématique, et j'ai donc j'ai un peu d'informatique tout en restant basique bien sûr =)
Donc j'ai un programme en C a réaliser, voici là ou j'en suis dans mon code :
http://wall.pastebin.org/157340
Tout se passe plutôt bien dans le programme, sauf dans la partie "ajouter un monome", en effet tout marche sauf si je rentre un monôme de degré 0 dans quel cas tout plante =/
Voici l'objectif de cette fonction (ligne 47), il s'agit de parcourir le polynôme pour y ajouter un monôme en partant de la droite du tableau, tout en classant de sorte que p.tab soit un tableau classé par ordre de degrés croissants, et qu'aucun des coeffs ne soit nuls.

Merci beaucoup à ceux qui m'aideront !


A voir également:

2 réponses

321iom Messages postés 1 Date d'inscription mercredi 13 octobre 2010 Statut Membre Dernière intervention 13 octobre 2010
13 oct. 2010 à 18:22
J'ai fais différents tests et tout marche sauve quand je met un 0 en degré, je comprend vraiment pas d'où ça vient =/
0
ydurce Messages postés 78 Date d'inscription samedi 9 octobre 2010 Statut Membre Dernière intervention 12 décembre 2010 18
14 oct. 2010 à 00:18
bonjour,

l'algo de ajoutermonome n'est pas terrible.
la ligne 52 (nbmonome--) est une erreur, tu n'otes pas de monome, tu modifies son coef.
De même, dans ce do..while, le "if((*p).tab[i].degre>m.degre&&(*p).tab[i].degre>0)" a une influence qui ne peut pas être déterminé puisque le tab[i] n'a jamais été initialisé (à partir de nbmonome>0).
de plus tab[i+1]=.. explose la mémoire si le nombre de monome rentré est le maximum puisque le premier tab[i+1]=.. de la boucle (avant le i--) équivaut à un tab[nbmonome+1]=m et, si nbmonome=nMaxMonome, on est en débordement (+2) du tableau de longueur nMaxMonome.

ensuite,dans la suppression des degrés avec coefs 0, à la ligne 72 "(*p).tab[i]=(*p).tab[i+1];" , il faut "(*p).tab[j]=(*p).tab[j+1];"

A mon avis, il faut revoir complétement l'algo de cette fonction. peut-être balayer de 0 à nbmonome plutôt que l'inverse?
0