Evaluation d'un polynome, calcul de la dérivée, liste chainée en c

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 815 fois - Téléchargée 35 fois

Contenu du snippet

Création d'une liste chainée contenant un polynome, évaluation de ce polynome, dérivation...

Source / Exemple :


/**************************************************************

  • *
  • Enregister les coefficents et les exposants d'un polynome *
  • dans une liste chainée. *
  • Evaluer ce polynome pour une valeur donnée x. *
  • Dériver le polynome en utilisant la même liste chainée. *
  • *
                                                                                                                            • /
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> #include <ctype.h> typedef struct POLY { float Coef; int Expos; struct POLY * Suivant; } POLY; POLY * Premier =NULL; //fonction permettant la saisie du polynome POLY * SaisiePoly(POLY * Tete) { POLY * Nouveau, * Dernier; printf("Saisi d'un polynome\n\n"); //création du 1er élément de la liste Nouveau =(POLY *) malloc(sizeof(POLY)); printf("Coefficient :"); scanf("%f",&(Nouveau->Coef)); printf("Exposant :"); scanf("%d",&Nouveau->Expos); printf("\n"); Nouveau->Suivant=NULL; Tete=Nouveau; Dernier=Nouveau; //on saisi jusqu'a ce que l'exposant soit 0 while (Dernier->Expos!=0) { Nouveau =(POLY *) malloc(sizeof(POLY)); printf("Coefficient :"); scanf("%f",&(Nouveau->Coef)); do //Saisir un exposant inférieur au précédent { printf("Exposant :"); scanf("%d",&Nouveau->Expos); if (Nouveau->Expos>=Dernier->Expos) { printf("L'exposant doit etre inferieur a l'exposant precedent\n"); getch(); } }while (Nouveau->Expos>=Dernier->Expos); printf("\n"); Nouveau->Suivant=NULL; //chainage Dernier->Suivant=Nouveau; //déplacer dernier Dernier=Nouveau; } printf("Le polynome saisi est :\n"); return Tete; } float EvaluePoly(POLY * Poly, float x)// permet de donné la valeur du polynome en fonction de x { float Total=0; if(Poly!=NULL) //on utilise une récurisive pour le fun { Total=(Poly->Coef)*((float)pow(x,Poly->Expos))+EvaluePoly(Poly->Suivant,x); } return Total; } AffichePoly(POLY * Poly) //permet d'afficher le polynome avec les x et les ^ { if (Poly->Expos!=0) { printf("%f*x^%d ",Poly->Coef,Poly->Expos); } else { printf("%f",Poly->Coef); } Poly =Poly->Suivant; while(Poly!=NULL) { if (Poly->Expos!=0) { if (Poly->Coef>=0) { printf("+ %f*x^%d ",Poly->Coef,Poly->Expos); } else { printf(" %f*x^%d ",Poly->Coef,Poly->Expos); } } else { if (Poly->Coef>=0) { printf("+ %f",Poly->Coef); } else { printf(" %f",Poly->Coef); } } Poly =Poly->Suivant; } return 0; } DerivePoly(POLY * Poly) //permet de dériver le polynomle { while(Poly->Suivant->Expos>0) { Poly->Coef*=Poly->Expos; Poly->Expos--; Poly =Poly->Suivant; } Poly->Coef*=Poly->Expos; Poly->Expos--; Poly->Suivant=NULL; } int ControlePoly(POLY * Poly) //permet de vérifier si un polynome à bien ete saisi { if (Poly==NULL) { printf("Vous devez d'abord saisir un Polynome avant de pouvoir utiliser cette option\n"); getch(); return 1; } return 0; } int Menu() { int Choix; do { system("cls"); //efface l'écran printf(" ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n"); printf(" º º\n"); printf(" º Menu Principal º\n"); printf(" º º\n"); printf(" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n"); printf("\n 1- Saisir un Polynome"); printf("\n 2- Afficher le Polynome"); printf("\n 3- Evaluer un polynome"); printf("\n 4- Deriver le polynome"); printf("\n 5- Quitter\n"); printf("\n\n\n\n\n\n\n\n\n\n\n\n\nChoix :"); scanf("%d",&Choix); } while (Choix <1 || Choix >5); system("cls"); return Choix; } intro() { printf(" Û Û ßÜ Üß ßÜ Û ßßÜ ß Û\n"); printf(" ÜÛÜ Û ßÜ ÜÜ ÜÜß Üß ßÜ ßÜ ßÜ ÜÛÜ\n"); printf(" ß ßÜ ßÜ ßß Üß ßÜ Û Û ß\n"); printf(" Û ßÜ Üß TP5.1 LANGUAGE C ßÜ Ü Û Ü\n"); printf(" Üß Û Üß ßÜ ßÜ Ü Û\n"); printf(" ßÜÜÜßßßÜÜß Üß ßÜ ßß ß ß\n"); printf(" ÜÛÜ Üß Û POLYNOME Û ßÜ ÜÛÜ\n"); printf(" ß Üß ±± ÜÛÜ ÞÝ ÞÝ ±± ßÜ ß\n"); printf(" ܱ± ±±ßÝ ß ÞÝ ÞÝ Þß±± ±±Ü\n"); printf(" Üß±±ßÞÜÜÛÝ Üßß Û Û ÜÛÜ ÞÛÜÜÝܱ±ßÜ\n"); printf(" ÛÛÛÜÜÝÛ²²Û Û ßÜ ÜßÜ ß Û²²ÛÞÜÜÛÛÛ\n"); printf(" ÛÛ²ÛÛßܲÛß Üß ßÜ ßÜ Üß Û ßÜ ßÛ²ÜßÛÛ²ÛÛ\n"); printf(" ÛÛ²²ÛÞ²²Û ±± ßÜ ßÜ le 27/11/2002 Üß Û ±± Û²²ÝÛ²²ÛÛ\n"); printf(" ÞÛ²²ÛÝÛ²Û Ü±±ßÝ Û ßÜ Üß Û Þß±±Ü Û²ÛÞÛ²²ÛÝ\n"); printf(" Û²²ÛÛÞ²ÛÝܲÜÜÛ ßßÜÜ Û ßÜ Üß Û ÛÜܲÜÞÛ²ÝÛÛ²²Û\n"); printf(" ÞÛ²ÛÛÞÛ²ÛÞ²²Ûß ßÜß Üß ßÜ Üß Üß ßÛ²²ÝÛ²ÛÝÛÛ²ÛÝ\n"); printf(" Û²²ÛÝÛ²ÛÞ²²Û Üß Ü ßÜÜ ßÜÜ ÜÜß ßÜÜß Ü ßÜ Û²²ÝÛ²ÛÞÛ²²Û\n"); printf(" ÞÛ±²ÛÞ²²Ý²ÛÛ Ü±±ß ßÛß Üß ßßÜÜÜÜÜßß ßÛß ±±±Ü Û²²ÞÛ²ÝÛ²±ÛÝ\n"); printf(" Û±±²²Ý²ÛÞ²Û ÜÛ²ÜÜÝ Üܱ± Û ÜÛÜ ±±ÜÜ ÞÜܲÛÜ Û²ÝÛ²Þ²²±±Û\n"); printf(" Û±±²²Ý²ÛÞ²Ý ÜÛ±±ÛÛß Û±±±± ßÜ ß ±±±±Û ÛÛ±±ÛÜ Þ²ÝÛ²Þ²²±±Û\n"); printf("ÞÛ±±²ÛÞÛÝÛ²ÜÛ²²ÛÛß Û±±±±Ý ßßÜÜ ÜÜßßÜ Þ±±±±Û ßÛÛ±±ÛܲÛÞÛÝÛ²±±ÛÝ\n"); printf("Þ±±±²ÛÞÛÞÛ²²²²ÛÛ Û² ±±Û ßßÜÜÜßß Û Û±± ²Û ÛÛ²²²²ÛÝÛÝÛ²±±±Ý\n"); printf(" Û±±²ÛÜÞÛ²²²²Ûß ÜÛÛÛÛÜÛ ÜÛÜ ßÜÜÜ ÛÜÛÛÛÛÜ ßÛ²²²²ÛÛÞÛ²±±Û\n"); printf(" Þ±±²ÛÛ Û²²²²²Ý ÜÛÛ²²ÛÛ ß ÛÛ²²ÛÛÜ Þ²²²²²Û ÛÛ²±±Ý\n"); } main() { int Choix; //Sert à connaitre l'option du menu choisi int Controle; //sert au controle d'existance du polynome float x; float Total; intro(); printf("Appuyer sur une touche pour entrer dans le menu principal"); getch(); Choix = Menu(); Controle =1; while (Controle != 0 && Choix > 1 && Choix < 5) //ca permet de savoir si le polynome a bien été saisi { if (Choix > 1 && Choix < 5) // Le controle s'effectue uniquement pour les option 2 à4 { Controle =ControlePoly(Premier); } Choix=Menu(); } while (Choix!=5) { switch (Choix) { case 1 : Premier=SaisiePoly(Premier); AffichePoly(Premier); printf("\n\n\nAppuyer sur une touche pour retourner au menu principal\n"); getch(); break; case 2 : printf("Affichage du polynome\n"); AffichePoly(Premier); printf("\n\n\nAppuyer sur une touche pour retourner au menu principal\n"); getch(); break; case 3 : printf("Evaluation du polynome\n"); printf("Saisir la valeur de x :"); scanf("%f",&x); Total = EvaluePoly(Premier,x); printf("Pour x = %f\n",x); AffichePoly(Premier); printf("= %f",Total); printf("\n\n\nAppuyer sur une touche pour retourner au menu principal\n"); getch(); break; case 4 : printf("Derivation du polynome\n"); DerivePoly(Premier); AffichePoly(Premier); printf("\n\n\nAppuyer sur une touche pour retourner au menu principal\n"); getch(); break; } Choix = Menu(); } }

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
jeudi 21 avril 2011
Statut
Membre
Dernière intervention
4 janvier 2012

j'aimerais bien savoir comment executer ce programme
Messages postés
3
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
10 avril 2007

wawe merci beaucoup ahmed moctar ould mohamed vall
licence MAI a l'universite gaston berger a saint luis senegal
nationalite mauritanienne
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
poua !!! on voit ke c la rentré des classe...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.