Ranger par ordre croissant les éléments d'un tableau [Résolu/Fermé]

Messages postés
17
Date d'inscription
vendredi 16 janvier 2015
Statut
Membre
Dernière intervention
17 mai 2015
-
Bonjour,
svp aidez moi je veux écrire un programme qui classe les éléments d'un tableau par ordre croissant. voila ce que j'ai fait mais desfois ça marche et desfois ça ne marche pas
#include<stdio.h>
#include<conio.h>
int main ( ){
int n,i,j=0,tab[10];
printf("entrer le nombre de valeurs:\n");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("entrer une valeur pour chaque cellule");
scanf("%d",&tab[i]);
if(tab[i]>tab[i+1]){
tab[i]=j;
tab[i+1]=tab[i];
j=tab[i+1];
}
for(i=0;i<n;i++){
printf("%d",&tab[i])
}
getch ( );
return 0;
}
}




Afficher la suite 

1 réponse

Messages postés
5284
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 novembre 2019
820
0
Merci
Salut diaguily9,

Collecte dans un premier temps les éléments du tableau, trie le ensuite. Tu ne peux pas faire les deux en même temps.. du moins pas comme cela.

Pour un tri à bulles, tu dois refaire une passe sur le tableau tant que tu as au moins une permutation.

http://fr.wikipedia.org/wiki/Tri_%C3%A0_bulles

en lignes 9 et 6, enlève le &, car pour le scanf, tab[i] est déjà un pointeur, et pour le tab[i] de printf, ce n'est pas un pointeur mais le contenu que tu veux afficher.

Dal
diaguily9
Messages postés
17
Date d'inscription
vendredi 16 janvier 2015
Statut
Membre
Dernière intervention
17 mai 2015
-
salut Dal et merci beaucoup pour ton intervention mais est-ce que tu peux me donner complet s'il vous plait. je suis débutant et je n'ai pas bien compris
diaguily9
Messages postés
17
Date d'inscription
vendredi 16 janvier 2015
Statut
Membre
Dernière intervention
17 mai 2015
-
le corrigé complet je voulais dire
[Dal]
Messages postés
5284
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 novembre 2019
820 -
je me suis trompé, en ligne 6 tu dois bien conserver le &, c'est en ligne 9 que tu dois le retirer.

en analysant ton code plus en détails, je vois qu'il y a de nombreuses autres erreurs, dont une erreur de syntaxe (oubli du point-virgule à la fin de la ligne 16) qui fait qu'il est impossible que ton code compile et que tu puisses l'exécuter, contrairement à ce que tu indiques.

je peux t'indiquer quelles sont tes erreurs, si c'est ce que tu entends par "corrigé complet", mais te fournir le code qui est la réponse à ton exercice irait à l'encontre de la Charte du forum : http://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm

la première chose à faire est de prendre un papier et un crayon et d'écrire ton algorithme, là ta logique est fausse.

ensuite, tu peux le traduire en code C.

un macro-algorithme (à détailler par tes soins) serait :

- obtenir un tableau d'entiers d'une certaine taille
- permutation = 0
- répéter les opérations suivantes :
---* énumérer les cases du tableau
---* en permutant les cases consécutives si elles ne sont pas ordonnées
---* en cas de permutation, mettre permutation à 1
- répéter tant que permutation == 1
- afficher le tableau

lorsque tu écris un programme, écris le petit à petit et teste chaque partie avant de passer à la suivante.

Ecris d'abord "- obtenir un tableau d'entiers d'une certaine taille", teste.

écris ensuite "- afficher le tableau", teste que cela affiche bien le contenu du tableau tel que tu l'as saisi.

écris ensuite la partie correspondante au tri, teste, jusqu'à mise au point.

Lorsqu'on écrit un programme, le processus est itératif, et il n'est pas pratique d'avoir à saisir à chaque fois un jeu de données pour tester.

Une fois que tu as écrit ta partie sur la saisie des données et qu'elle est au point, tu peux t'en passer pour développer et tester le code correspondant à ton tri.

Commente la alors et met directement dans ton code un tableau avec des données d'exemple, ce qui te permettra d'accélérer ton cycle de développement.

Par exemple, comme cela :

#include <stdio.h>

int main (void){
    int n = 10;
    int tab[10] = {
        67, 23, 27, 1, 98,
        6, 26, 10, 8, 30
    };
/*
 * Ici ton code qui effectue le tri
 */

/*
 * Ici ton code qui affiche le tableau
 */

    return 0;
}

Une fois que tu as tout mis au point, retire tes données de test et réinsère le code comportant la saisie utilisateur, si elle t'est demandée.

Dal
diaguily9
Messages postés
17
Date d'inscription
vendredi 16 janvier 2015
Statut
Membre
Dernière intervention
17 mai 2015
-
Bonjour,
merci beaucoup Dal j'ai trouvé la solution
[Dal]
Messages postés
5284
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 novembre 2019
820 -
bravo diaguily9 :-)