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 :

tableau vers liste chaînée triée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Par défaut tableau vers liste chaînée triée
    pourquoi ce programme ne marche pas qu'elle est l'erreur

    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
     
    void TabToLsc(cels **l,int tab[40],int n){
    	int i,j,x,ok=0;	
    	cels *p,*pp;
    	cels *nw,*t;
    	nw=(cels*)malloc(sizeof(cels));
    	p=(cels*)malloc(sizeof(cels));
    	i=1;x=1;
    	while(x!=n){ok=0;p=*l;
    				while((ok!=1)){
    				    if (p->note >= tab[i]){
    									    	if(p==*l){/*add entete*/ printf("1\n");nw->note=tab[i];nw->suiv=*l;*l=nw;ok=1;p=*l;x++;
    						                             }else{/*add m avant*/printf("2\n");nw->note=tab[i];nw->suiv=p;pp->suiv=nw;ok=1;x++;}
    					}else if (p->note < tab[i]){
    												if(p->suiv==NULL){/*add fin*/printf("3\n");nw->note=tab[i];nw->suiv=NULL;p->suiv=nw;ok=1;x++;
    																 }else{printf("4\n"); pp=p;p=p->suiv;}
    						                        }
    		  		           } i++;p=*l;
     	                }
    }
    int main()
    {
        cels *l;
        l=(cels*)malloc(sizeof(cels));
         int n,a,i;
          int tab[40];
     
          printf ("donnez la taille n ");
          scanf("%d",&n);
     
          for(i=0;i<n;i++)
          {
          printf ("donnez la valeur d case n° %d :",i);
          scanf("%d",&tab[i]);
          }
       l->note=tab[0];
        l->suiv=NULL;
     
    	TabToLsc(&l,tab,n);
    	affichage(l);
     
      system("PAUSE");	
      return 0;
    }
    et Merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Si tu choisis de ne pas nous donner plus de détails sur le rôle du programme et la nature de l'erreur, poste au moins un listing qui compile.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Par défaut
    le rôle : il transféré le contenu d'un tableau dans une liste chaînée du sorte qu'il soit trie a la fin d'insertion .
    la nature de l'erreur : je ne sais pas .
    et désolé pour le manque de détails dans la question

  4. #4
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Je reformule : quelle est l'erreur en question ? Ou à défaut fournis-nous au moins un programme qui compile, qu'on obtienne l'information par nous-mêmes.

    Nous ne sommes ni des devins, ni des robots.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Par défaut
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct cel{
            char prenom[20];
            char nom[20];
            int note;
            struct cel *suiv;
            }cels;
     
    void remplir(cels *l,int n){
    	int i;	
    	cels *p;
    	p=l;
     for(i=0;i<n;i++){
     	cels *l1;
        l1=(cels*)malloc(sizeof(cels));
        printf("prenom\t");
       scanf("%s",&(l1->prenom));
       printf("nom\t");
       scanf("%s",&(l1->nom));
       printf("note\t");
       scanf("%f",&(l1->note));
        l1->suiv=NULL;
        p->suiv=l1;
        p=l1;
    }}
    void affichage(cels *l){
    cels *p;
    	int i=0;
        p=l;
        while(p!=NULL){
                       printf("note:%d\n",p->note);
                       p=p->suiv;i++;}}
    void TabToLsc(cels **l,int tab[40],int n){
    	int i,j,x,ok=0;	
    	cels *p,*pp;
    	cels *nw,*t;
    	nw=(cels*)malloc(sizeof(cels));
    	p=(cels*)malloc(sizeof(cels));
    	i=1;x=1;
    	while(x!=n){ok=0;p=*l;
    				while((ok!=1)){
    				    if (p->note >= tab[i]){
    									    	if(p==*l){/*add entete*/ printf("1\n");nw->note=tab[i];nw->suiv=*l;*l=nw;ok=1;p=*l;x++;
    						                             }else{/*add m avant*/printf("2\n");nw->note=tab[i];nw->suiv=p;pp->suiv=nw;ok=1;x++;}
    					}else if (p->note < tab[i]){
    												if(p->suiv==NULL){/*add fin*/printf("3\n");nw->note=tab[i];nw->suiv=NULL;p->suiv=nw;ok=1;x++;
    																 }else{printf("4\n"); pp=p;p=p->suiv;}
    						                        }
    		  		           } i++;p=*l;
     	                }
    }
    int main()
    {
        cels *l;
        l=(cels*)malloc(sizeof(cels));
         int n,a,i;
          int tab[40];
     
          printf ("donnez la taille n ");
          scanf("%d",&n);
     
          for(i=0;i<n;i++)
          {
          printf ("donnez la valeur d case n° %d :",i);
          scanf("%d",&tab[i]);
          }
       l->note=tab[0];
        l->suiv=NULL;
     
    	TabToLsc(&l,tab,n);
    	affichage(l);
     
      system("PAUSE");	
      return 0;
    }

  6. #6
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Il existe en effet des incohérences entre les formats attendus et leurs arguments. Active toujours les avertissements du compilateur pour mettre en évidence ce qui peut l'être :

    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
    $ gcc --std=c11 -pedantic -Wall -Wextra dudule.c
    dudule.c: In function ‘remplir’:
    dudule.c:19:10: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[20][-Wformat=]
        scanf("%s",&(l1->prenom));
              ^
    dudule.c:19:10: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[20][-Wformat=]
    dudule.c:21:10: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[20][-Wformat=]
        scanf("%s",&(l1->nom));
              ^
    dudule.c:21:10: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[20][-Wformat=]
    dudule.c:23:10: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘int *’ [-Wformat=]
        scanf("%f",&(l1->note));
              ^
    dudule.c:23:10: warning: format ‘%f’ expects argument of type ‘float *’, but argument 2 has type ‘int *’ [-Wformat=]
    dudule.c: In function ‘TabToLsc’:
    dudule.c:38:12: warning: unused variable ‘t’ [-Wunused-variable]
      cels *nw,*t;
                ^
    dudule.c:36:8: warning: unused variable ‘j’ [-Wunused-variable]
      int i,j,x,ok=0;
            ^
    dudule.c: In function ‘main’:
    dudule.c:58:12: warning: unused variable ‘a’ [-Wunused-variable]
          int n,a,i;

Discussions similaires

  1. [TPW] Erreur lors de l'ajout d'un élément dans une liste chaînée triée
    Par sangimed dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 18/01/2013, 21h37
  2. Réponses: 14
    Dernier message: 18/03/2012, 17h18
  3. [Tableaux] Tableau numérique vers liste
    Par jeronimo83 dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 15h57
  4. Tableaux 2 dimensions ou tableau de listes linéaires chaînées?
    Par mimina dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 16/11/2006, 15h17
  5. [Tableaux] tableau vers liste deroulane
    Par flydragon dans le forum Langage
    Réponses: 5
    Dernier message: 12/04/2006, 16h11

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