J'ai un programme pour trier les elements d'un tableau et je veux en plus fixer les indices de ces elements dans un autre tableau, exemple:

tableau{3,2,9,1,4,8} avec position (leurs indices) {1,2,3,4,5,6} alors je veux les trier comme suit : tableau{1,2,3,4,8,9} et avoir position comme suit , position{4,2,1,5,6,3}.

Mon probleme c'est qu'il saute des nombres, voici le code
Les indices commencent à 1 car je veux pas afficher l'indice 0.
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
 #include <stdio.h>
#include <stdlib.h>
 
void ordonnerTableau(int tableau[], int position[],int tailleTableau);
 
int main(int argc, char *argv[])
{
int n=0,t[n],i,z,p[n];
printf("Entrer la taille de votre tableau!\n");
scanf("%d",&n);
for (i=1; i<=n; i++)
        {
            printf("Entrer un nombre\n");
            scanf("%d",&t[i]);
        }
 
ordonnerTableau(t,p,n);
 
for(i=1; i<=n; i++)
    {
        printf(" Les valeurs de tableau sont:  %d \n\n ",t[i]);
        printf("\t");
    }
    for(z=1; z<=n; z++){
 
        printf(" Les valeurs de position sont:  %d \n\n ",p[z]);
printf("\t");
 
    }
return 0;
}
 
void ordonnerTableau(int tableau[], int position[],int tailleTableau)
{
int h,z,l,k=0;
for(z=1; z<=tailleTableau; z++){
    position[z]=z;
}
 
for(l=2; l<tailleTableau; l++)
    {
        for(h=1; h<=tailleTableau; h++)
        { if (tableau[h]>tableau[h+1]){
 
            k = tableau[h] - tableau[h+1];
                tableau[h] -= k;
                tableau[h+1] += k;
 
                k = position[h] - position[h+1];
                position[h] -= k;
                position[h+1] += k;
 
        }
    }
 
 
}
}
Merci d'avance