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
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.
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 vous remercie d'avance pour votre aide
Partager