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 :

tri d'un tableau de struct


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut tri d'un tableau de struct
    Salut à tous
    j'ai un petit problème de tri d'un tableau de structurede but d'extraire l'employer le plus âgé Pouvez-vous m'aider s.v.p a résoudre se problème par la méthode de tri si possible par une deuxième méthode ? voila mon code il explique un peux l'idée "deuxième méthode" que j'ai penser
    merci bien d''avance
    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
    #include<stdio.h>
    #include<conio.h>
    #define max 10
     
    typedef struct CITOYEN
    {
            char nom[10] ;
            char prenom[20];
            int cin[8];
            int jour[2];
            int mois[2];
            int annee[4];
            int  numrue[5] ;
            char cite[15] ;
            char ville[20];
            int  codp[10] ;
     
    }cit;
     
    int main()
    {
        int i;
     
    cit t[max]  ;
    for(i=0;i<max;i++);
    {
    printf("donnez le nom :\n");
    scanf("%s",&t[i].nom);
    printf("donnez le prenom :\n");
    scanf("%s",&t[i].prenom);
    printf("donnez le num CIN :\n");
    scanf("%d",&t[i].cin);
    printf("donnez le jour de naissance :\n");
    scanf("%d",&t[i].jour);
    printf("donnez le mois de naissance :\n");
    scanf("%d",&t[i].mois);
    printf("donnez l'année :\n");
    scanf("%d",&t[i].annee);
    printf("donnez le numero de l'employé :\n");
    scanf("%d",&t[i].numrue);
    printf("donnez le city :\n");
    scanf("%s",&t[i].cite);
    printf("donnez la ville :\n");
    scanf("%s",&t[i].ville);
    printf("donnez le code postal :\n");
    scanf("%d",&t[i].codp);
    }
    for (i=0;i<max;i++)
    {
     
            if(&t[i].annee == &t[i+1].annee)
            {
             if(&t[i].mois == &t[i+1].mois)
             {
                           if(&t[i].jour == &t[i+1].jour)
                           {
                           // j'ai pas trouver une bonne idee ... mais l'idee consiste a
                            // je veux associer une variable j pour 
                            //personne i et i+1 -> faire comparaison avec i+2.. 
                                         }
                }
        }}
    getch();
    return(0);
    }

  2. #2
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut
    personne ne me répond ?
    je pense que je suis dans le bon emplacement .. j'ai parcouru le forum j'ai pas trouver un sujet similaire que "tri DANS un tableau pas tri d'un tableau"

  3. #3
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut
    voila se que j'ai trouvé comme idée
    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
     
    int p = 0;
     
    for(i=0;i<max;i++)
    {
    int nb_de_i = t[i].jour + 100 * t[i].mois + 10000 * t[i].annee;
    int i_plus_1 = t[i+1].jour + 100 * t[i+1].mois + 10000 * t[i+1].annee;
     
    if (i_plus_1 < nb_de_i) 
    {
    p= i+1;
    }
    else
    {
    p=i;
    }
    le compilateur code blocks m'indique les erreur : C:\Documents and Settings\Administrateur\Bureau\med 3\Untit1.c||In function `int main()'
    C:\Documents and Settings\Administrateur\Bureau\med 3\Untit1.c|48|error: invalid operands of types `int' and `int[2]' to binary `operator*'|
    C:\Documents and Settings\Administrateur\Bureau\med 3\Untit1.c|48|error: invalid operands of types `int' and `int[4]' to binary `operator*'|
    C:\Documents and Settings\Administrateur\Bureau\med 3\Untit1.c|49|error: invalid operands of types `int' and `int[2]' to binary `operator*'|
    C:\Documents and Settings\Administrateur\Bureau\med 3\Untit1.c|49|error: invalid operands of types `int' and `int[4]' to binary `operator*'|
    C:\Documents and Settings\Administrateur\Bureau\med 3\Untit1.c|57|error: `p' was not declared in this scope|
    C:\Documents and Settings\Administrateur\Bureau\med 3\Untit1.c|61|error: `p' was not declared in this scope|
    ||=== Build finished: 6 errors, 0 warnings ===|

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour des raisons qui m'échappent, tu as déclaré les champs jour, mois et année comme étant des tableaux d'entiers plutôt que des entiers.

    Cherchais-tu à en définir le nombre de chiffres (en décimal) ? Désolé, ça ne marche pas comme ça.
    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.

  5. #5
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut
    euh j'ai pas fait attention
    merci merci beaucoup Médinoc problème résolu avec cette méthode mais pourriez vous m'aider a trie ce tableau de structure par date de naissance ?

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Le plus simple pour trier, c'est d'écrire une fonction qui compare selon la date de naissance, et d'appeler la fonction standard qsort().
    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.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Echap Voir le message
    j'ai un petit problème de tri d'un tableau de structure dans le but d'extraire l'employer le plus âgé
    Pour mieux le virer ?

    http://emmanuel-delahaye.developpez....Page8#LXXXVIII

  8. #8
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    [...] le but est de bien maitriser les structures et savoir faire le tri de ce type struct en C.
    pour la fonction qsort j'ai jeté un coup d'œil même avant votre réponse ça me parait c'est un peu difficile pour mon niveau alors je préfère une boucle d'itération simple.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Echap Voir le message
    [...] le but et de bien maitriser les structures et savoir faire le tri de ce type struct en C.
    pour la fonction qsort j'ai jeté un coup d'œil même avant votre réponse ça me parait c'est un peu difficile pour mon niveau alors je préfère une boucle d'itération simple.
    qsort() est certainement la solution la plus simple. L'algo est déjà écrit (oui, c'est plus compliqué qu'une 'boucle d'itération simple') et il fonctionne. Tout ce qu'on a à faire, c'est d'écrire une fonction de comparaison conforme et correcte.

    struct tm, mktime() et difftime() peuvent aider... (Windows : après le 01/01/1970, ce qui peut ne pas convenir avec des dates de naissances antérieures...)

  10. #10
    Membre confirmé
    Développeur Web
    Inscrit en
    Novembre 2008
    Messages
    146
    Détails du profil
    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 146
    Par défaut
    OK je vais essayer d'adapter a mon code malgré je suis faible dans la partie des procédure&fonction
    je vais faire le max
    merci a vous tous

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Echap Voir le message
    OK je vais essayer d'adapter a mon code malgré je suis faible dans la partie des procédure&fonction
    je vais faire le max
    C'est l'occasion de progresser. Lit bien mon article, fait de ton mieux et poste ton code.

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

Discussions similaires

  1. Tri d'un tableau en 2D
    Par sniperseb dans le forum C
    Réponses: 4
    Dernier message: 05/01/2006, 16h33
  2. Réponses: 6
    Dernier message: 16/09/2005, 10h30
  3. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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