IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

une fct modification qui ne fonctionne pas !


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 128
    Points : 51
    Points
    51
    Par défaut une fct modification qui ne fonctionne pas !
    salut
    j'ai une fct qui permet de modifier une opération (il s'agit des opérations de gestion d'une bibliothèque
    par exemple emprunt ,remise ...)
    pour cela je demande à l'utilisateur de taper le numéro de l'opération à modifier ,j'effectue une recherche
    et dés que je trouve le numéro correspondant j'affiche un menu comportant les diffèrents choix de modification(par modifier le numéro de l'opération , modifier le nom de l'opération ...)
    voici mon essai :
    tout d'abord les structures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    struct information_operation
      {
           char nom_operation[20];
           int num_operation;
            char date[12];
           char id_lecteur[50];
           char id_code_livre[50];
      };
     
    typedef struct operation 
      {
           struct information_operation inf_op;  //c une structure comprotant les informations .
           struct operation *suivant;
      }maillon;
    typedef maillon* liste ;




    et puis la fct modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    liste modification(liste l)
       {
              liste tmp=l;
              int temprairePourInt;
              char *temprairePourchaine;
              int numAmodifier,continue3=1,choix3;
           if(tmp==NULL)
               printf("la liste est vide ");
            else 
     
              { 
              {
                 printf("taper le numero de l'opération à modifier");
                 scanf("%d",&numAmodifier);
               }
            //cherchons l'opération qui corespond 
           while ((tmp->suivant!=NULL)&&(tmp->inf_op.num_operation!=numAmodifier))
               {
                  tmp=tmp->suivant;
               }
           if (tmp->suivant!=NULL)
               {
                   printf("la numero d'opération n'existe pas ");
                   return NULL;
               }
           else
               { 
                 system("cls"); 
           gotoxy(15,5);
           printf("Voulez vous modifier ?");
     
           gotoxy(20,7);
           printf("1.le nom de l'opération.");
     
           gotoxy(20,9);
           printf("2.le numéro de l'opération");
     
           gotoxy(20,11);
           printf("3.date");
     
     
           gotoxy(20,15);
           printf("4.l'id  de lecteur ");  
     
           gotoxy(20,17);
           printf("5.le code de livre  ");  
     
           gotoxy(20,19);
           printf("6.Quitter la modification  ");    
     
           printf("Taper votre choix:");
           scanf("%d",&choix3);
             switch(choix3)
          {
            case 1:
                 temprairePourchaine=(char *)malloc(sizeof(char)*strlen(tmp->inf_op.nom_operation)+1);
                 printf("taper le nouveau nom de l'opération(REMISEouEMPRUNT");
                 scanf("%s",temprairePourchaine);
                 strcpy(tmp->inf_op.nom_operation,temprairePourchaine);   
                       //continue3=0;  
                       break;
           case 2:
                 printf("taper le nouveau numero");
                 scanf("%d",&temprairePourInt);
                 tmp->inf_op.num_operation=temprairePourInt;
                       //continue3=0;  
                       break;
            case 3:
                   temprairePourchaine=(char *)malloc(sizeof(char)*strlen(tmp->inf_op.date)+1);
                   printf("taper le nouvelle date");
                   scanf("%s",temprairePourchaine);
                   strcpy(tmp->inf_op.date,temprairePourchaine);   
                       //continue3=0;      
                       break;  
             case 4:
                 temprairePourchaine=(char *)malloc(sizeof(char)*strlen(tmp->inf_op.id_lecteur)+1);
                 printf("taper le nouveau id lecteur");
                 scanf("%s",temprairePourchaine);
                 strcpy(tmp->inf_op.date,temprairePourchaine);
                      //continue3=0;      
                      break;
             case 5:
                temprairePourchaine=(char*)malloc(sizeof(char)*strlen(tmp->inf_op.id_code_livre)+1);
                printf("taper le nouveau id lecteur");
                scanf("%s",temprairePourchaine);
                strcpy(tmp->inf_op.id_code_livre,temprairePourchaine);
                     //continue3=0;   
                     break;
             case 6:
                      break;
             default :
             gotoxy(20,16);
                printf("attenction ");        
     
            } 
    }while(choix3!=1); 
    }
    }







    mais ou' est le probléme?!
    en fait il y a deux problémes lors de l'exécution:
    si j'ajoute une nouvelle opération et je le modifie et puis aprés la mification j'affiche le'opération ,le exécutable se plante !
    autre problème ,lorsque je donne un numero d'opération qui n'existe pas ,le menu s'affiche comme si ce numéro existe !!!!

    merci de m'aidez à compiler mon programme corréctement !

    A+

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    Salut je ne peut pour l'instant pas te dire pourquoi ton code ne marche pas en revanche je trouve étonant que tu aille dans le cas ou l'opération n'existe pas lorsque ta structure tmp n'est pas nulle???

    while ((tmp->suivant!=NULL)&&(tmp->inf_op.num_operation!=numAmodifier))
    //ici tu cherche et tu sort quand la structure est nulle donc si j'ai bien compris lorsque la commande n'existe pas
    //

    {
    tmp=tmp->suivant;
    }
    if (tmp->suivant!=NULL)
    //et ici tu affiche que l'opération n'existe pas justement quand la structure //n'est pas null
    {
    printf("la numero d'opération n'existe pas ");
    return NULL;
    }

    Pour moi il ya déjà la un petit problème

  3. #3
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Le problème se situe à ce niveau là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strlen(tmp->inf_op.nom_operation
    Comme apparemment 'nom_operation' ne vaut rien avant le scanf, le strlen retournera 0.

    Sinon même remarque que clemnantes.

Discussions similaires

  1. Une boucle While qui ne fonctionne pas
    Par seremei dans le forum Langage
    Réponses: 6
    Dernier message: 25/10/2012, 11h33
  2. Réponses: 2
    Dernier message: 16/03/2010, 09h49
  3. Une instruction simple qui ne fonctionne pas
    Par Claude_Azoulai dans le forum VB.NET
    Réponses: 3
    Dernier message: 14/02/2010, 17h08
  4. requête dont la modification qui ne fonctionne pas
    Par dj_techno dans le forum WinDev
    Réponses: 3
    Dernier message: 02/04/2009, 15h10
  5. une boucle for qui ne fonctionne pas
    Par piffeo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/11/2008, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo