Tri bulle avec le pointeur

Signaler
-
Messages postés
354
Date d'inscription
dimanche 3 juin 2001
Statut
Membre
Dernière intervention
11 mars 2013
-
vous pouvez m'aider a trouver les erreurs dans ce programme de tri bulle en utilisant les pointeur. j'ai l'erreur invalid conversion from `int' to `int*' dans la ligne saisi(*t);

#include <stdio.h>
#include <stdlib.h>
void saisi(int *t)
{
int i, n;//t*=NULL;
printf("donnez la taille du tableau :",n);
scanf("%d",&n);
t=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++);
scanf("%d",t);
}
void affich(int *t)
{
int i,n;
for(i=0;i<n;i++)
printf("%d", *t);
}
void tribull(int *t)
{
int i,j,k,n;
printf("donnez la taille du tableau");
scanf("%d",&n);
t=(int *)malloc(n*sizeof(int));
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(*t>*t+1)
{
k=*t;
*t++;//*t=*t+1;
*t=k;//*t+1=k;
}
}
}
}
main()
{
int *t;
saisi(*t);
affich(*t);
tribull(*t);
system("pause");
return 0;
}
A voir également:

2 réponses

Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
Bonjour,

Le paramètre de ta fonction est un pointeur d'int. Comme tu définis t comme pointeur d'int, tu passes simplement t en non *t.


louis
Messages postés
354
Date d'inscription
dimanche 3 juin 2001
Statut
Membre
Dernière intervention
11 mars 2013

Bonjour,

Voilà le code corrigé (et fonctionnel). Comme dit par luois14 plus haut, pas mal de cafouillages avec les pointeurs...

#include <stdio.h>
#include <stdlib.h>
void saisi(int **t, int *n)
{
int i;//t*=NULL;
printf("donnez la taille du tableau :");
scanf("%d",n);
*t=(int *)malloc(*n*sizeof(int));
for(i=0; i<*n; i++){
        scanf("%d",(*t+i));
}
}
void affich(int *t, int n)
{
int i;
printf("[ ");
for(i=0; i<n; i++)
printf("%d ", *(t+i));
    printf("]\n");
}

/**
 *
 * repeat
 *    swapped = false
 *    for i = 1 to length(A) - 1 inclusive do:
 *      // if this pair is out of order
 *      if A[i-1] > A[i] then
 *       //swap them and remember something changed
 *        swap( A[i-1], A[i] )
 *        swapped = true
 *      end if
 *    end for
 *  until not swapped
 *
 * source: http://en.wikipedia.org/wiki/Bubble_sort
 */
void tribull(int *t, int n)
{
int trie, i, tmp;
do{
    trie = 1;

        for(i=1;i<n;i++){
            if( *(t+i-1) > *(t+i)){
                tmp = *(t+i);
                *(t+i) = *(t+i-1);
                *(t+i-1) = tmp;
                trie = 0;
            }
        }
}while(trie==0);
}
main()
{
int *t, n;
saisi(&t, &n);
affich(t,n);
tribull(t, n);
affich(t,n);
return 0;
}