Pb avec la fonction scanf en C
nico1984
-
nico1984 -
nico1984 -
Bonjour à tous,
Je suis en train de faire un programme en C et j'ai un problème avec la mise à jour d'un scanf en C. Je dois saisir des monomes de la forme aX^i et lorsque je met 0X^i le scanf n'est pas pris en compte, il conserve en fait les anciennes valeur de la variable alors qu'avec tous les autres nombres ca marche sans pb.
Je n'arrive pas à trouver de solution.
Si quelqu'un saurait résoudre ce problème je le remercie par avance.
@+
Nico1984
Je suis en train de faire un programme en C et j'ai un problème avec la mise à jour d'un scanf en C. Je dois saisir des monomes de la forme aX^i et lorsque je met 0X^i le scanf n'est pas pris en compte, il conserve en fait les anciennes valeur de la variable alors qu'avec tous les autres nombres ca marche sans pb.
Je n'arrive pas à trouver de solution.
Si quelqu'un saurait résoudre ce problème je le remercie par avance.
@+
Nico1984
3 réponses
-
-
Salut
oui tu as raison. Je te transmet la fonction qui a ce probleme ainsi que la définiton des variables globales.
Voici :
typedef struct {
float coeff;
char variable;
int degre;
}monome;
monome tab [50];
monome m;
int lecture ()
{
char reponse;
int i,j;
i = 0;
j = 0;
printf("Entrez le coefficient du monome de degre 0 : ");
scanf("%f",&(m.coeff));
if (m.coeff != 0)
{
m.variable = 'X';
m.degre = 0;
tab[i]=m;
printf(" %g%c^%i ",tab[i].coeff,tab[i].variable,tab[i].degre);
i = i + 1;
j = j + 1;
}
printf("Entrez le coefficient du monome de degre 1 : ");
scanf("%f",&(m.coeff));
if (m.coeff != 0)
{
m.variable = 'X';
m.degre = 1;
tab[i]=m;
printf(" %g%c^%i ",tab[i].coeff,tab[i].variable,tab[i].degre);
i = i + 1;
j = j + 1;
}
printf("\nVoulez-vous encore entrer un monome (o/n) ? ");
getchar();
scanf("%c",&reponse);
while (reponse == 'o')
{
printf("Entrez le %ieme monome (de la forme aX^i): ",i+1);
scanf("%f%c^%i",&(m.coeff),&(m.variable),&(m.degre)); //c'est ici le pb quand on rentre 0X^3 par exemple
if (m.coeff != 0)
{
tab[i]=m;
printf(" %g%c^%i ",tab[i].coeff,tab[i].variable,tab[i].degre);
i = i + 1;
}
//getchar();
printf("\nVoulez-vous encore entrer un monome (o/n) ? ");
getchar();
scanf("%c",&reponse);
}
return i;
}
Merci pour ton aide.
Nico1984- Pour être honnête je le trouve assez bizarre ce programme, semi linéaire semi itératif. Pourquoi faire un tableau de stucture puis écrire dans une structure unitaire au lieu d'écrire directement dans le tableau? A mon avis tu devrais l'écrire en 100 % itératif écrire directement dans le tableau ça fera du code plus court et plus simple à comprendre que ce que tu proposes à présent.
-
-
Il le semble que virer le ^ dans
scanf("%f%c^%i",&(m.coeff),&(m.variable),&(m.degre));
devrait suffire.
D'ailleurs, n'est d'aucun intérêt de demander à l'utilisateur d'écrire
le caractère du monome !
un simple
scanf("%f%d", &(m.coeff), &(m.degre));
serait plus seyant !!! -
-
Merci a tous pour vos réponse.
Yompi je vais essayer de vider le tampon et je pense en effet que ca devrait marché.
A propos de mon code un peu bizarre c'est en fait qu'une partie afin de réaliser la dérivée k-ieme d'un polynome. c'est pour cela qu'il n'est pas super compréhensible mais merci à tous pour votre aide.
Nico1984
-