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 :

Classer par ordre chronologique un tableau 2D de unsigned long int


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut Classer par ordre chronologique un tableau 2D de unsigned long int
    Bonjour,

    Je cherche à classer par ordre chronologique des évenements representés dans le temps en secondes depuis 1970.

    Pour cela, je voudrai créer un tableau 2D pour y stocker 12 evenements à venir associés à une action à réaliser ( 1 dimension pour le temps en seconde et 1 dimension pour l'action à réaliser )

    Les evenements seront insérés sans ordre chronologique, je voudrais donc classer mon tableau de la date la plus proche à la date la plus lointaine.

    Le temps actuel ou un évenement à venir est representable sur 10 entiers.
    ( http://www.epochconverter.com )

    Je pensai donc créer une dimension d'unsigned long int de longueur 12 ( valeur max = 4 294 967 295) pour y stocker 12 evenements.

    et une seconde dimension de longueur 1 pour y stocker le type d'action à réaliser ( le contenu sera 1 caractère pouvant prendre une valeur de A à Z )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned long int tableau[12][1];
    Je pensai utiliser un tri "shell" comme présenté ici, pour réaliser le classement par ordre chronologique mais je ne sais pas comment faire "suivre" la 2eme dimension de mon tableau qui ne doit pas être dissociée de son heure d'evenement .

    Je ne sais pas comment adapter ce type de tri à un tableau 2D, de plus est il judicieux de procéder ainsi du faire que mon tableau soit assez grand en taille ( u long int ) ?

    http://www.prog-info.org/cpp/trietre...e/trishell.php

    Au départ on aurait :
    1298459900 , Z
    1298459450 , H
    1298459600 , B
    1298459420 , A
    ...

    après classement on aurait ceci :

    1298459420 , A
    1298459450 , H
    1298459600 , B
    1298459900 , Z
    ...

    Je vous remercie de votre aide et avis,
    Cordialement,

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    D'une part, en C, time_t est directement un type permettant de rentrer ette représentation du temps (en général en 32 bits c'est un entier)

    Ensuite ce serait plus simple de faire une structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    typedef struct pEve {
     
        char     Type ;
        time_t  Epoch ;  
     
    } Evenement ;
    Et tu utilises la fonction qsort, en lui passant ton tableau de structures, et dans la fonction de tri tu compares les epochs..


  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut
    Je ne voulais pas immédialtement utiliser time_c qui génère en effet une structure de int.

    Si je transforme le temps en structure, la mise en ordre chronologique sera plus complexe car il faudra classer chaque entier : année, jour, mois , heure, min , sec ...

    et je n'ai pas la fonction qsort car je programme en C embarqué.


    Comme je débute, je pensai partir sur quelquechose de simple, d'ou mon idée de tableau 2D et de classer les 'timestamps' epoch.

    Est il possible d'adapter le tri shell sur un tableau 2D ?
    Si oui, pourriez vous me montrer comment faire svp ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par lcoulon Voir le message
    Si je transforme le temps en structure, la mise en ordre chronologique sera plus complexe car il faudra classer chaque entier : année, jour, mois , heure, min , sec ...
    Sauf que cela te prend 6 entiers min au lieu de 1...


    Citation Envoyé par lcoulon Voir le message
    et je n'ai pas la fonction qsort car je programme en C embarqué.
    Le code source est dispo partout...



    Citation Envoyé par lcoulon Voir le message
    Est il possible d'adapter le tri shell sur un tableau 2D ?
    Tout tri est facilement adaptable en N dimensions...

    Tout est basé sur le critère de tri...

    Le critère de tri est dépendant de l'application.
    C'est donc à toi de le coder comme bon te semble...

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2008
    Messages
    384
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 384
    Par défaut
    je ne vous suis pas :

    Sauf que cela te prend 6 entiers min au lieu de 1...
    Si je garde et classe le temps sous forme d'un entier représentant les secondes depuis epoch, c'est mieux n'est ce pas ?

    Quel est l'interret de le transformer avant le tri en structure ?


    Pour transformer le tri 'shell' avec 1 dimension de plus, je ne vois pas trop comment faire, pourriez vous me montrer svp ?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par lcoulon Voir le message
    je ne vous suis pas :
    ...
    Si je garde et classe le temps sous forme d'un entier représentant les secondes depuis epoch, c'est mieux n'est ce pas ?

    Quel est l'interret de le transformer avant le tri en structure ?
    Tu ne m'as pas compris..

    Aucun intérêt à le transformer effectivement..

    Je répondais à ceci :

    Le temps actuel ou un évenement à venir est representable sur 10 entiers.


    Citation Envoyé par lcoulon Voir le message
    Pour transformer le tri 'shell' avec 1 dimension de plus, je ne vois pas trop comment faire, pourriez vous me montrer svp ?
    Tu ne tries que sur un indice du tableau (celui représentant le temps)...

Discussions similaires

  1. Comment classer par ordre chronologique
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/11/2006, 22h04
  2. trier par ordre alphabetique un tableau de char
    Par Pitou5464 dans le forum C
    Réponses: 3
    Dernier message: 02/11/2006, 18h44
  3. [MySQL] classer par ordre numérique
    Par july dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/05/2006, 09h43
  4. [VB6] Classer par ordre alphabétique
    Par boudincweole10 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 02/05/2006, 17h48

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