Petite question char C++

kribac Messages postés 148 Statut Membre -  
KX Messages postés 19031 Statut Modérateur -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  2. kribac Messages postés 148 Statut Membre 10
     
    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
  3. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
  4. kribac Messages postés 148 Statut Membre 10
     
    merci bq ta raison mé ça marche pa aussi j c pa il é ou l prob :( pouvez vs m'aidé SVP
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. KX Messages postés 19031 Statut Modérateur 3 020
     
    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