Polynome et liste chainées

kloc -  
 kloc -
Bonjour,

je dois écrire une fonction qui stocke un polynome dans une liste chainée.Chaque maillon representera un monome(coefficient,exposant).Dans mon code j'essaye de recuperer les exposants et les coefficients dans des tableaux,je parcours ces tableaux et je fais des ajouts au niveau de la liste chainée.
Mais quand je veux afficher la liste chainée,rien ne s'affiche!
voici mon code:

#include <stdio.h>
#include <stdlib.h>



struct maill
{
float coeff;
int expo;
struct maill *suiv;

};
typedef struct maill maillon;
typedef maillon *PTR;


PTR nouveau_maillon(int expo,float coeff)
{
PTR nouv=(PTR)malloc(sizeof(maillon));
nouv->coeff=coeff;
nouv->expo=expo;
nouv->suiv=NULL;
return nouv;
}
PTR ajout_maillon(float coeff,int expo,PTR l)
{
PTR c=l;
PTR nouv=(PTR)nouveau_maillon(coeff,expo);
if(l==NULL)
return nouv ;
else
{
while(c->suiv!=NULL)
{
c=c->suiv;
}
c->suiv=nouv;
return l;
}
}






void stockage(char pol[100])
{
PTR liste=NULL;
PTR c=liste;
int expo[100];
float coeff[100];
int t=0;
int a=0,i;int j=0;
char d;
char nb[100];



// Recupération des exposants
i=0;

while (i<strlen(pol))
{

if(pol[i]=='^')
{

d=pol[i+1];
d=d-'0';

expo[t]=d;



t++;

}
else
{

if(pol[i]=='X' && pol[i+1]!='^')
{
expo[t]=1;


t++;
}


else
{

if(pol[i+1]=='\0'){

expo[t]=0;

t++;

}
}
}
i++;


}
i=0;

while(i<strlen(pol))
{

if(pol[i]=='+' && pol[i+1]=='X')
{
coeff[a]=1;


a++;


}
else
{
if(pol[i]=='-' && pol[i+1]=='X')
{
coeff[a]=-1;


a++;

}
else{
if( (pol[i]!='*' )&& (pol[i]!='X' )&& (pol[i+1]!='*') && (pol[i+1]!='\0')){
if(pol[i]=='^'){
i=i+1;
}
else{
nb[j]=pol[i];
j++;


}
}
else
{

if((pol[i]!='*') && (pol[i]!='X') &&((pol[i+1]=='*') || (pol[i+1]=='\0'))){
if(pol[i]=='^'){
i=i+1;
}
else{

nb[j]=pol[i];
coeff[a]=atof(nb);

j=0;
a++;


}
}
}
}
}
i++;
}
i=0;
j=0;
while(i<t)
{
if(j<a)
{
c=ajout_maillon(coeff[j],expo[i],c);
c=c->suiv;
}
i++;
j++;
}
while(liste!=NULL)
{
printf("%f\n",liste->coeff);
printf("%d\n",liste->expo);
liste=liste->suiv;
}




}

int main()
{
char pol[100];
printf("Saisir le polynome en commencant par le monome du plus haut degre\n");
scanf("%s",pol);

stockage(pol);
return 0;

}















A voir également:

1 réponse

Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Bonjour,
Je ne sait pas ce que sont t et a mais il doit doit y avoir qu'un seul nombre de maillons que j'appelle 'u' pour garder la même clarté.
while ( i < u )
   {
        c = ajout_maillon( coeff[i] , expo[i] , c );
        // ne surtout pas ajouter   c=c->suiv;
        i++;
    }
0
kloc
 
T est la taille du tableau qui récupère les exposants et a la taille du tableau qui récupère les coefficients
0