Pb avec la fonction scanf en C

Fermé
nico1984 - 11 nov. 2004 à 01:15
 nico1984 - 13 nov. 2004 à 01:22
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

3 réponses

Salut!

Un bout de code serait pas refus.
0
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
0
Guki > nico1984
11 nov. 2004 à 21:06
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.
0
ToutesGates
11 nov. 2004 à 22:17
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 !!!
0
avec un scanf, il faut vider le tampon.
fait des fflush(stdin); après chacun des scanf
0
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
0