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 :

Pb de structures


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut Pb de structures
    Bonjour je suis en BTS informatique et j'ai un petit problème avec mon programme. Celui ci permet la gestion des pistes d'un aéroport, la gestion des employés et des statistiques.
    J'ai créé 2 structures piste & employe que voici:

    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
     
    	//DECLARATION DES TYPES DE STRUCTURES
    	typedef struct piste
    	{
    		int code_piste, nb_empl;
    		char designation[20], statut[20], type_vol[20];
    	}piste;
     
    	typedef struct employe
    	{
    		int code_employe, code_piste,nb_empl;
    		char nom[15], prenom[15], tel[11], fonction[20];
    		piste element;
    	}employe;
     
    	//DECLARATIONS GENERALES
     
    	//TABLEAUX
    	piste tab_piste[100];
    	employe tab_employe[100];
     
     
    	//TYPES
    	piste tempiste;
    	employe tempemploye;
     
    	//ENTIERS
    	int i, j, k, code, rstS, rstT, rstF;
    	int choix, choix_p, choix_m, choix_s, choix_e, choix_d;
    	int nb_piste, nb_employe;
     
    	//BOOLEEN
    	int trouve;		// 0=FALSE & 1=TRUE
     
    	//REELS
    	float calc, moy;
    	float nbp,nbe;
     
     
    case 4:	// NOMBRE D'EMPLOYE PAR STATUT
    {
    //COMPTER LE NOIMBRE D'EMPLOYES PAR PISTE
    	system("cls");
    	for(i=0;i<nb_piste;i++)
    	{
    		tab_piste[i].nb_empl=0;
    		for(j=0;j<nb_employe;j++)
    		{
    		       if(tab_piste[i].code_piste==tab_employe[j].code_piste)					      tab_piste[i].nb_empl++;
    		}
    	}
     
    	// TRIER LES EMPLOYES PAR PISTES
    	for(j=0;j<nb_piste-1;j++)
    	{
    		for(k=j+1;k<nb_piste;k++)
    		{
    			if(tab_piste[j].nb_empl<tab_piste[k].nb_empl)
    			{
    				tempiste=tab_piste[j];										tab_piste[j]=tab_piste[k];
    											tab_piste[k]=tempiste;
    			}
    		}		
            }
     
    	// ANALYSER LES STATUTS
     
    	rstS=nb_piste;
     
    	for(i=0;i<nb_piste;i++)
    	{
    		for(j=i+1;j<rstS;j++)
    		{
     			if(strcmp(tab_piste[i].statut,tab_piste[j].statut)==0)
    			{	           tab_piste[i].nb_empl=tab_piste[i].nb_empl+tab_piste[j].nb_empl;
    				tempiste=tab_piste[j];
    				tab_piste[j]=tab_piste[nb_piste];
    				tab_piste[nb_piste]=tempiste;
    				rstS--;
    			}
    		}
    	}
     
    	printf("Il y a donc:\n");
    	for(i=0;i<rstS;i++)
    	{
    		printf("\nStatut:%s\n",tab_piste[i].statut);
    		printf("Nombre d'employes:%d\n",tab_piste[i].nb_empl);
    	}system("pause");
    }break;
    Le probleme que je cherhce a resoudre: compter le nombre d'employe par statut


    Le resultat de ce petit passage (sur 950lignes de codes) est kil me pren en compte n'importe quel nombre au moment de l'affichage final et que la variable rstS ne cesse de varier au fur et a mesure que l'on execute le cas...

    Merci de votre aide
    Mélanie

  2. #2
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Merci de
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut

    Que veux-tu dire par nombre d'employés par statut ?
    Cumul du nombre d'employés sur chaque piste possédant un certain status ?

    PS: Décompose plus ton code. Fais des fonctions.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Médinoc

    Que veux-tu dire par nombre d'employés par statut ?
    Cumul du nombre d'employés sur chaque piste possédant un certain status ?
    Oui chaque piste possede un statut et un certain nombre d'employes, il faut que j'arrive a compter le nombre d'employes qu'il y ai par statut et afficher tous les statuts et le nombres d'employes qui sont concernées

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut
    Déjà, puisque tu mémorises le nombre d'employés dans la structure piste, fais-toi une fonction qui compte le nombre d'employés sur une piste pour avoir la valeur à mettre dans nb_empl.

    Ensuite, tu pourras facilement énumérer les pistes selon leur status et afficher ou additionner leur nombre d'employés...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Impossible je viens de débuter en C et je n'ai pas encore appris les fonction c'est pour cela que mon code fait un peu raccolage

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut
    On vous apprend à faire des structures avant de vous apprendre à structurer votre code ??

    C'est dingue, main() étant une fonction, les fonctions sont pourtant l'une des choses à apprendre en priorité.
    Tant qu'on n'a pas appris les fonction, main(), la base d'un programme en C, est une formule magique!

    Qui est ton prof ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Médinoc
    Qui est ton prof ?
    C'est pas moi !
    Pas de Wi-Fi à la maison : CPL

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Oula je ne parlerai pas lol
    maintenant tu comprends mon probleme et pourquoi je galere tant deja j'avais vu les structure qu'en algo ... alors imagine toi pour le traduire en C

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut
    (code complet obtenu, 27ko).

    Et hop, 5 warnings à la compilation.
    Citation Envoyé par Visual Studio 2005
    1>c:\...\avionc.c(670) : warning C4313: 'printf' : '%d' in format string conflicts with argument 1 of type 'char [11]'
    1>c:\...\avionc.c(719) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
    1>c:\...\avionc.c(758) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
    1>c:\...\avionc.c(759) : warning C4244: '=' : conversion from 'int' to 'float', possible loss of data
    1>c:\...\avionc.c(521) : warning C4706: assignment within conditional expression
    Sans compter les scanf(). Les deux plus mauvaises utilisations de scanf() sont:
    • scanf("%s") --> Utiliser fgets() à la place
    • L'enseigner à des débutants --> Change de prof


    Un examen plus complet du code est en cours. Je peux aussi le poster si quelqu'un le veut.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Lol merci de ton aide et j'ai bien demandé a ma directrice de changer de prof mais elle m'a envoyé promener. En tout cas merci beaucoup pour cette info je ne le savais pas
    Mélanie

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut Je suis trop gentil...
    Voici le code un minimum corrigé.
    J'ai séparé ton main() monstrueux en fonctions (histoire de se séparer les trois niveaux (!) de switch), et j'ai corrigé certaines fonctions de tri, notamment.

    PS: Il faudra renommer avion_main() en main(), j'avais changé le nom car je compilais dans un projet existant avec Visual...
    Fichiers attachés Fichiers attachés
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. recuperation de la structure d'une base
    Par pascalT dans le forum 4D
    Réponses: 7
    Dernier message: 07/06/2006, 15h32
  2. [tables systèmes] extraction de la structure d'une base
    Par laffreuxthomas dans le forum Autres SGBD
    Réponses: 6
    Dernier message: 23/03/2006, 13h24
  3. [VB6] [Fichier] Enregistrer des variables de structure
    Par de.bo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/10/2002, 11h09
  4. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10
  5. longueur d'une structure
    Par bohemianvirtual dans le forum C
    Réponses: 6
    Dernier message: 28/05/2002, 18h31

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