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
A voir également:
- Pb avec la fonction scanf en C
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Mise en forme conditionnelle avec fonction si - Guide
3 réponses
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 !!!
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
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
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