Qui peut me proposer une correction pour mon programme listes chainées :)

Résolu
mohamedaat Messages postés 3 Date d'inscription dimanche 8 janvier 2012 Statut Membre Dernière intervention 16 avril 2012 - 6 avril 2012 à 01:42
mohamedaat Messages postés 3 Date d'inscription dimanche 8 janvier 2012 Statut Membre Dernière intervention 16 avril 2012 - 16 avril 2012 à 18:57
voilà mon programme sert à ajouter deux polynômes représentés par des listes chainées, mais mon problème c'est que la fonction add() ne marche pas :( et j'ai tenté pas mal de fois de la changer mais sans résultat,

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

struct Mach{
int cof;
int expo;
struct Mach*suivant;
};
struct Mach* premier,*anc,*nouveau,*second,*resultat,*somme;
int lon=0,k=0;

int encore(){
printf("\nVoulez vous continuer (O/N)");
return (toupper(getch())=='O');

}
//---------------Lecture des polynomes----------------------------
struct Mach*Lecture(){
struct Mach* poly,*poly2;
premier=(struct Mach*)malloc(sizeof(struct Mach));
printf("\nDonner le coefficient :");
scanf("%d",&premier->cof);
printf("\nDonner l'exposant :");
scanf("%d",&premier->expo);
nouveau=premier;
while(encore()){
poly=(struct Mach*)malloc(sizeof(struct Mach));
nouveau->suivant=poly;
printf("\nDonner le coefficient :");
scanf("%d",&poly->cof);
printf("\nDonner l'exposant :");
scanf("%d",&poly->expo);
nouveau=poly;
}
nouveau->suivant=NULL;

//---------------------------------------------------
second=(struct Mach*)malloc(sizeof(struct Mach));
printf("\nDonner le coefficient :");
scanf("%d",&second->cof);
printf("\nDonner l'exposant :");
scanf("%d",&second->expo);
nouveau=second;
lon++;
while(encore()){
lon++;
poly=(struct Mach*)malloc(sizeof(struct Mach));
nouveau->suivant=poly;
printf("\nDonner le coefficient :");
scanf("%d",&poly->cof);
printf("\nDonner l'exposant :");
scanf("%d",&poly->expo);
nouveau=poly;
}
nouveau->suivant=NULL;
return(premier);
return (second);
}
//-------------Affichege des polynomes-------------------------
void Afficher(struct Mach*ptr){
while(ptr!=NULL){
printf("%dX^%d ",ptr->cof,ptr->expo);
if(ptr->suivant!=NULL) printf("+");
ptr=ptr->suivant;
}
}
//----------------calcul du polynome résultat--------------------
struct Mach* add(struct Mach*prem,struct Mach*secon){
struct Mach*addition,*somme,*temp1,*temp2;

while(prem!=NULL )
{

while(secon!=NULL){

if(prem->expo==secon->expo){ // on test l'égalité des exposants des polynomes
secon->cof=prem->cof+secon->cof;
prem=prem->suivant;
}

else {
k++;
if(k==lon){ // SI il est égal aux nombres des neuds on ajout le nouvel élément
nouveau=(struct Mach*)malloc(sizeof(struct Mach));
nouveau=secon;
addition=(struct Mach*)malloc(sizeof(struct Mach));
nouveau->suivant=addition;
addition->expo=prem->expo;
addition->cof=prem->cof;
nouveau=addition;
}
nouveau->suivant=NULL;
prem->suivant=prem;

}


}

prem=prem->suivant;
}

return(secon);
}
//-----------------------------------------------------------------------------
int main(){
premier=Lecture();
printf("\n");
printf("Polynome1 = ");Afficher(premier);
printf("\n");
printf("polynome2 = ");Afficher(second);
printf("\npolynome resultat = ");
second=add(premier,second);
Afficher(second);
getch();
}

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 avril 2012 à 07:25
l'es là

nouveau=(struct Mach*)malloc(sizeof(struct Mach));
nouveau=secon;

ton souci

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
6 avril 2012 à 10:41
Bonjour.

Pense à utiliser les balises de code et à indenter ton code.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
mohamedaat Messages postés 3 Date d'inscription dimanche 8 janvier 2012 Statut Membre Dernière intervention 16 avril 2012
16 avril 2012 à 18:57
Merci j'ai pu le résoudre
0
Rejoignez-nous