Bonjour,

j'ai réussi a mettre un petit programme au point pour qu'il permette de créer un tableau de 9 chiffre, qu il organise par ordre croissant.
Par la suite la saisie d'un 10 eme chiffre est sollicité, le programme va l insérer en décalant les élément ayant une valeur supérieur vers la droite, pour l insérer au bonne endroit

Par la suite j'ai essayé de creer un autre programme qui lui devrait organisé les nombre dans le tableau au fur et a mesure qu'il soient saisie, en décalant les nombre superieur a ma derniere saisie vers la droite
Il trie bien les nombre lorsque je les rentre par ordre décroissant, cependant si je les saisie de façon aleatoire il les organise mal.
Par exemple si je rentre 9 8 7 4 5 6 1 2 3 10 il me trie de cette façon : 2 1 3 5 4 6 7 8 9 10.

Pourriez vous m'aider a corriger mon 2eme programme.

Voici le 1er programme fonctionnant bien :
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
59
 
 
// Ecrire un prog qui permet de stocker dans un tableau de 9 elements et qui le 
// tri en ordre croissant. Puis il demande une valeur et il l inser dans le 
// tableau
 
#include <stdlib.h>
#include <stdio.h>
 
int main(){
    // Déclaration des valeurs et du tableau
    int i, j, temp,nouveau, tab[10];
    bool ok;
    // Entrer valeurs dans le tableau
    for(i=0; i<9 ;i++)
       {
        printf("Donner un element  %d : ", i);
        scanf("%d", &tab[i]);
        }
 
    // Recherche avec tri par permutation
    for(i=0; i<8; i++)
      {
       for(j=i+1; j<9; j++)
         {
           if(tab[i]>tab[j]){
                             temp=tab[i];
                             tab[i]=tab[j];
                             tab[j]=temp;
                  }}}
 
    printf("Voici le 1er classement\n");
    for(i=0; i<9 ;i++){
                       printf("la case %d a pour valeur %d\n",i,tab[i]);
                       }
 
    printf("\nDonner un element a inserer :");
    scanf("%d",&nouveau);              
    printf("\nVoici le 2eme classement\n");    
    ok=false;
 
    for(i=8;ok==false && i>=0;i--)
       {    
       if(i==0){
               tab[i+1]=tab[i];
               tab[0]=nouveau;
               ok=true;
               }
       // on decale vers la droite les valeurs superieur a mon nouveau elements 
       else if(tab[i]>nouveau){ tab[i+1]=tab[i]; }
       else {
             tab[i+1]=nouveau;
             ok=true;
             }                     
       }
    for(i=0; i<10 ;i++){ printf("la case %d a pour valeur %d\n",i,tab[i]); }
    system("pause");
    return 0;                
}

et le second fonctionnant mal
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
 
 
#include <stdlib.h>
#include <stdio.h>
 
int main(){
    // Déclaration des valeurs et du tableau
    int nouveau, a, i, tab[11];
    bool ok;
    // Entrer valeurs dans le tableau
 
    for(i=0; i<10 ;i++)
       {
        printf("Donner un element  %d : ", i);
        scanf("%d", &nouveau);
        ok=false;
 
        if(i>0)
          {
           for(a=i; a>=0 && ok==false ;a--)
             {
              if(a==0){
               tab[a+1]=tab[a];
               tab[0]=nouveau;
               ok=true;
               }
       // on decale vers la droite les valeurs superieur a mon nouveau elements 
               else if(tab[a]>nouveau){ tab[a+1]=tab[a]; }
               else {
                    tab[a+1]=nouveau;
                    ok=true;
                    }                     
       }}
       else {tab[0]=nouveau;}}
 
 
 
    for(i=0; i<10 ;i++){
                        printf("la case %d a pour valeur %d\n",i,tab[i]);
                        }           
    system("pause");
    return 0;                
}
Je sais que sa fait beaucoup de lignes de code mais je ne peux pas citer qu'une partie, n'arrivant pas a comprendre d ou vient mon erreur.

Je vous remercie d'avance pour votre aide