Se connecter / S'enregistrer
Votre question

Problem:Exercice En Programmation C

Tags :
  • element
  • Programmation
Dernière réponse : dans Programmation
29 Avril 2011 01:49:59

Bonjour,
j'ai crée une biblihothèque "Liste.h" et quand je fait appel à la fonction "supr_oc" qui suprime les occurences d'un élement entrer dans la liste alors la fonction retourne un erreur c'est ça le code source alors aider moi merci d'avance :
  1. typedef struct cellule{
  2. int x;
  3. cellule * suiv;
  4. }cellule;
  5. //----------------------------saisi entète de liste-----------------------------
  6. cellule * saisi_entete(cellule *l){
  7. cellule * nouv;
  8. nouv=(cellule*)malloc(sizeof(cellule));
  9. printf("entrer la cellule 1 de la liste\n");
  10. scanf("%d",&(nouv->x));
  11. nouv->suiv=l;
  12. l=nouv;
  13. return l;
  14. }
  15. //----------------------------verification si la liste est vide-----------------
  16. int vevide(cellule *l){
  17. if(l=NULL){
  18. return 0;
  19. }else {return 1;}
  20. }
  21. //----------------------------saisi fin de la liste ----------------------------
  22. cellule * saisi_fin(cellule *l){
  23. cellule *p,*nv;
  24. if(vevide(l)==0){
  25. l=saisi_entete(l);
  26. }else{
  27. nv=(cellule*)malloc(sizeof(cellule));
  28. p=l;
  29. while(p->suiv!=NULL){
  30. p=p->suiv;
  31. }
  32. p->suiv=nv;
  33. nv->suiv=NULL;
  34. printf("entrer lentier a ajouter a la fin:");
  35. scanf("%d",&(nv->x));}
  36. return l;
  37. }
  38. //--------------------------------Taille De la Liste----------------------------
  39. int taille(cellule * l){
  40. int nb=1;
  41. cellule *p;
  42. p=l;
  43. while(p->suiv!=NULL){
  44. nb++;
  45. p=p->suiv;
  46. }
  47. return nb;
  48. }
  49. //-----------------------------saisie position----------------------------------
  50. cellule * saiaie_position(cellule * l){
  51. int pos,i=1,ta;
  52. cellule *p;
  53. cellule *nv=(cellule *)malloc(sizeof(cellule));
  54. p=l;
  55. ta=taille(l);
  56. do{
  57. printf("Entrer la position de saisi entre [2..%d]:\n",ta);
  58. scanf("%d",&pos);
  59. }while(pos<1 || pos>ta);
  60. if(pos==1){
  61. l=saisi_entete(l);
  62. }else if(pos>ta){
  63. l=saisi_fin(l);
  64. }else{
  65. printf("Entrer l''element à saisi \n");
  66. scanf("%d",&(nv->x));
  67. for(i=1;i<pos-1;i++){
  68. p=p->suiv;
  69. }
  70. nv->suiv=p->suiv;
  71. p->suiv=nv;
  72. }
  73. return l;
  74. }
  75. //----------------------------Suppression debut---------------------------------
  76. cellule * supr_deb(cellule *l){
  77. cellule *p;
  78. p=l;
  79. if(l==NULL){l=NULL;}else if(l->suiv==NULL){l=NULL;free(p);}else{
  80.  
  81. l=l->suiv;
  82. free(p);}
  83. return l;
  84. }
  85. //------------------------------Supression Fin----------------------------------
  86. cellule * supr_fin(cellule *l){
  87. cellule * p,*p1;
  88. p=l;
  89. if(l==NULL){l=NULL;
  90. }else
  91. if(l->suiv==NULL){
  92. l=NULL;
  93. free(p);
  94. }else{
  95. while(p->suiv!=NULL){
  96. p1=p;
  97. p=p->suiv;
  98. }
  99. p1->suiv=NULL;
  100. free(p);
  101. }
  102. return l;
  103. }
  104. //-------------------------------Suppression Pos--------------------------------
  105. cellule * supr_pos(cellule *l,int pos,int ta){
  106. int i;
  107. cellule *p,*p1;
  108. p=l;
  109. p1=p;
  110. if(pos==1){l=supr_deb(l);}else if(pos==ta){l=supr_fin(l);}else{
  111. for(i=1;i<pos;i++){
  112. p1=p;
  113. p=p->suiv;
  114. }
  115. p1->suiv=p->suiv;
  116. free(p);}
  117. return l;
  118. }
  119. //-------------------------------Suppression occurance--------------------------
  120. cellule * supr_ocu(cellule *l){
  121. int a,ta,i;
  122. cellule *p;
  123. p=l;
  124. ta=taille(l);
  125. printf("entrer lelement a supprimer :\n");
  126. scanf("%d",&a);
  127. while(p->suiv!=NULL){
  128. while(p->x==a){
  129. p=supr_deb(p);
  130. }
  131. p=p->suiv;
  132.  
  133. }
  134. return l;
  135.  
  136. }
  137. //----------------------------affichage de liste--------------------------------
  138. void affich(cellule *l){
  139. cellule *t=l;
  140. while(t!=NULL){
  141. printf("%d||",t->x);
  142. t=t->suiv;
  143. }
  144. }


