Tri par date puis par heure

Résolu
Signaler
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011
-
Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011
-
Hello ,

Je posséde ce fichier de donée :

Le 12 minutes                           16/02/200900:0000:25La une    Actualite          
Une brique dans le ventre               16/02/200900:2500:50La une    Magazine           
JT traduction gestuelle                 16/02/200900:5006:00La une    Actualite          
Matin premiere                          16/02/200906:0009:40La une    Actualite          
Affaires a suivre                       16/02/200909:4010:05La une    Magazine           
Une brique dans le ventre               16/02/200910:0510:30La une    Magazine

Je vourdrai l'ajouté dans une liste chainée directement à la bonne place (tri par date puis heure)  .

J'ai déja ce code qui trie par date  mais ne j'arrive pas a trié par heure .

 while(fgets(ligne,sizeof(ligne),fdat)) {
                n++;
                  effacerSautLigne(ligne);       
                  strcpy(date,"");
               strncpy(date,ligne+40,10);
        
                 noeud_precedent=depart;
                  noeud=(programmeTv*) depart->suivant;

                     while((noeud) && compareDate(date,noeud->date)>0){
                              noeud = (programmeTv*)noeud->suivant;
                  noeud_precedent = (programmeTv*)noeud_precedent->suivant;
                       //tri par heure mais fctne pas         
                       while((noeud) && compareNom(heureDeb,noeud->heureDeb)>0){
                                  noeud = (programmeTv*)noeud->suivant;
                      noeud_precedent = (programmeTv*)noeud_precedent->suivant;
                          }
                     //fin tri par heure
                      }

                  nouveau_noeud = (programmeTv *) malloc(sizeof(programmeTv));
               nouveau_noeud->suivant=noeud;
             noeud_precedent->suivant = nouveau_noeud;
               strncpy(nouveau_noeud->nom,ligne,40);
               strcpy(nouveau_noeud->date,date);
               //strcpy(nouveau_noeud->heureDeb,heure);
                strncpy(nouveau_noeud->heureDeb,ligne+50,5);
               strncpy(nouveau_noeud->heureFin,ligne+55,5);
               strncpy(nouveau_noeud->chaine,ligne+60,10);
               strncpy(nouveau_noeud->genre,ligne+70,20);  
              }
Les fonctions compareDate et compareNom sont l'equivalent d'un strcmp.

Détails de la structure :

typedef struct  {
  char nom[41];
  char date[13];
  char heureDeb[6];
  char heureFin[6];
  char chaine[11];
  char genre[21];
  struct programmeTv *suivant;
 } programmeTv;

MErci d'avance

1 réponse

Messages postés
218
Date d'inscription
mercredi 17 mai 2006
Statut
Membre
Dernière intervention
30 mai 2011

bon ben j'ai trouvé moi meme en creant une fonction compareHeureDate qui renvoie le meme résultat qu'un strcmp

@+