Pb avec la fonction scanf en C

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

3 réponses

  1. Guki
     
    Salut!

    Un bout de code serait pas refus.
    0
    1. nico1984
       
      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
      1. Guki > 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.
        0
  2. ToutesGates
     
    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
  3. yomip
     
    avec un scanf, il faut vider le tampon.
    fait des fflush(stdin); après chacun des scanf
    0
    1. nico1984
       
      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