Configuration: Windows Vista / Firefox 3.6.16/Borland C++

Autres pages sur : problem exercice programmation

29 Avril 2011 19:38:39

ou sont votre aides ?? :/ 
m
0
l
a b L Programmation
29 Avril 2011 20:17:12

Pas d'info sur l'erreur, pas d'indentation et pas de commentaire, alors ça donne pas envie de lire.
m
0
l
Contenus similaires
30 Avril 2011 23:44:11

c'est trés gentil de ta part de repondre à ma question :/ ////
m
0
l
a c 232 L Programmation
1 Mai 2011 01:03:29

Ce qu'il veut dire c'est que tu devrais faire ce qu'il te dit, et que ça lui donnera envie de t'aider...
Parce que là, ton code est difficilement lisible, on ne sait quelle est l'erreur, du coup, personne n'a envie de perde du temps à fouiller tes 144 lignes à comprendre ce qui se passe et voir où est-ce qu'il peut y avoir une erreur.
m
0
l
2 Mai 2011 13:30:34

je sais monsieur.. mais je suis nouveau sur ce forum .. et je sais pas que c'était obligatoir d'indiquer l'erreur pasque j'ai participer dans autres forum et j'ai pas réçus c'est type de reponses.. alors la moindre d choses qu'il a fallu le faire de répondre à ma question aprés ts ce qu'il a dit dés le début.. entt ca merci je respecte ts enfin .. bye
m
0
l
2 Mai 2011 13:32:01

et sava j'ai su le problem et je l'ai réparer ts seul . slm
m
0
l
a c 232 L Programmation
2 Mai 2011 14:23:38

T'es sur de ce que tu dis ?
Parce que j'ai retrouvé ton message sur 5 autres forums différents:
  • http://forum.hardware.fr/hfr/Programmation/C/probleme-p...
    Et on te répond:
    Citation :
    [traduction en français]Je n'ai pas pu les appeler dans le fichier principal.c[/traduction]
    Pourquoi ?
    Quel message d'erreur avez-vous ?
    Quel compilateur utilisez-vous ?
    Est-ce que vous avez créé un projet contenant tous les fichiers ".c" nécessaires ?
    Ou bien, est-ce que vous avez fait un makefile contenant ces fichiers ".c" ?


    Tu as réessayé sur le même forum 2 jours plus tard:
  • http://forum.hardware.fr/hfr/Programmation/C/aider-exer...
    Et on t'a encore envoyé chier
    Citation :
    Non mais tu parles vraiment comme ça dans la vie ? "Je n'arrive pas alors aider moi merci" ? Hein bein ...

    Donc, avant de venir ici demander de l'aide demande toi ce que fait chaque ligne du code de ta méthode. Parce que manifestement tu n'as pas les idées au clair ...


  • http://www.programmez.com/forum/viewtopic.php?t=2187
    Et on te répond:
    Citation :
    Bonjour,

    Merci de soigner la présentation des messages. Des caractères trop gros et un code non formaté le rendent illisible, et cela risque fort de décourager tous ceux qui voudraient t'aider


    Et puis il y a aussi:
  • http://www.forumfr.com/sujet420550-aider-moi-sur-un-exe...
    Où tu n'as aucune réponse.

    Il n'y a que developpez qui t'a répondu bien gentillement:
  • http://www.developpez.net/forums/d1073184/c-cpp/c/probl...
    Et encore ils t'ont dit d'utiliser les balises code (que j'ai rajouté sur ton message), et ils t'ont dit d'indiquer là où ça plantait.


    Comme quoi...
    m
    0
    l
    2 Mai 2011 15:02:05

    j'ai dit "je l'ai réparré tous seul" et si tu me faire mentir je te donne le code que j'ai fait ts seul qui est different à ce qu'il m'a dit le frère dans dévéloppez:
    m
    0
    l
    2 Mai 2011 15:02:37

    voiçi mon effort mr !!!
    typedef struct cellule{
    int x;
    cellule * suiv;
    }cellule;
    //----------------------------saisi entète de liste-----------------------------
    cellule * saisi_entete(cellule *l){
    cellule * nouv;
    nouv=(cellule*)malloc(sizeof(cellule));
    printf("entrer la cellule 1 de la liste\n");
    scanf("%d",&(nouv->x));
    nouv->suiv=l;
    l=nouv;
    return l;
    }
    //------------------------------------------------------------------------------
    cellule * saisi_entete2(cellule *l,int a){
    cellule * nouv;
    nouv=(cellule*)malloc(sizeof(cellule));
    nouv->x=a;
    nouv->suiv=l;
    l=nouv;
    return l;
    }
    //----------------------------verification si la liste est vide-----------------
    int vevide(cellule *l){
    if(l==NULL){
    return 0;
    }else {return 1;}
    }
    //----------------------------saisi fin de la liste ----------------------------
    cellule * saisi_fin(cellule *l){
    cellule *p,*nv;
    if(vevide(l)==0){
    l=saisi_entete(l);
    }else{
    nv=(cellule*)malloc(sizeof(cellule));
    p=l;
    while(p->suiv!=NULL){
    p=p->suiv;
    }
    p->suiv=nv;
    nv->suiv=NULL;
    printf("entrer lentier a ajouter a la fin:");
    scanf("%d",&(nv->x));}
    return l;
    }
    //--------------------------------Taille De la Liste----------------------------
    int taille(cellule * l){
    int nb=1;
    cellule *p;
    p=l;
    while(p->suiv!=NULL){
    nb++;
    p=p->suiv;
    }
    return nb;
    }
    //-----------------------------saisie position----------------------------------
    cellule * saiaie_position(cellule * l){
    int pos,i,ta;
    cellule *p;
    cellule *nv=(cellule *)malloc(sizeof(cellule));
    p=l;
    ta=taille(l);
    do{
    printf("Entrer la position de saisi entre [2..%d]:\n",ta);
    scanf("%d",&pos);
    }while(pos<1 || pos>ta);
    if(pos==1){
    l=saisi_entete(l);
    }else if(pos>ta){
    l=saisi_fin(l);
    }else{
    printf("Entrer l''element à saisi \n");
    scanf("%d",&(nv->x));
    for(i=1;i<pos-1;i++){
    p=p->suiv;
    }
    nv->suiv=p->suiv;
    p->suiv=nv;
    }
    return l;
    }
    //----------------------------Suppression debut---------------------------------
    cellule * supr_deb(cellule *l){
    cellule *p;
    p=l;
    if(l==NULL){return l;}else if(l->suiv==NULL){l=NULL;free(p);return l;}else{
    l=l->suiv;
    free(p);
    return l;
    }
    }
    //------------------------------Supression Fin----------------------------------
    cellule * supr_fin(cellule *l){
    cellule * p,*p1;
    p=l;
    if(l==NULL){l=NULL;
    }else
    if(l->suiv==NULL){
    l=NULL;
    free(p);
    }else{
    while(p->suiv!=NULL){
    p1=p;
    p=p->suiv;
    }
    p1->suiv=NULL;
    free(p);
    }
    return l;
    }
    //-------------------------------Suppression Pos--------------------------------
    cellule * supr_pos(cellule *l,int pos,int ta){
    int i;
    cellule *p,*p1;
    p=l;
    p1=p;
    if(pos==1){l=supr_deb(l);}else if(pos==ta){l=supr_fin(l);}else{
    for(i=1;i<pos;i++){
    p1=p;
    p=p->suiv;
    }
    p1->suiv=p->suiv;
    free(p);}
    return l;
    }
    //-------------------------------Suppression occurance--------------------------
    cellule * supr_ocu(cellule *l){
    int a,ta,i;
    cellule *p,*pr,*ps,*temp;
    printf("entrer lelement a supprimé:\n");
    scanf("%d",&a);
    p=l;
    ta=taille(l);
    while(p->suiv!=NULL){
    if(p->x==a && p==l){
    l=supr_deb(l);
    p=l;
    }
    if(p->x!=a){
    pr=p;
    p=p->suiv;
    }
    if(p!=l && p->x==a && p->suiv!=NULL){
    pr->suiv=p->suiv;
    ps=pr->suiv;
    temp=p;
    free(temp);
    p=ps;
    }
    }
    if(p->x==a && p->suiv==NULL){
    l=supr_fin(l);
    }


    return l;

    }
    //----------------------------Recherche Entier pos------------------------------
    int recherche_pos(cellule * l ,int a){
    int ta,i=1,n;
    cellule *p;
    p=l;
    ta=taille(l);
    while(p->suiv!=NULL && p->x!=a){
    i++;
    p=p->suiv;
    }
    if(i>ta){
    printf("nexiste pas");
    n=0;
    }
    else
    {
    if(p->x==a)
    {n=i;}

    }
    return n;
    }
    //----------------------------affichage de liste--------------------------------
    void affich(cellule *l){
    cellule *t=l;
    while(t!=NULL){
    printf("%d||",t->x);
    t=t->suiv;
    }
    }
    //------------------------------Intersection de deux liste----------------------
    cellule * inter_lst(cellule *l, cellule *l1){
    cellule *p,*k=NULL;
    int a;
    p=l;
    while(p->suiv!=NULL){
    a=p->x;
    if(recherche_pos(l1,a)!=0){
    k=saisi_entete2(k,a);
    }
    p=p->suiv;
    }
    if(p->suiv==NULL){
    a=p->x;
    if(recherche_pos(l1,a)!=0){
    k=saisi_entete2(k,a);
    }
    }
    return k;
    }
    //--------------------------------------------------------------------------------Insertion d'un Liste 1 --------------------------------------------------
    cellule * saisi_l(cellule *l){
    int u,a,x;
    do{
    l= saisi_entete(l);
    printf("voulez vous continuer 0/1 \n");
    scanf("%d",&u);
    }while(u==1);
    affich(l);
    printf("\n");
    l=saisi_fin(l);
    affich(l);
    printf("\n");
    l=saiaie_position(l);
    affich(l);
    printf("\n");
    l=supr_deb(l);
    affich(l);
    printf("\n");
    l=supr_fin(l);
    affich(l);
    printf("\n");
    l=supr_ocu(l);
    affich(l);
    printf("\n");
    printf("entrer le entier a rechercher la position:\n");
    scanf("%d",&a);
    x=recherche_pos(l,a);
    printf("dan la position: %d\n",x);
    return l;}
    m
    0
    l
    2 Mai 2011 15:03:32

    et si tu trouve quelque chose que j'ai copier de Dévéloppez comme vous l'avez dit ou d'autre forum que j'ai demander d'aide alors je me bouche !! merde c'est pas gentil de tt ça :/ 
    m
    0
    l
    a c 232 L Programmation
    2 Mai 2011 16:31:21

    Je parlais du fait que tu disais qu'on était les seuls à t'avoir fait ce genre de remarques, que les autres forums avaient bien voulu t'aider, blablabla...
    Alors que sur les 5 autres messages, y'en a 3 qui t'ont envoyé chier, 1 où personne t'a pas répondu, et 1 où on t'a répondu en te faisant comprendre qu'il faudrait quand même faire des efforts.

    Après que t'aies réussi tout seul, ça je m'en moque, tant mieux pour toi :) 
    Mais essayer de nous faire passer pour des "méchants" qui ne veulent pas te répondre, alors que tu t'exprimes n'importe comment, que tu colles du code sans mettre de balises ni indenter ton code, que tu n'expliques pas ton problème/erreur; et que tu attends agressif qu'on te réponde, bah non, ça c'est pas possible.
    m
    0
    l
    a b L Programmation
    2 Mai 2011 20:35:45

    Oui, nos réponses n'avaient que pour vocation à t'inciter à donner plus d'informations sur ton problème (d'autant que sous borland tu peux faire du debug facilement et indiquer où le crash se trouve).
    Pour un code aussi simple, les erreurs se trouvent rapidement, alors je n'ai pas envie d'y passer 5 min juste pour analyser ton code.

    Ps: au moins, tu donnes le code, ce qui n'est pas donné à tout le monde... :) 
    m
    0
    l
    2 Mai 2011 20:51:32

    bah non mon ami je veux pas dire que "vous ètes méchants" je vous jur que ce n'est pas vrai et ce que c'est pas ça ce que j'ai voulu.. mais la reponse de notre ami ne m'a pas plu d tt ..
    entt ca laiss tombé et merci .. dsl si jété un peut dur lol :) 
    m
    0
    l
    Tom's guide dans le monde
    • Allemagne
    • Italie
    • Irlande
    • Royaume Uni
    • Etats Unis
    Suivre Tom's Guide
    Inscrivez-vous à la Newsletter
    • ajouter à twitter
    • ajouter à facebook
    • ajouter un flux RSS