Petite question char C++

Bonjour a ts et a tte,

ou est le problem ici ? je suis débutant
comment on fé l'appel a une fonction qui a char comme paraméthre ? on mé & ou * ??? aidé mw SVPPP

typedef struct polynome { char a;
struct polynome * sv;
}pol;

typedef pol * liste;

void ajouter(liste*l,char v) {
liste p; p=*l;
liste nouveau=(liste)malloc(sizeof(pol));
nouveau->a=v;
nouveau->sv=NULL;
if(*l==NULL)*l=nouveau;
else { while(p->sv!=NULL) p=p->sv;
p->sv=nouveau;
}
}

int main (){
int n,x,i,choix;
char v;
liste pile=NULL;

printf("\nCombien d'element contient le polynome : ");
scanf("%d",&n);
printf("\n");

for(i=0;i<n;i++) {
printf("Valeur=");
scanf("%s",v);
ajouter(&pile,v); // il se block ici d'aprés ce que j'ai testé
printf("say");
}
}

5 réponses

  1. Modérateur
    Le problème c'est que v n'a pas de valeur, tu dois faire scanf("%c\n",&v);
    La confiance n'exclut pas le contrôle
    0
    1. merci KX pour votre réponse, j lé correcté mé ça marche pas aussi ya 1 autre problem j pense ben voila mon programme

      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>

      int i;
      typedef struct myprojet { char a;
      struct polynome * sv;
      }pol;

      typedef pol * liste;

      //************** fonction ajouter structure a ma chaine ***************

      void ajouter(liste*l,char v) {
      liste p; p=*l;
      liste nouveau=(liste)malloc(sizeof(pol));
      nouveau->a=v;
      nouveau->sv=NULL;
      if(*l==NULL)*l=nouveau;
      else { while(p->sv!=NULL) p=p->sv;
      p->sv=nouveau;
      }
      }

      //******************* fonction afficher ma chaine *******************

      void afficher(liste l)
      {
      liste p=l;

      while(p!=NULL){
      printf("%c ",p->a);
      p=p->sv;
      }
      printf("\n");

      }

      //**************************** main***** *******************

      int main (){
      int n,x,i,choix;
      char v;
      liste pile=NULL;

      printf("\nCombien de chaine : ");
      scanf("%d",&n);
      printf("\n");

      for(i=0;i<n;i++) {
      printf("Valeur=");
      scanf("%c",&v);
      ajouter(&pile,v); // ici que j'ai le prob comment j'appel ?
      printf("il a entre ici");
      }
      afficher(pile);
      system("PAUSE");
      return 0;
      }

      Merci bqq
      0
      1. Modérateur
        Tu as défini liste comme étant *pol, tu as déjà un pointeur, ça ne sert donc à rien de passer en paramètre liste* à ajouter, liste suffit, du coup, tu auras ajouter(pile,v), mais il te faudra modifier ajouter...
        0
        1. merci bq ta raison mé ça marche pa aussi j c pa il é ou l prob :( pouvez vs m'aidé SVP
          0
          1. Modérateur
            Plusieurs problèmes :

            Ton type récursif doit s'appeller polynome ou myprojet à toi de choisir, mais pas les deux en même temps !

            De plus dans ton main, tu envoie liste pile = NULL comme paramètre de la fonction ajouter, il faut que tu initialises pile en mémoire pour pouvoir t'en servir !

            Enfin, rajoute \n à ton scanf : scanf("%c\n",&v);
            La confiance n'exclut pas le contrôle
            0