[C] aide polynomes

aide polynomes [C] - C - Programmation

Marsh Posté le 18-01-2009 à 14:15:46    

J'etudie actuellement les polynomes avec le langage C, je dois:
1/Evalutation d'un polynome en x:
Etudiez et programmez une fonction chargée de retourner le resultat de l'evalutation d'un polynome P pour une valeur donné de X(P et X sont passés en argument à la fonction).Testez cette fonction
 
2/Affichage d'un polynome:
Créez une fonction et son programme test chargée de l'affichage d'un polynome passé en parametre.
 
3/Saisie d'un polynome:
Proposez et testez une fonction chargé de saisir les coefficients d'un polynome.
 
 
Mon programme pour le moment:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
 
int main (void){
struct poly {
       unsigned short degre;
       float *coef;
};
struct poly p1 {
       float x,res;
       int i;
};
 //evalutation
void eval_poly(struct poly *p1){
printf("\n Veuillez saisir un degre: " );
scanf("%u",&p1.degre);
p1.coef=malloc((p1.degre+1)*sizeof(float));
 
for (i=p1.degre;i>=0;i--){
    printf("\nEntrez la valeur de A%d: ",i);
    scanf("%f",&p1.coef[i]);
}
res=0;
printf("\nEntrez un nombre x: " );
scanf("%f",&x);
 
for (i=p1.degre;i>=0;i--){
    res=res+((p1.coef[i])*pow(x,i));
}
printf("\nLe resultat du polynome est : %.2f ", res);
}
 
//saisie
void get_poly(struct poly *p1){
printf("\n Veuillez saisir un degre: " );
scanf("%u",&p1.degre);
p1.coef=malloc((p1.degre+1)*sizeof(float));
 
for (i=p1.degre;i>=0;i--){
    printf("\nEntrez la valeur de A%d: ",i);
    scanf("%f",&p1.coef[i]);
 
}
//afficahge
void draw_poly(struct poly *p1){
 
    int i;
     
printf("\nLe polynome est de la forme : \n" );    
    for (i=p1->deg;i>=2;i--){
        if (p1->coef[i]==1){
           printf(" x^%d +",i);
           }else{                          
           printf(" %.0f x^%d +",p1->coef[i],i);
           }    
    }
if (p1->coef[i]==1){
printf(" x + %.0f",p1->coef[0]);
}else{                              
printf("%.0f x + %.0f",p1->coef[1],p1->coef[0]);    
}
printf("\n\n" );
}    
system("PAUSE" );  
  return 0;}
 
J'ai beaucoup de mal avec les fonctions et pointeurs. Pourriez vous m'aider à corriger mes fautes et à m'aider un petit peu svp?merci d'avance

Reply

Marsh Posté le 18-01-2009 à 14:15:46   

Reply

Marsh Posté le 18-01-2009 à 17:53:39    

jsute que ton code, c'ets n'improtequoi ... structures et fonctions ne se declarent pas dans le main mais à l'exterieur.

 

Allez en cours, ça aide.

 

Corrige ça et on avisera

 

EDIT bordel mais sans ca c'est le drame.

 

Alors en vrac :
l'acces au champ d'un pointeur vers une structure c'ets -> pas .
la declaration des varaibles c'ets pas la foire à mamie
// c'ets du C++, c'ets /* */ en C, arretes d'utilisez visual studio et utilise gcc

 

Le pire c'ets une fois ces betises corrigés ca a l'air de marcher malgré le manque de free(), l'utilsiation de scanf ...


Message édité par Joel F le 18-01-2009 à 18:00:30
Reply

Marsh Posté le 18-01-2009 à 18:02:49    

Vu que j'ai rien d'autre sur le feu  
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. struct poly {
  5.        int degre;
  6.        float *coef;
  7. };
  8. void eval_poly(struct poly *p1)
  9. {
  10.   float res,x;
  11.   int i;
  12.   res=0;
  13.   printf("\nEntrez un nombre x: " );
  14.   scanf("%f",&x);
  15.   for (i=p1->degre;i>=0;i--)
  16.     res=res+((p1->coef[i])*pow(x,i));
  17.  
  18.   printf("\nLe resultat du polynome est : %.2f ", res);
  19. }
  20. void get_poly(struct poly *p1)
  21. {
  22.   int i;
  23.   printf("\n Veuillez saisir un degre: " );
  24.   scanf("%u",&p1->degre);
  25.   p1->coef=malloc((p1->degre+1)*sizeof(float));
  26.   for (i=p1->degre;i>=0;i--)
  27.   {
  28.     printf("\nEntrez la valeur de A%d: ",i);
  29.     scanf("%f",&p1->coef[i]);
  30.   }
  31. }
  32. void draw_poly(struct poly *p1)
  33. {
  34.   int i;
  35.    
  36.   printf("\nLe polynome est de la forme : \n" );   
  37.   for (i=p1->degre;i>=2;i--)
  38.   {
  39.     if (p1->coef[i]==1)
  40.          printf(" x^%d +",i);
  41.     else                 
  42.            printf(" %.0f x^%d +",p1->coef[i],i);
  43.   }
  44.  
  45.   if (p1->coef[i]==1)
  46.    printf(" x + %.0f",p1->coef[0]);
  47.   else                             
  48.     printf("%.0f x + %.0f",p1->coef[1],p1->coef[0]);   
  49.   printf("\n\n" );
  50. }   
  51. int main()
  52. {
  53. struct poly p1;
  54.        float x,res;
  55.        int i;
  56.   get_poly(&p1);
  57.   draw_poly(&p1);
  58.   eval_poly(&p1);
  59. return 0;
  60. }


 
Mais s'il te palit :
utilise fgets+atof
decouple la creation de la memoire du polynome de son remplissage
fait une fonction de nettoyage de la structure en fin de programme

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed