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 :

Gérer une entreprise


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Gérer une entreprise
    salut tous le monde ,

    je suis entraine de faire un programme qui permet de gérer 3 employés dans une entreprise , l'ennoncée est la suivante :
    on dispose des informations sur suivants sur l'employés d'une entreprise:
    Nom, Prénom, Matricule, Date de naissance, salaire, définies les types suivants:
    EMPL: type structure capable de représenter un employé,
    EMPL t_[] : un type tableau composée d'élément de type EMPL

    1. Écrire une fonction qui recherche si l'employer x x x se trouve dans le tableau
    2. Écrire une fonction qui permet de calculer la masse (grande) salaire de l'entreprise
    3. Écrire une fonction qui affiche les informations relative au directeur (l'employer le mieux ) payé.

    je suis un débutant en c , j'ai besoin de vos aides je suis bloquer au début même, voici le code que j'ai fait :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct {
    	char nom [20];
    	char prenom [20];
    	int matricule ;
    	int date_naiss;
    	char fonction [20];
    	int salaire ;
     
    }  EMPL ;
     EMPL t_[3];
     
    void rech_empl()
      {
      	if (EMPL=T_EMPL) 
      	printf("employer a rechercher est:%s \n",EMPL);
      	else 
    	 printf (" \n");
    }
     
      int masse_salaire ()
      {
     
      }
      char affi_info()
      {
     
      }
     
     
     
    int main(int argc, char *argv[]) {
    	return 0;
    }

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 347
    Points : 42 814
    Points
    42 814
    Par défaut
    Bonjour et bienvenue sur le forum,

    Pour commencer utilises les balises code. (le # dans l'éditeur ).

    Ensuite, ta fonction main n’appelle rien, aucune de tes fonctions n'est exécutée

    1 Ton ébauche de fonction de recherche doit parcourir tous les enregistrements du tableau et comparer le champs nom.de ceux-ci, l te faut récupérer le nom de l'employé à rechercher.
    2 trouver la masse salariale, si c'est ça que tu veux (addition de tous les salaires) consiste à parcourir encore une fois tous les enregistrements et d'ajouter à une variable (mise à 0 avant le début de la boucle) la valeur de chaque "EMPL_.salaire"
    3 en partant du travail de 2, il suffit d'appliquer le même processus en utilisant une nouvelle variable à laquelle tu affecte la valeur du champ salaire parcouru uniquement si cette valeur est supérieure à son contenu actuel., tu en profites pour récupérer le nom

    Commences par remplir ton tableau avec des données pour pouvoir faire des tests.


    Ensuite comment tu fais si le nom dépasse 20 caractères ?

    Si tu as un nouvel employé, tu seras coincé. La méthode du tableau n'est donc pas bonne, mais commences déjà par faire fonctionner cette première version ce sera un début.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Pour commencer utilises les balises code. (le # dans l'éditeur ).

    Salut ,

    merci pour ton aide grâce a toi je un peu puis améliorer le code mais jusqu'à présent ya un petit problème au niveau de la comparaison question 1 , le suivant le code:

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct {
    	char nom [20];
    	char prenom [20];
    	int matricule ;
    	int date_naiss;
    	char fonction [20];
    	int salaire ;
     
    }  EMPL ;
     EMPL t_[3];
     
    void rech_empl()
      { int i;
      	for(i=0;i<3;i++){  
      	printf("Donnez les informations de l'employer N %d \n\n ",i+1);
      	printf("veillez entrer votre nom svp \n ");
         gets(t_[i].nom);
     	printf("votre prenom  svp \n");
     	gets(t_[i].prenom);
     	printf("tapez votre matricule \n");
     	scanf("%d",t_[i].matricule);
     	printf("quel est votre date de naissance \n");
     	scanf("%d%d%d",&t_[i].date_naiss,&t_[i].date_naiss,&t_[i].date_naiss);
     	printf("donnez votre fonction \n");
     	gets(t_[i].fonction);
     	printf("quel est votre salaire \n");
     	scanf("%d",&t_[i].salaire);}
     
    	for (i=0;i<3;i++){
    		printf("entrez le nom de l'employer a rechercherer \n");
    		scanf(t_[i].nom);
    		t_[i].nom == nom [20];
    		}
    		printf("employer %s se trouve dans le tableau \n",t_[i]);
    }
     
      void masse_salaire ()
      {	int i,massalaire;
    	massalaire=t_[0].salaire;
    	for (i=0;i<3;i++){
    		massalaire = massalaire + t_[i].salaire; massalaire=i;}
    		printf("la masse salaire de l'entreprise est %d \n";massalaire);
     
      	 }
      void affi_info()
      {
      	int i,M;
    	M = t_[0].salaire;
    	for (i=0;i<3;i++){
    		if(M > t_[i].salaire)
    		M = t_[i].salaire; M=i;
    			}
    		printf("l'employer le mieu payer est %s avec une salaire de %d \n",t_[i].nom,M);
    }
     
     
     
    void main(int argc, char *argv[]) {
    	rech_empl();
    	masse_salaire ();
    	affi_info();
     
    }

    concernant le nombre de caractère je le choisis en fonctions de nom que je mettrais donc pour ceux ci ya pas de problème .

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 347
    Points : 42 814
    Points
    42 814
    Par défaut
    1er point : une fonction a ... une fonction.

    Ne mélanges donc pas la récupération des informations et la recherche. Crée une fonction pour la saisie, et une autre pour la recherche. Tu verras que ton code sera beaucoup plus lisible.

    Ensuite, évites scanf, au profil de fgets. Si tu regardes la documentation de fgets, tu verras qu'il y a un paramètre pour limiter le nombre de caractères saisie ce qui t’évitera d'avoir un buffer overflow si tu saisie un nom de 21 caractères sur une emplacement prévu pour 20. Tu en profitera pour utiliser fgets également au lieu de gets.Attention consultes la doc de fgets.

    Petite remarque : tu vas avoir un problème ton champs date de naissance : scanf/fgets récupèrent une chaine de caractères, ta date de naissance est un champ int. Je ne te donnes pas la solution pour le moment, à toi de deviner.

    Reviens quand tu as corrigé.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    jusqu'a present je pas puis ,voila le code

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct {
    	char nom [20];
    	char prenom [20];
    	int matricule ;
    	int date_naiss;
    	char fonction [20];
    	int salaire ;
     
    }  EMPL ;
     EMPL t_[3];
     
    void saisi_empl()
      { int i;
      	for(i=0;i<3;i++){  
      	printf("Donnez les informations de l'employer N %d \n\n ",i+1);
      	printf("veillez entrer votre nom svp \n ");
        gets(t_[i].nom); // pour le fgets  quant je met fgets(nom, 20, stdin); indique q'il ya un probleme   
     	printf("votre prenom  svp \n");
     	gets(t_[i].prenom);
     	printf("tapez votre matricule \n");
     	scanf("%d",t_[i].matricule);
     	printf("quel est votre date de naissance \n");
     	scanf("%s%s%s",&t_[i].date_naiss,&t_[i].date_naiss,&t_[i].date_naiss); // ici je veut  recuperer sous format jj/mm/aaa 
     	printf("donnez votre fonction \n");
     	gets(t_[i].fonction);
     	printf("quel est votre salaire \n");
     	scanf("%d",&t_[i].salaire);}
     
    void rech_empl() {
     
    	for (i=0;i<3;i++){
    		printf("entrez le nom de l'employer a rechercherer \n");
    		gets(t_[i].nom);
    		t_[i].nom == EMPL.nom ; // il m'indique un probleme ici
    		}
    		printf("employer %s se trouve dans le tableau \n",t_[i]);
    } 
     
      void masse_salaire ()
      {	int i,massalaire;
    	massalaire=t_[0].salaire;
    	for (i=0;i<3;i++){
    		massalaire = massalaire + t_[i].salaire; massalaire=i;}
    		printf("la masse salaire de l'entreprise est %d \n",massalaire);
     
      	 }
      void affi_info()
      {
      	int i,M;
    	M = t_[0].salaire;
    	for (i=0;i<3;i++){
    		if(M > t_[i].salaire)
    		M = t_[i].salaire; M=i;
    			}
    		printf("l'employer le mieu payer est %s avec une salaire de %d \n",t_[i].nom,M);
    }
     
     
     
    void main {
    	saisi_empl();
    	rech_empl();
    	masse_salaire();
    	affi_info(); 
     
    }//ici aussi il me souligne je ne sais pas pour quoi

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 347
    Points : 42 814
    Points
    42 814
    Par défaut
    Indentes correctement ton code, tu aurais vu qu'il te manquais une accolade dans saisi_empl, j'ai aussi ajouté la déclaration de la variable i avec :
    La variable i déclarée dans rech_empl est locale à rech_empl, c'est la portée des variables, tu as du voir ça ou tu le verras. Pour que ta variable soit globale à tout le code,il aurait fallu la déclarer une seule fois en dessous de tes include. Mais il faut éviter de le faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t_[i].nom == EMPL.nom ; // il m'indique un probleme ici
    Tu m'étonnes. EMPL.nom n'est pas une variable donc n'existe pas. Relis la documentation de gets car la ligne au dessus ne sert à rien en l'état

    Cette ligne commentée, le code compile, c'est déjà mieux.

    Par contre à l'exécution : segfault. Vu le nombre de warning à la compilation et le code de saisi_empl, rien d'étonnant.

    // ici je veut recuperer sous format jj/mm/aaa
    Contentes-toi déjà de la récupérer en format chaîne sans l'analyser, l'intitulé de ton exercice ne gérant pas les dates.
    Si tu veux faire du rab, une fois ton exercice ok on verra.

    pour le fgets quant je met fgets(nom, 20, stdin); indique q'il ya un probleme
    Quel problème il t'indique ? peut-être lié aux problèmes de compilation actuels.

    T'as encore du boulot courage.

    PS :Le code ci-dessous, recopie du tien corrigé pour qu'il compile est mal indenté aussi, mais c'est du au copier-coller, dans mon IDE l'indentation est OK.
    Il faut éviter de laisser des warning dans un code, cela indique en général des erreurs de code.

    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct {
    	char nom [20];
    	char prenom [20];
    	int matricule ;
    	int date_naiss;
    	char fonction [20];
    	int salaire ;
     
    }  EMPL ;
     EMPL t_[3];
     
    void saisi_empl()
    { 
    int i;
     
      	for(i=0;i<3;i++)
      	{
    		printf("Donnez les informations de l'employer N %d \n\n ",i+1);
    		printf("veillez entrer votre nom svp \n ");
    		gets(t_[i].nom); // pour le fgets  quant je met fgets(nom, 20, stdin); indique q'il ya un probleme   
    		printf("votre prenom  svp \n");
    		gets(t_[i].prenom);
    		printf("tapez votre matricule \n");
    		scanf("%d",t_[i].matricule);
    		printf("quel est votre date de naissance \n");
    		scanf("%s%s%s",&t_[i].date_naiss,&t_[i].date_naiss,&t_[i].date_naiss); // ici je veut  recuperer sous format jj/mm/aaa 
    		printf("donnez votre fonction \n");
    		gets(t_[i].fonction);
    		printf("quel est votre salaire \n");
    		scanf("%d",&t_[i].salaire);
    	}
    }
     
    void rech_empl() 
    {
    int i; 
    	for (i=0;i<3;i++)
    	{
    		printf("entrez le nom de l'employer a rechercherer \n");
    		gets(t_[i].nom);
    		//t_[i].nom == EMPL.nom ; // il m'indique un probleme ici
    	}
    	printf("employer %s se trouve dans le tableau \n",t_[i]);
    } 
     
      void masse_salaire ()
      {	int i,massalaire;
    	massalaire=t_[0].salaire;
    	for (i=0;i<3;i++){
    		massalaire = massalaire + t_[i].salaire; massalaire=i;}
    		printf("la masse salaire de l'entreprise est %d \n",massalaire);
     
      	 }
      void affi_info()
      {
      	int i,M;
    	M = t_[0].salaire;
    	for (i=0;i<3;i++){
    		if(M > t_[i].salaire)
    		M = t_[i].salaire; M=i;
    			}
    		printf("l'employer le mieu payer est %s avec une salaire de %d \n",t_[i].nom,M);
    }
     
     
    int main() {
    	saisi_empl();
    	rech_empl();
    	masse_salaire();
    	affi_info();
    }
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    pour la récupération de la date de naissance sous format chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf("quel est votre date de naissance \n");
    scanf("%s",&t_[i].date_naiss);
    Il faut m expliquer comment je doit faire pour la fonction recherche pour le moment je fait comme sa sa m indique pas d'erreur, es ce que la fonction masse_salaire() et
    affi_info() sont correct puis que quant je compile en venant a leur niveau la fenêtre de l exécution disparait .

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 347
    Points : 42 814
    Points
    42 814
    Par défaut
    pour la récupération de la date de naissance sous format chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    printf("quel est votre date de naissance \n");
    scanf("%s",&t_[i].date_naiss);
    teste le code suivant :

    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
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct {
    	char nom [20];
    	char prenom [20];
    	int matricule ;
    	int date_naiss;
    	char fonction [20];
    	int salaire ;
     
    }  EMPL ;
     EMPL t_[3];
     
    int main()
    {
      printf("quel est votre date de naissance \n");
      scanf("%s",&t_[0].date_naiss);
      printf("valeur saisie : %s\n",t_[0].date_naiss);
    }
    Dis moi le résultat, et si c'est normal, et ensuite pourquoi.

    Il faut m expliquer comment je doit faire pour la fonction recherche pour le moment je fait comme sa
    Le code dans ta boucle :
    va comparer le contenu de t_[i].nom (remplacé pour chaque occurance de la boucle par 0,1,2) avec le contenu de .nom de l'entrée 4 du tableau qui en plus ne fait que 3 entrées, les entrées de ton tableau a 3 entrées sont numéroté à partir de 0.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    votre code pour la date de naissance quand je compile je saisi le nom , prénom,matricule au niveau
    de la date de naissance la fenêtre exécution disparait.

    Merci beaucoup pour l'aide que vous m'avez fournie .
    je m'inspirerais de vos explication pour corrigé les restes des erreurs.

  10. #10
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 347
    Points : 42 814
    Points
    42 814
    Par défaut
    Lances le code compilé dans un terminal, pour voir ce qui s'affiche.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. Etude de marché pour projet de création d'une entreprise
    Par melcom_dev dans le forum Société
    Réponses: 27
    Dernier message: 27/01/2014, 11h42
  2. Réponses: 6
    Dernier message: 13/12/2011, 21h54
  3. [dbase] Possibilité de gèrer une base via c++?
    Par WriteLN dans le forum C++
    Réponses: 6
    Dernier message: 08/11/2004, 18h27
  4. Gérer une barre d'outils
    Par Jean Claude BOULET dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2004, 23h54
  5. [ODBC][WINDOWS] gérer une base via ODBC
    Par narmataru dans le forum Windows
    Réponses: 2
    Dernier message: 19/12/2003, 14h36

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