begin process at 2010 03 22 10:50:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

PB de tri


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

PB de tri

samedi 21 février 2009 à 23:09:56 | PB de tri

dodo1309

Bonjour,

Voila je suis entrain de faire un programme qui doit permettre à l'utilisateur d'encoder les valeurs de son choix pour ensuite
l'ajouter à la bonne possition dans une liste chainée .

L'ajout à la bonne place s'effectue d'abord sur la date et ensuite l'heure de début.
Le problème  est que lorsque l'on ajoute 4 dates identiques et 4 heures de début différentes cela ne place pas la derniere  serie de valeur au bon endroit .

Voila le code :
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

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


main(){
programmeTv *depart, *noeud,*lecture,*intercale,*nouveau_noeud,*noeud_precedent;
      depart=NULL;
      noeud=NULL;
      lecture=NULL;
      intercale=NULL;
      nouveau_noeud=NULL;
      noeud_precedent=NULL;
     void effacerSautLigne(char chaine[]);
     int compare(char ch1[],char ch2[]);

     int choix,n=1,rep=-1,place[100]={0},i=0,j=0,k=0;
     char ligne[92],nomFichier[50],tmp[100],nom[22],nomprog[41],date[13],heureDeb[7],heureFin[7],chaine[22],genre[22],suppr[2],nomtmp[41];
 printf("Veuillez saisir le nom :");               
          fgets(nom,sizeof(nom),stdin);
          effacerSautLigne(nom);
         
               
        printf("Veuillez saisir la date :");
                fgets(date,sizeof(date),stdin);
          effacerSautLigne(date);
       
             
          printf("Veuillez saisir l'heure de début :");
                fgets(heureDeb,sizeof(heureDeb),stdin);
          effacerSautLigne(heureDeb);
       
             
              printf("Veuillez saisir l'heure de fin :");
                fgets(heureFin,sizeof(heureFin),stdin);
          effacerSautLigne(heureFin);
       
           
           printf("Veuillez saisir la genre :");
                fgets(genre,sizeof(genre),stdin);
          effacerSautLigne(genre);
         

         printf("Veuillez saisir la chaine :");
                fgets(chaine,sizeof(chaine),stdin);
          effacerSautLigne(chaine);
       
  
                    noeud_precedent=depart;
              noeud=(programmeTv*) depart->suivant;
             
              while((noeud) ){
                               if (compare(date,noeud->date)>0){
                      noeud = noeud->suivant;
                      noeud_precedent = noeud_precedent->suivant;
                      break;
                 }
                  if (compare(date,noeud->date)==0){
               
                                        if(compare(heureDeb,noeud->heureDeb)>0){
                          noeud = noeud->suivant;
                                  noeud_precedent = noeud_precedent->suivant;
                              //noeud = noeud->suivant;
                                  //noeud_precedent = noeud_precedent->suivant;
                          break;
                    }
                    else break;
                }                       
               

               }
             

            nouveau_noeud = (programmeTv *) malloc(sizeof(programmeTv));
            nouveau_noeud->suivant=noeud;
            noeud_precedent->suivant = nouveau_noeud;
       
            strcpy(nouveau_noeud->nom,nom);
            strcpy(nouveau_noeud->date,date);
            strcpy(nouveau_noeud->heureDeb,heureDeb);
            strcpy(nouveau_noeud->heureFin,heureFin);
            strcpy(nouveau_noeud->genre,genre);
            strcpy(nouveau_noeud->chaine,chaine);
}

void effacerSautLigne(char chaine[]){
 char *positionEntree = NULL;
 positionEntree = strchr(chaine, '\n'); // On recherche l'"Entrée"
        if (positionEntree != NULL) // Si on a trouvé le retour à la ligne
        {
            *positionEntree = '\0'; // On remp
        }
}

void effacerEspace(char* str) {
char c, *p;

    p = str;
    do
        while ((c = *p++) == ' ') ;
    while (*str++ = c);
    return;
}

int compare(char ch1[],char ch2[]){
   
    void effacerEspace(char* str);
    void modif(ch1,ch2);

          char copie1[45],copie2[45];
         
             strcpy(copie1,ch1);
             effacerEspace(copie1);
         strcpy(copie2,ch2);
             effacerEspace(copie2);
         modif(copie1,copie2);

      
      return strcmp(copie1,copie2);
}


Merci d'avance

Dodo1309

samedi 21 mars 2009 à 20:57:45 | Re : PB de tri

sonic1

Les prototypes de fonctions seraient mieux en en-têtes, non ?

Par contre, il l manque la fonction modif !


Cette discussion est classée dans : date, chaine, char, noeud, precedent


Répondre à ce message

Sujets en rapport avec ce message

fonction qui retourne un char [ par glipper ] Bonjour,Voila, j'ai un probleme avec une fonction qui doit retourner une chaine de caractere ! J'ai compris qu'elle ne pouvait pas renvoyer la chaine, manipulation desformules logiques : URGENT [ par The_Legacy ] Bonjour, je suis en train de développer un petit programme qui permet d'évaluer des expression logiques telles que ((a et b) ou (c et (non d))).A part C++ : trop lourd ? [ par guiguikun ] Cela fait quelques mois que je suis passé du C pur et dur au C++.Plus je programme objet et plus je me pose les mêmes questions...Ok c'est bien pratiq comparation chaine de caractere [ par SfyLer ] prise de tête j'arrive pas a comparer de chaine de caractere:#include #include char main(void){ char login[6]; cout cin >> login; cout << "\n";<b C++ Concatener deux char* [ par amodels ] Bonjour tlm,Je voudrais connaitre un moyen autre que :- strcat(chaine,"AJOUT");- sprintf(chaine2,"%s%s",chaine,"AJOUT");Pour concatener 2 char* en C++ char* => WCHAR [ par Chouchou182 ] BonjourJe cherche à transformer une chaine de caractères (char*) en une chaine UNICODE donc wchar_t* ou WCHAR*.J'utilise (surement mal) la fonction:Mu problème d'allocation mémoire dans ma classe [ par Bub325 ] Salut, j'ai un problème dans le code suivant au niveau de l'allocation mémoire de tmp.a = new char... dans operator+, et je ne sait pas du tout pourqu convertion CString à char[ ]! [ par souaisou ] comment convertir de cstring a une chaine de caracteres et d'un chaine de caractere a un cstring....Merci PB DE CHAINE DE CARACTERE [ par Orkblutt ] pkoi ceci me genere t'il une erreur a l'execution??#include void main(){ int o; o=2000; char* O=new char; itoa(o,O,10); char* ch="Fichier"; strcat(ch, PB DE CHAINE DE CARACTERE [ par Orkblutt ] pkoi ceci me genere t'il une erreur a l'execution??#include void main(){ int o; o=2000; char* O=new char; itoa(o,O,10); char* ch="Fichier"; strcat(ch,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales