Bonjour,

j'apprend actuellement le C, et pour m'exercer, j'ai tenté de faire l'exercice suivant:
créer une fonction ordonnerTableau qui classe les valeurs d'un tableau dans l'ordre croissant.

Voici mon code:
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
 
#include <stdio.h>
#include <stdlib.h>
 
void ordonnerTableau(int tableau[], int tailleTableau);
 
int main()
{
    int tableau[8] = {4, 9, 7, 2, 13, 12, 21, 3};
    int i = 0;
    for(i = 0; i<8; i++)
    {
        printf("%d\n", tableau[i]);
    }
 
    ordonnerTableau(tableau, 8);
 
    for(i = 0; i<8; i++)
    {
        printf("%d\n", tableau[i]);
    }
 
}
 
void ordonnerTableau(int tableau[], int tailleTableau)
{
    int sup = 0, i=0, n=0, temp=0;
    while(i<tailleTableau)
    {
        for(n=0;n<tailleTableau;n++)
        {
            if(tableau[i]>tableau[n])
            {
                sup++; // Définit la position de l'élément
            }
        }
 
        //Echange des valeurs
        temp=tableau[sup];
        tableau[sup]=tableau[i];
        tableau[i]=temp;
 
        /*
        Si la valeur de tableau[i] change, reproduire l'opération sans déplacer le curseur i
        Si la valeur de tableau[i] ne change pas, déplacer le curseur
        */
        if(tableau[i] == tableau[sup])
        {
            i++;
        }
 
    }
}
Lorsque j’exécute ce code, la console m'affiche l'ordre initial du tableau, puis windows m'indique que le programme a cessé de fonctionner, mais je n'arrive pas à trouver ce qui ne va pas..

Cordialement.