Ranger par ordre croissant les éléments d'un tableau

Résolu/Fermé
diaguily9 Messages postés 17 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 17 mai 2015 - Modifié par Chris 94 le 15/02/2015 à 02:06
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 18 févr. 2015 à 09:50
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;
}
}




1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 16/02/2015 à 10:49
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.

https://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
0
diaguily9 Messages postés 17 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 17 mai 2015
16 févr. 2015 à 20:26
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
0
diaguily9 Messages postés 17 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 17 mai 2015
16 févr. 2015 à 20:27
le corrigé complet je voulais dire
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 17/02/2015 à 11:08
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 : https://www.commentcamarche.net/infos/25899-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
0
diaguily9 Messages postés 17 Date d'inscription vendredi 16 janvier 2015 Statut Membre Dernière intervention 17 mai 2015
17 févr. 2015 à 14:05
Bonjour,
merci beaucoup Dal j'ai trouvé la solution
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
18 févr. 2015 à 09:50
bravo diaguily9 :-)
0