Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1505 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Programme sur les polynomes !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Programme sur les polynomes !

n°315468
4bis
Posté le 22-02-2003 à 13:38:08  profilanswer
 

Je dois faire un programme en C sur le calcul de polynomes.


On considere des polynomes de la forme : P(x) = AnXexp(e1) + A(n-1)Xexp(e2) + ? + A1Xexp(en) avec e1 > e2 > ... > en > 0
 


 
 
Bon j'ai commence a faire le programme, c'est a dire permettre d'afficher et d'entrer un polynome dans une liste chainee mais j'ai des erreurs :
 
j'ai quatre fichiers :
 

Code :
  1. polynome.h
  2. struct Scoef {
  3. double coef;
  4. struct Scoef *suivant;
  5. }
  6. extern saisi(struct Scoef);
  7. extern void affichage(struct Scoef);


 
 

Code :
  1. main.h
  2. struct Scoef {
  3. double coef;
  4. struct Scoef *suivant;
  5. }


 

Code :
  1. polynome.c
  2. #include <stdio.h>
  3. #include <malloc.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include "polynome.h"
  7. //---------------------------------------------------------------------------
  8. // Demande les coefs a l'utilisateur
  9. void saisi(struct Scoef **p)
  10. {
  11. char s[20]; //Lifgne pour rentrer le coef
  12. double a;
  13. struct Scoef *P;
  14. char *res;
  15. puts("Rentrez les coefs :" );
  16. P = (struct Scoef*)malloc(sizeof(struct Scoef));
  17. P->coef = 0; // init
  18. P->suivant = NULL;
  19. *p = P; // on sauve le premier
  20. // double strtod( const char *nptr, char **endptr );
  21. while ( (a = strtod( gets(s),&res )) || (!strcmp(res,"" )) )
  22. {
  23.  P->coef = a;
  24.  P->suivant = (struct Scoef*)malloc(sizeof(struct Scoef));
  25.  P=P->suivant; // on se décale
  26.  P->coef = 0; //propreté
  27.  P->suivant = NULL;
  28. }
  29. }
  30. //---------------------------------------------------------------------------
  31. // Affiche le polynome
  32. void affichage(struct Scoef *p)
  33. {
  34. int i = 0;
  35. while (p->suivant)
  36. {
  37.  if (p->coef != 0) printf("%.1lf X^%d ",p->coef,i);
  38.  if ((p->suivant->coef != 0)&&(p->coef!=0)) printf("+ " );
  39.  p = p->suivant;
  40.  i++;
  41. }
  42. puts("" );
  43. }


 
 

Code :
  1. main.c
  2. #include <stdio.h>
  3. #include <malloc.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include "polynome.h"
  7. void saisi(struct Scoef);
  8. void affichage(struct Scoef);
  9. struct Scoef *P;
  10. void main()
  11. {
  12. saisi(P);
  13. }


 
 
 
 
Et voici mes erreurs :
C:\Documents and Settings\Administrateur\Bureau\mini_project\main.c(10) : error C2371: 'saisi' : redefinition; different basic types
        c:\documents and settings\administrateur\bureau\mini_project\polynome.h(8) : see declaration of 'saisi'
C:\Documents and Settings\Administrateur\Bureau\mini_project\main.c(18) : error C2115: 'function' : incompatible types
C:\Documents and Settings\Administrateur\Bureau\mini_project\main.c(18) : warning C4024: 'saisi' : different types for formal and actual parameter 1
polynome.c
C:\Documents and Settings\Administrateur\Bureau\mini_project\polynome.c(13) : error C2628: 'Scoef' followed by 'void' is illegal (did you forget a ';'?)
C:\Documents and Settings\Administrateur\Bureau\mini_project\polynome.c(14) : error C2371: 'saisi' : redefinition; different basic types
        c:\documents and settings\administrateur\bureau\mini_project\polynome.h(8) : see declaration of 'saisi'
C:\Documents and Settings\Administrateur\Bureau\mini_project\polynome.c(43) : warning C4028: formal parameter 1 different from declaration
Error executing cl.exe.
 
mini_project.exe - 4 error(s), 2 warning(s)
 
 
 
Aidez moi ca fait une heure et demi que je n'avance plus.  :cry:

mood
Publicité
Posté le 22-02-2003 à 13:38:08  profilanswer
 

n°315471
gloop
Posté le 22-02-2003 à 13:42:07  profilanswer
 

1ere erreur: dans ton polynome.h, saisi est mal déclarée: y a pas le type de retour, mais il est précisé dans ton polynome.c.
les types de parametres ne sont pas les memes.


Message édité par gloop le 22-02-2003 à 13:43:00
n°315472
Taz
bisounours-codeur
Posté le 22-02-2003 à 13:42:26  profilanswer
 

tu définies 2 fois struct Scoef
et apres tu te plantes dans les paramètres de tes fonctions
lis les message de ton compilo

n°315473
Olivier51
Posté le 22-02-2003 à 13:44:52  profilanswer
 

Citation :

C:\Documents and Settings\Administrateur\Bureau\mini_project\main.c(10) : error C2371: 'saisi' : redefinition; different basic types
       c:\documents and settings\administrateur\bureau\mini_project\polynome.h(8) : see declaration of 'saisi'

 
 
Ta déclaration de ta fonction saisie dans polynome.h et ton fichier main.c ne sont pas les mêmes, tu dois mettre ds ton fichier main.c :
void saisi(struct Scoef **p);
Encore que :
void saisi(Scoef **p) serait assez, si bien sûr tu remplace ta fonction void saisi(struct Scoef **p) dans le fichier polynome.c par void saisi(Scoef **p) (et puis partout ailleur ...)

