/* PRGTRI.C fevrier 2008 */ /* TP 2 : tri par insertion : visibilite/passages de parametres */ #define MAX 6 typedef int tab_entiers[MAX]; tab_entiers t; void lecture(tab_entiers t) /* remplissage du tableau t */ { int i; for (i=0; i < MAX; i=i+1) { printf("donnez un entier : "); scanf("%d",&t[i]); } } int position(int i, tab_entiers t) /* determine le plus petit indice p / 0 <= p <= i */ /* qui verifie t[p] >= t[i] */ { int p; p = 0; while ( t[p] < t[i] ) p = p+1; return p; } void translation(int p, int i, tab_entiers t) /* translation de t[p..i-1] vers t[p+1..i] */ { int j; for (j=i; p < j; j=j-1) t[j] = t[j-1]; } void tri(tab_entiers t) /* tri du tableau t par insertion sequentielle */ { int i,p,x; for (i=1; i < MAX; i=i+1) { p = position(i,t); x = t[i]; translation(p,i,t); t[p] = x; } } void affichage(tab_entiers t) /* affichage du tableau t */ { int i; printf("\nSuite triee :\n"); for (i=0; i < MAX; i=i+1) printf("t[%d]=%d ",i,t[i]); printf("\n\n"); } main() { lecture(t); tri(t); affichage(t); }