Tableau

Bonjour,


Qulqu'un(e) m'indiquer comme entre un valeur dans un tableau trié svp
par exemple :
2 8 10
val = 9
: 2 8 9 10
merci bcp

4 réponses

  1. Bonjour.

    Il n'existe pas de solution toute prête, tu vas devoir écrire un algorithme toi même.

    Tu dois d'abord demander à ton programme de trouver la position de ton nouveau nombre, ensuite tu devras utiliser malloc pour agrandir ton tableau, ou alors avoir pensé à en créer un assez grand avec des cases vides au début.

    Ensuite tu devras décaler les valeurs supérieurs d'un cran pour insérer la nouvelle.
    1. Contributeur
      Pour agrandir, ce n'est pas malloc(), mais realloc().
    2. Oup, pardon ;)
  2. Mouthon
    +1

    alors pour placer x dans la bonne position il faure faire un boucle qui traverse le tableau element par element puis il compare les elements de tableau avec x si x est inferieur a un element de tableau il sorte de la boucle et il decale les elements a partir de cette position

    :D
    1. Contributeur
      Bonjour,
      Grosso modo, deux méthodes :
      La 1ère t'a déjà été exposée.
      La 2nde, c'est utiliser une liste doublement chaînée. Cela te permettra d'insérer des éléments sans tout chambouler.
      C'est plus performant pour les grands tableaux.

      Google is your friend
      1. Voilà la solution ! je l'ai essayé et ça marche ;)
        si vs ne comprenez pas une instruction ou quelque chose je suis là :)

        { int t [50];
        int t2[50];
        int i,j,x,p,n,aux,test,k;

        printf ("n= ");
        scanf ("%d",&n);
        for (i=0;i<n;i++)
        {
        printf ("t[%d]= ",i);
        scanf ("%d",& t[i]);
        }
        do
        {
        test=0;
        for (i=0;i<n-1;i++)
        if (t[i]>t[i+1])
        {
        aux=t[i];
        t[i]=t[i+1];
        t[i+1]=aux;
        test=1;
        }
        }
        while (test ==1);

        for (i=0;i<n;i++)
        printf ("%d\t", t[i]);

        printf ("\n");
        printf ("x= ");
        scanf ("%d",&x);
        test=0;
        i=0;
        do
        {
        if (x<t[i])
        {
        p=i;
        test=1;
        k=p;
        }
        i++;
        }
        while (test!=1);

        for (i=0;i<p;i++)
        t2[i]=t[i];
        t2[p]=x;

        for (k=p+1;k<n+1;k++)
        t2[k]=t[k-1];

        for (i=0;i<n+1;i++)
        printf ("%d\t", t2[i]);