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
    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
    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
        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 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
            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