#include #include struct TMaillon { int val; struct TMaillon *suivant; }; void Afficher(struct TMaillon *L) { struct TMaillon *p; p=L; while(p!=NULL) { printf("%d ==> ",p->val); p=p->suivant; } printf("NIL \n \n"); } void P(struct TMaillon **L) { struct TMaillon *p,*l=*L; if(l!=NULL) { if(l->val!=9) { l->val=l->val+1; } else { l->val=0; P(&l->suivant); } } else { p=(struct TMaillon *)malloc(sizeof(struct TMaillon)); p->val=1; p->suivant=l; *L=p; } } int Mult3(struct TMaillon *L) { struct TMaillon *p=L,*ListeSomme=NULL; int i; while(p!=NULL) { for(i=1;i<=p->val;i=i+1) { P(&ListeSomme); } p=p->suivant; } Afficher(ListeSomme); if(ListeSomme==NULL){return 1;} else { if(ListeSomme->suivant==NULL) { if(ListeSomme->val % 3 ==0){return 1;} else {return 0;} } else {return Mult3(ListeSomme);} } } int main() { struct TMaillon *Tete, *p; int x,c,i; char s[200]; Tete=NULL; printf("Donner le nombre: ?"); scanf("%s",&s); printf("\n \n"); i=0; while(s[i]!=0) { if (s[i]<48 || s[i]>57) { printf("ce n'est pas un nombre entier !!!!"); return 0; } p=(struct TMaillon *)malloc(sizeof(struct TMaillon)); p->val=s[i]-48; p->suivant=Tete; Tete=p; i=i+1; } Afficher(Tete); // La procédure mult3 affiche les listes sommes des listes // jusqu'à atteindre une liste d'un seul maillon c=Mult3(Tete); if(c==1) {printf("\n Le nombre est un multiplicateur de 3 \n\n");} else {printf("\n Le nombre n'est pas un multiplicateur de 3 \n\n");} P(&Tete); Afficher(Tete); return 0; }