n°315474
4bis
Posté le 22-02-2003 à 13:45:03  profilanswer
 

gloop a écrit :

1ere erreur: dans ton polynome.h, saisi est mal déclarée: y a pas le type de retour, mais il est précisé dans ton polynome.c.
les types de parametres ne sont pas les memes.


 
Quand je met void devant la fonction saisi, il me met une erreur c'est pour cela que je l'ai enleve en fait.
 

++Taz a écrit :

tu définies 2 fois struct Scoef
et apres tu te plantes dans les paramètres de tes fonctions
lis les message de ton compilo


 
Pour struct Scoef, le mieux est de le delarer seulement dans main.h ?

n°315475
gloop
Posté le 22-02-2003 à 13:47:02  profilanswer
 

4bIs a écrit :


 
Quand je met void devant la fonction saisi, il me met une erreur c'est pour cela que je l'ai enleve en fait.
 
 
 
Pour struct Scoef, le mieux est de le delarer seulement dans main.h ?


l'erreur qu'il te donne, c'est ptet le probleme des types de parametres differents.
pour ta déclaration de structure, fait un fichier de déclaration commun pour les fichiers qui en ont besoin. et n'oublie pas les directives de préprocesseur pour l'inclusion sécurisée.

n°315476
4bis
Posté le 22-02-2003 à 13:54:08  profilanswer
 

Bon deja je n'ai plus que deux erreurs. J'ai corrige ce que m'a dit Olivier51.
 

n°315479
4bis
Posté le 22-02-2003 à 14:04:43  profilanswer
 

gloop a écrit :

1ere erreur: dans ton polynome.h, saisi est mal déclarée: y a pas le type de retour, mais il est précisé dans ton polynome.c.
les types de parametres ne sont pas les memes.


 
je ne comprend pas bien cette erreur, je ne vois pas ce que je dois mettre en type de retour. Voila ce que j'ai maintenant :
 

Code :
  1. polynome.h
  2. extern saisi(struct Scoef **);
  3. extern void affichage(struct Scoef);


 

Code :
  1. polynome.c
  2. #include <stdio.h>
  3. #include <malloc.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include "polynome.h"
  7. #include "main.h"
  8. //---------------------------------------------------------------------------
  9. // Demande les coefs a l'utilisateur
  10. saisi(struct Scoef **p)
  11. {
  12. char s[20];
  13. double a;
  14. struct Scoef *P;
  15. char *res;
  16. puts("Rentrez les coefs :" );
  17. P = (struct Scoef*)malloc(sizeof(struct Scoef));
  18. P->coef = 0; // init
  19. P->suivant = NULL;
  20. *p = P; // on sauve le premier
  21. while ( (a = strtod( gets(s),&res )) || (!strcmp(res,"" )) )
  22. {
  23.  P->coef = a;
  24.  P->suivant = (struct Scoef*)malloc(sizeof(struct Scoef));
  25.  P=P->suivant; // on se décale
  26.  P->coef = 0; //propreté
  27.  P->suivant = NULL;
  28. }
  29. return(**p);
  30. }
  31. //---------------------------------------------------------------------------
  32. // Affiche le polynome
  33. void affichage(struct Scoef *p)
  34. {
  35. int i = 0;
  36. while (p->suivant)
  37. {
  38.  if (p->coef != 0) printf("%.1lf X^%d ",p->coef,i);
  39.  if ((p->suivant->coef != 0)&&(p->coef!=0)) printf("+ " );
  40.  p = p->suivant;
  41.  i++;
  42. }
  43. puts("" );
  44. }


 
 
Mes erreurs :
 
C:\Documents and Settings\Administrateur\Bureau\mini_project\polynome.c(15) : error C2371: 'saisi' : redefinition; different basic types
        c:\documents and settings\administrateur\bureau\mini_project\polynome.h(8) : see declaration of 'saisi'
C:\Documents and Settings\Administrateur\Bureau\mini_project\polynome.c(45) : warning C4028: formal parameter 1 different from declaration
Error executing cl.exe.


Message édité par #SubZero le 22-02-2003 à 14:17:24
n°315482
4bis
Posté le 22-02-2003 à 14:13:51  profilanswer
 

j'ai aussi corrige le warning.

n°315484
gloop
Posté le 22-02-2003 à 14:20:15  profilanswer
 

mais fait un peu gaffe à tes types bordel:
1/ saisi retourne une struct Scoeff et tu le précises pas
2/ afficahge est déclarée struct Scoef en parametre et dans la définition, c'est un struct Scoef *.

mood
Publicité
Posté le 22-02-2003 à 14:20:15  profilanswer
 

n°377936
xWillow
Posté le 30-04-2003 à 11:55:10  profilanswer
 

dans polynome.h c'est
extern int saisi(struct Scoef);


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Programme sur les polynomes !

 

Sujets relatifs
Transformer un programme JAVA en fichier .EXE[Windows] Comment lancer un programme en tache de fond ? RESOLU
MySQL : sélection multi-consoles pour un programme de newsAide pour la CREATION d'un petit scripte ou programme
[JAVA] mettre du sons dans mon programmeLancer un programme à partir d'une page HTML
[C++Builder] Détecter si un programme (.exe) est déja lancé ? (code?)[c] Envoyer un mail avec un programme en c
lancer un programme vb compile en dll[PROBLEME] Besoin d'aide pour un petit programme basic
Plus de sujets relatifs à : Programme sur les polynomes !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR