Pb avec les format dans printf
Résolu
Bonjour,
Voila je dois concocter un petit programme sur les polynômes j'en suis à l'affichage du polynome que je souhaite par exemple 6x^4 - 2x^3 + x - 34 voilà donc pour cela j'ai écrit ce code :
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define DMAX 50 /*degré maximal du polynôme*/
typedef float T_Vect [DMAX+1];
typedef struct {int D; T_Vect T;} T_Poly;
void Affiche_Poly (T_Poly P)
{
int I;
char signe;
printf("(");
if (abs(P.T[P.D]==1))
printf("x^%d",P.D);
else(P.T[P.D]!=0.);
{
if (P.T[P.D]<0.)
{
signe='-';
printf("%c %2lfx^%d",signe,abs(P.T[P.D]),P.D); /*A ce niveau*/
}
else printf("%2lfx^%d",abs(P.T[P.D]),P.D); /*A ce niveau */
}
for (I=P.D-1;I>=0;I--)
{
if (abs(P.T[I])==1)
printf("x^%d",I);
if (P.T[I] < 0.)
{
signe='-';
printf("%c%2lfx^%d",signe,abs(P.T[I]),I); /*a ce niveau */
}
else
printf("%2lfx^%d",abs(P.T[I]),I); /*a ce niveau*/
}
printf(")\n");
}
int main (void)
{
T_Poly P;
P=Lire_Poly();
printf("P(x)=");
Affiche_Poly(P);
return 0;
}
Mais au niveau des lignes marquès (a ce niveau) le compilateur renvoie ce message d'errueurs
projetme.c: In function ‘Affiche_Poly’:
projetme.c:73: warning: format ‘%2lf’ expects type ‘double’, but argument 3 has type ‘int’
projetme.c:75: warning: format ‘%2lf’ expects type ‘double’, but argument 2 has type ‘int’
projetme.c:85: warning: format ‘%2lf’ expects type ‘double’, but argument 3 has type ‘int’
projetme.c:89: warning: format ‘%2lf’ expects type ‘double’, but argument 2 has type ‘int’
Voila je dois concocter un petit programme sur les polynômes j'en suis à l'affichage du polynome que je souhaite par exemple 6x^4 - 2x^3 + x - 34 voilà donc pour cela j'ai écrit ce code :
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define DMAX 50 /*degré maximal du polynôme*/
typedef float T_Vect [DMAX+1];
typedef struct {int D; T_Vect T;} T_Poly;
void Affiche_Poly (T_Poly P)
{
int I;
char signe;
printf("(");
if (abs(P.T[P.D]==1))
printf("x^%d",P.D);
else(P.T[P.D]!=0.);
{
if (P.T[P.D]<0.)
{
signe='-';
printf("%c %2lfx^%d",signe,abs(P.T[P.D]),P.D); /*A ce niveau*/
}
else printf("%2lfx^%d",abs(P.T[P.D]),P.D); /*A ce niveau */
}
for (I=P.D-1;I>=0;I--)
{
if (abs(P.T[I])==1)
printf("x^%d",I);
if (P.T[I] < 0.)
{
signe='-';
printf("%c%2lfx^%d",signe,abs(P.T[I]),I); /*a ce niveau */
}
else
printf("%2lfx^%d",abs(P.T[I]),I); /*a ce niveau*/
}
printf(")\n");
}
int main (void)
{
T_Poly P;
P=Lire_Poly();
printf("P(x)=");
Affiche_Poly(P);
return 0;
}
Mais au niveau des lignes marquès (a ce niveau) le compilateur renvoie ce message d'errueurs
projetme.c: In function ‘Affiche_Poly’:
projetme.c:73: warning: format ‘%2lf’ expects type ‘double’, but argument 3 has type ‘int’
projetme.c:75: warning: format ‘%2lf’ expects type ‘double’, but argument 2 has type ‘int’
projetme.c:85: warning: format ‘%2lf’ expects type ‘double’, but argument 3 has type ‘int’
projetme.c:89: warning: format ‘%2lf’ expects type ‘double’, but argument 2 has type ‘int’
Configuration: Linux Firefox 3.5.4
2 réponses
-
Ce n'est pas avec 'printf' que tu as un problème, mais plutôt avec 'abs'.
Tu demandes d'afficher un 'double' et tu ne lui donnes qu'un entier (ce qui est bien ce que dit le compilateur). Utilise la fonction 'fabs' (double fabs(double)) et tout ira sans doute un peu mieux.
Bonne journée. -
Je te remercie tout marche niquel ....