Evaluation d'un polynôme
Résolu
Sharon71
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
Sharon71 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Sharon71 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois construire un programme en langage C permettant l'évaluation du polynôme P = a0*x^0 + a1*x^1 + ... + an*x^n en utilisant l'appel à une fonction puissance. On doit utiliser un tableau à 20 entrées pour les valeurs de a.
Est-ce que quelqu'un pourrait s'il vous plaît me dire si ce que j'ai fais est juste ? Je débute en langage C et j'ai certainement dû faire des erreurs.
Merci beaucoup d'avance pour vos réponses
Voici le programme que j'ai fais :
#include <stdio.h>
/* déclaration de la fonction puissance */
float puissance(float y, int n)
{
float resultat ;
if ( n == 0 ) resultat = 1 ;
else resultat = y*puissance(y, n-1) ;
return resultat ;
}
main ()
{
int nt ;
int i ;
int j ;
float x ;
float p ;
int a[20] ;
printf("donnez le nombre de termes du polynôme et la valeur de x") ;
scanf("%i %f", &nt, &x) ;
printf("donnez la valeur de a") ;
for(i = 0 ; i < 20 ; i++ )
scanf("%i", &a[i]) ;
p = a[0] ;
for(j = 1 ; j < nt ; j++)
p = p + a[j]*puissance(x, j) ;
printf("Le polynôme vaut %f\n", p) ;
return 0 ;
}
Je dois construire un programme en langage C permettant l'évaluation du polynôme P = a0*x^0 + a1*x^1 + ... + an*x^n en utilisant l'appel à une fonction puissance. On doit utiliser un tableau à 20 entrées pour les valeurs de a.
Est-ce que quelqu'un pourrait s'il vous plaît me dire si ce que j'ai fais est juste ? Je débute en langage C et j'ai certainement dû faire des erreurs.
Merci beaucoup d'avance pour vos réponses
Voici le programme que j'ai fais :
#include <stdio.h>
/* déclaration de la fonction puissance */
float puissance(float y, int n)
{
float resultat ;
if ( n == 0 ) resultat = 1 ;
else resultat = y*puissance(y, n-1) ;
return resultat ;
}
main ()
{
int nt ;
int i ;
int j ;
float x ;
float p ;
int a[20] ;
printf("donnez le nombre de termes du polynôme et la valeur de x") ;
scanf("%i %f", &nt, &x) ;
printf("donnez la valeur de a") ;
for(i = 0 ; i < 20 ; i++ )
scanf("%i", &a[i]) ;
p = a[0] ;
for(j = 1 ; j < nt ; j++)
p = p + a[j]*puissance(x, j) ;
printf("Le polynôme vaut %f\n", p) ;
return 0 ;
}
A voir également:
- Evaluation d'un polynôme
- Evaluation pc - Guide
- Telecharger autocad 2016 francais gratuit version d'evaluation - Télécharger - CAO-DAO
- Logiciel évaluation entreprise - Télécharger - Comptabilité & Facturation
- Évaluation de pièces - Forum Réseaux sociaux
- Évaluation du vendeur - Forum Consommation & Internet
11 réponses
En fait, je pense qu'il y a un problème parce que le nombre de termes et le nombre de valeurs de a sont liés.
Je vais donc faire un cas général :
#include <stdio.h>
/* déclaration de la fonction puissance */
float puissance(float y, int n)
{
float resultat ;
if ( n == 0 ) resultat = 1 ;
else resultat = y*puissance(y, n-1) ;
return resultat ;
}
main ()
{
int nt ;
int i ;
int j ;
float x ;
float p ;
int a[ nt - 1 ] ;
printf("donnez le nombre de termes du polynôme et la valeur de x") ;
scanf("%i %f", &nt, &x) ;
printf("donnez la valeur de a") ;
for(i = 0 ; i < nt ; i++ )
scanf("%i", &a[i]) ;
p = a[0] ;
for(j = 1 ; j < nt ; j++)
p = p + a[j]*puissance(x, j) ;
printf("Le polynôme vaut %f\n", p) ;
return 0 ;
}
Je vais donc faire un cas général :
#include <stdio.h>
/* déclaration de la fonction puissance */
float puissance(float y, int n)
{
float resultat ;
if ( n == 0 ) resultat = 1 ;
else resultat = y*puissance(y, n-1) ;
return resultat ;
}
main ()
{
int nt ;
int i ;
int j ;
float x ;
float p ;
int a[ nt - 1 ] ;
printf("donnez le nombre de termes du polynôme et la valeur de x") ;
scanf("%i %f", &nt, &x) ;
printf("donnez la valeur de a") ;
for(i = 0 ; i < nt ; i++ )
scanf("%i", &a[i]) ;
p = a[0] ;
for(j = 1 ; j < nt ; j++)
p = p + a[j]*puissance(x, j) ;
printf("Le polynôme vaut %f\n", p) ;
return 0 ;
}
Bonjour,
La récurrence dans la fonction puissance est-ce vraiment nécessaire?
Pour la fonction puissance j'aurai fait ça:
float puissance(float y, int n)
{
float temp = y;
int i;
for(i = 1; i<n; i++)
temp = y * temp;
return temp
}
La récurrence dans la fonction puissance est-ce vraiment nécessaire?
Pour la fonction puissance j'aurai fait ça:
float puissance(float y, int n)
{
float temp = y;
int i;
for(i = 1; i<n; i++)
temp = y * temp;
return temp
}
Dans cet exercice, on nous demande d'utiliser int a[20] et on nous demande d'expliquer pourquoi le polynôme ne peut pas être d'ordre supérieur à 19.
Je ne vois pas pourquoi, parce que pour moi le polynôme donnerait : P = a0*x^0 + a1*x^1 + ... + a20*x^20
Est-ce que quelqu'un voit pourquoi le polynôme est d'ordre 19 au maximum ?
Merci d'avance pour vos réponses.
Je ne vois pas pourquoi, parce que pour moi le polynôme donnerait : P = a0*x^0 + a1*x^1 + ... + a20*x^20
Est-ce que quelqu'un voit pourquoi le polynôme est d'ordre 19 au maximum ?
Merci d'avance pour vos réponses.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci. J'ai finalement compris. En fait, il n'y a pas de valeur pour a[20]. La dernière valeur est pour a[19].
Salut,
int nt;
int a[ nt - 1 ] ;
nt n'est pas initialisé. Donc, problème pour la déclaration du tableau "a". Il vaut mieux utiliser int a[MAX] et #define MAX 20 en début de programme.
Cdlt
int nt;
int a[ nt - 1 ] ;
nt n'est pas initialisé. Donc, problème pour la déclaration du tableau "a". Il vaut mieux utiliser int a[MAX] et #define MAX 20 en début de programme.
Cdlt
Oui, merci beaucoup, je me suis rendue compte qu'il allait y avoir un problème et j'ai donc mis int a[100], pour être sûr que a soit défini.
C'est vrai, mais au cas où l'utilisateur aurait envie d'évaluer un énorme polynôme... ;-)
Merci beaucoup.
Merci beaucoup.
Tu as entièrement raison...
Le mieux, ce serait que l'utilisateur rentre le nombre d'entrées du tableau qu'il veut. Est-ce que ça serait possible de demander à l'utilisateur de donner le nombre d'entrées du tableau avant de déclarer le tableau ?
Le mieux, ce serait que l'utilisateur rentre le nombre d'entrées du tableau qu'il veut. Est-ce que ça serait possible de demander à l'utilisateur de donner le nombre d'entrées du tableau avant de déclarer le tableau ?
Oui, c'est possible :-). Il faut réaliser une allocation dynamique.
Par exemple :
Par exemple :
int *a=NULL; int nb; scanf("%d",&nb); //attention au scanf sans précaution a=malloc(nb*sizeof *a); //on alloue dans le tas une place de nb int if( a!=NULL){ //on vérifie que l'allocation s'est bien déroulée //et là, tu peux faire comme-ci tu avais ton tableau : a[5]=2; etc. } free(a),a=NULL; //on libère la zone avant de quitter le programme.