Tri par date puis par heure

Résolu
dodo1309 Messages postés 218 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 30 mai 2011 - 26 févr. 2009 à 21:21
dodo1309 Messages postés 218 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 30 mai 2011 - 28 févr. 2009 à 09:24
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

dodo1309 Messages postés 218 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 30 mai 2011
28 févr. 2009 à 09:24
bon ben j'ai trouvé moi meme en creant une fonction compareHeureDate qui renvoie le meme résultat qu'un strcmp

@+
3
Rejoignez-nous