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 :

tri d'un tableau


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par défaut tri d'un tableau
    bonsoir
    j'ai fais un code qu'effectue le tri d'un tableau par fusion mais dans l'exécution il ne fait rien!!!! sauf l'affichage de les éléments de tableau ... pouvez vous m'aide

    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    #include<stdio.h>
     
     
    #include<stdlib.h>
     
     
    #define n 10
    int i,x;
     
     
     
     
     
    // Fusion des listes t(de1..vers1) et t(de2..vers2) dans tmp(posInTmp..posInTmp+count-1)
     
     
     
     
    void fusion(int t[n],int tmp[n], int de1, int vers1, int de2, int vers2, int count, int posInTmp) 
     
    {
     
         int i;
     
         for(i = 0 ; i < count ; i++)
     
         {
     
                  if (de2 > vers2)   // Si fin de la liste 2, on prend dans liste 1
     
                          tmp[posInTmp++] = t[de1++];
     
                  else if (de1 > vers1)   // Idem si fin de la liste 1
     
                          tmp[posInTmp++] = t[de2++];
     
                  else if (t[de1] <= t[de2])   // Enfin, sinon, on compare
     
                          tmp[posInTmp++] = t[de1++];
     
                  else 
     
                          tmp[posInTmp++] = t[de2++];
     
          }
     
    }
     
     
     
    // Tri de tout le tableau t par fusions successives
     
    void trifusion()
     
    {
     
     
    int t[n];
     
     
    int tmp[n];
     
     
     
     
          int sortLength = 1, de1, de2, de3, i;
     
     
          while(sortLength < n)
     
          {
     
                  de1 = 0;
     
     
                  while(de1 < n)
     
                  {
     
                        de2 = de1 + sortLength;
     
                        de3 = de2 + sortLength;
     
     
                        if(de2>n) de2 = n;
     
     
                        if(de3> n )de3 = n;
     
                        fusion(t, tmp, de1, de2-1, de2, de3-1, de3-de1, de1);
     
                        de1 = de3;
     
                  }
     
     
     
                  for(i = 0 ; i < n ; i++) 
     
     
    {
    t[i] = tmp[i];
     
                  sortLength *= 2;
     
     
    }
          }
     
     }
    main()
    {
      int t[n];
        for (i = 0 ; i < n ; i++)
     
        {
     
           printf("entrer la valeure  num  %d de tableau   svp \n...............",i);
     
           scanf("%d",&x);
     
            t[i] = x;
     
        }
     
    trifusion();
    printf("Affichage de ses valeurs pour vérifier\n");
     
     
        for (i = 0 ; i <n  ; i++)
     
        {
     
            printf("%d\n", t[i]);
     
     
     
     
    }
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    c'est bien le tableau que tu récupères dans le main que tu veux trier ? Dans ce cas, je crois que ton problème vient du fait que tu ne passes pas ce tableau en paramètres à la fonction "trifusion()". Dans "trifusion()", tu crées un nouveau tableau et c'est celui-là que tu tries.
    Par ailleurs, je te conseilles de ne pas utiliser de globales pour des petites variables temporaires comme "i" et "x", tout d'abord dans un soucis de clarté ("x" ne sert que dans le main, c'est donc inutile d'en faire une globale), et ensuite pour t'éviter de faire l'erreur de re-déclarer la variable "i" plusieurs fois (qui devrait empêcher la compilation d'ailleurs !).
    Pour t'aider, compile avec les options suivantes : -W -Wall -pedantic -ansi , et ne considère un programme valable que lorsque tu n'as plus d'erreurs ou de warnings.

    Voilà amuse-toi bien !

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2008
    Messages
    357
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 357
    Par défaut
    Citation Envoyé par feydaykyn Voir le message
    Bonsoir,
    c'est bien le tableau que tu récupères dans le main que tu veux trier ? Dans ce cas, je crois que ton problème vient du fait que tu ne passes pas ce tableau en paramètres à la fonction "trifusion()". Dans "trifusion()", tu crées un nouveau tableau et c'est celui-là que tu tries.
    Par ailleurs, je te conseilles de ne pas utiliser de globales pour des petites variables temporaires comme "i" et "x", tout d'abord dans un soucis de clarté ("x" ne sert que dans le main, c'est donc inutile d'en faire une globale), et ensuite pour t'éviter de faire l'erreur de re-déclarer la variable "i" plusieurs fois (qui devrait empêcher la compilation d'ailleurs !).
    Pour t'aider, compile avec les options suivantes : -W -Wall -pedantic -ansi , et ne considère un programme valable que lorsque tu n'as plus d'erreurs ou de warnings.

    Voilà amuse-toi bien !
    merci bcp , mais il reste le même problème pfffffffffffff

Discussions similaires

  1. Tri d'un tableau en 2D
    Par sniperseb dans le forum C
    Réponses: 4
    Dernier message: 05/01/2006, 16h33
  2. Réponses: 6
    Dernier message: 16/09/2005, 10h30
  3. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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