Evaluation d' un polynôme

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 870 fois - Téléchargée 31 fois

Contenu du snippet

Dans ce programme, vous pouvez obtenir la valeur d'un polynôme du degré de votre choix pour une valeur de X.

Source / Exemple :


#include<iostream.h>
#include<conio.h>
float t[15];
int n,i,j;
float x,y,p,m;
char final;
void main()
{
	cout<<"\n\t°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n";
	cout<<"\n\t    CE PROGRAMME PERMET D'EVALUER UN POLYNOME DE VOTRE CHOIX\n ";
	cout<<"\n\t================================================================\n\n";
debut:cout<<"\n\t SOIT UN POLYNOME  P(x) = a1x^n + a2x^(n-1) +...+ an.";
	cout<<"\n\n\n\t    INDIQUEZ LE DEGRE DE   P,   n = ";
	cin>>n;
//------------------| CONTAINTES SUR LA TAILLE |------------------	
	while(n>15)
	{
		cout<<"\n\t  RECOMMENCER CAR CE DEGRE EST SUPRIEUR A 15\n\n";
		cout<<"\n\n\t\t ALORS   n= ";
		cin>>n;
	}
	while(n<0)
	{
		cout<<"\n\n\t  CETTE VALEUR EST NEGATIVE. VEUILLEZ RECOMMENCER !\n\n";
		cout<<"\t\t ALORS   n= ";
		cin>>n;
	}

	if((0<=n)&&(n<=8))
	{
	cout<<"\n\t  ENTREZ  "<<n+1<<"  COEFICIENTS SELON CE QUI SUIT  :\n\n";

//--------------------| Présentation de la forme du polynôme |------------	
	
	cout<<"\n\a       P(X)= ";   
	for(i=0,j=n;i<n-1,j>0;i=i+1,j=j-1)
	{
		cout<<"a"<<i+1<<"x^"<<j<<" + ";
	}
	cout<<"a"<<n+1;

//---------------------| Lecture des coéficient du polynôme  |-------------
           

	for(i=0;i<=n;i=i+1)
	{
		cout<<"\n\n        a"<<i+1<<"= ";
		cin>>t[i];
	}
//----------------------| Affichage du polynôme |--------------------------

	cout<<"\n\n\t NOUS OBTENANT DONC :";
	cout<<"\n\n\n       P(X)= ";
	for(i=0,j=n;i<=n,j>0;i=i+1,j=j-1)
	{
		cout<<"("<<t[i]<<")X^"<<j<<" + ";
	}
	cout<<"("<<t[n]<<")";

	cout<<"\n\n\n       POUR  X= ";   // valeur de x	
	cin>>x;                                                
//************************| Evaluation proprement dite |*********************
	y=0;
	p=1;
	for(i=n;i>=0;i=i-1)
	{
		y=y+t[i]*p;
		p=p*x;
	}
//----------------------|  Valeur  de  P(x)  |------------------------------
            

	
	cout<<"\n\n\t  ALORS ,      \t  P("<<x<<")= "<<y;
	cout<<"\n\n";
	cout<<"\n\n\tSOUHAITEZ-VOUS QUITTER ? (OUI/NON)";
	cin>>final;
	if(final=n)
	{
		goto debut;
	}

	cout<<"\n\n\n\n";
	

}

}

Conclusion :


Ce premier niveau devra être complété dans le temps. Il est encore très standar, je le sais, et j'accueille toute proposition.

A voir également

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
24 septembre 2005

salut , voici ma version en C , j'impose pas une dergé max :

#include <stdio.h>
#include <math.h>
int main()
{
/* declaration des variables */
float *t; /* pointeur representant les coeficient */
int n; /* degre du polynome */
float P; /* les resutat */
float X; /* la variable */
int i;
/* Saisie du degre du polynome et de l'argument*/
printf(" Ce programme calcule P(X) avec P un polynome \n");
printf("P est de la forme : P(X)= An*X^n + An-1*X^n-1 +....+ A1*X + A0 \nEntrer le degre n de P : ");
scanf("%d",&n);
printf("Entrer la valeur X de l'argument : ");
scanf("%f",&X);
/* Creation du tableau de coefficients */
t=(float*)malloc((n+1)*sizeof(float));
/* Saisie des coefficents de P */
for(i=0;i<=n;i++)
{
printf("Entrer le coefficient A%d : ",i);
scanf(" %f",&*(t+i));
}
/* Calcule de P(X) */
/* On utilise la formule de factorisation de Horner */
for(P=0.0,i=0;i<=n;i++)
{
P =P*X+ *(t+n-i);
}
/* Resultat */
printf("Pour une valeur X= %.2f on a : P(X)= %.2f \n",X,P) ;
return 0;
}
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010

Il y avait y polémique au sujet du type renvoyé par main il y a peu de temps, sur je ne sais plus quelle source...
Messages postés
31
Date d'inscription
jeudi 19 février 2004
Statut
Membre
Dernière intervention
29 mai 2005

DevC++ :)
Messages postés
921
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
23 septembre 2010

Le premier coeff c'est a0, pas a1 (en passant ^^)

Puis pareil que ymca...

Et juste par curiosité, Penguin_X, c'est avec quel compilateur ?
Messages postés
31
Date d'inscription
jeudi 19 février 2004
Statut
Membre
Dernière intervention
29 mai 2005

J'ai eu une erreur de compilation. Il fallait que tu retourne un entier avec ton main, alors j'ai fais int main(){ ... a place de void main{

++
Afficher les 6 commentaires

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.