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 :

modification d'un element dans un tableau de structure


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 122
    Par défaut modification d'un element dans un tableau de structure
    bonjour,
    je doit modifier le salaire d'un employé ,alors le programme il toune et fait l'insertion des employés mais au moment de la modification il m'affiche entrez le nom entrze le salaire sans faire de comparaison sans rien!!!!!
    si vous pouvez m'aider merci beaucoup.
    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
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    typedef struct EMP { char nom[10];
    		     int salaire;};
     
       function(  int n)
          {
             struct EMP x[4];
             EMP temp;
             int  i,j ,min;
             n=3;
     
            for(i=0;i<n;i++)
                {
    	printf("entrez le nom de l'employe: ");
    	scanf("%s",x[i].nom );
    	printf("entrze le salaire: ");
    	scanf("%d",&x[i].salaire);
    	printf("le salaire de %s est %d.\n", x[i].nom, x[i].salaire);
                }
     
               return 0;
               }
     
        modifier(struct EMP *x) {
     
            int i, n=3, c;
           char *nom_mod ;
           printf("entrez le nom");
           scanf("%s",nom_mod);
     
          for(i=0;i<n;i++)
                 {
              if (strcmp(x[i].nom,nom_mod)==0)
                { 
                 break;}
                }
                  if(i==n)
                 printf("le nom n'existe pas");
                 else{
         printf("entrez le nouveau salaire");
         scanf("%d",&c);
         x[i].salaire=c;}
     
            return 0;
                  }
     
     
    	    int main(void) {
    	       struct EMP *x;
    	       int n;
    	       function(n);
    	       modifier(x);
    	       return 0;}

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Bonjour,

    Quelques remarques sur ton code :

    - Il n'est pas indenté et cela le rend illisible
    - Si une fonction retourne un entier, on l'écrit

    devient donc

    En compilant avec -Wall -Wextra -O2, on découvre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    nimp.c: In function 'function':
    nimp.c:14: warning: unused variable 'min'
    nimp.c:14: warning: unused variable 'j'
    nimp.c:13: warning: unused variable 'temp'
    nimp.c: In function 'modifier':
    nimp.c:34: warning: 'nom_mod' is used uninitialized in this function
    nimp.c: In function 'main':
    nimp.c:63: warning: 'n' is used uninitialized in this function
    nimp.c:64: warning: 'x' is used uninitialized in this function
    Les lignes used uninitialized sont très graves.

    - On n'utilise pas scanf mais fgets.
    - On alloue la mémoire lorsqu'on veut récupérer une entrée d'un utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        char *nom_mod ;
        printf("entrez le nom");
        scanf("%s",nom_mod);
    - On ne modifie jamais un paramètre, cela pose souvent des problèmes ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    int function(  int n)
    {
        struct EMP x[4];
        EMP temp;
        int  i,j ,min;
        n=3;
    - Une fonction ne peut jamais retourner une variable déclarer localement (je pense à ton x dans ta fonction function)

    Jc

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 122
    Par défaut
    j'ai corrigé les erreurs dans mon programme et il marche merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification d'une valeur dans un tableau
    Par User Name dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2008, 20h53
  2. Comment faire afficher la position d'un element dans un tableau
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 04/11/2006, 12h44
  3. [VB6] Nombre d'element dans un tableau ?
    Par belfaigore dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 20/09/2006, 22h23
  4. Réponses: 1
    Dernier message: 12/04/2006, 13h52
  5. [langage] Compter des éléments dans un tableau
    Par helene22500 dans le forum Langage
    Réponses: 29
    Dernier message: 23/05/2005, 11h38

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