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

Signaler
Messages postés
17
Date d'inscription
vendredi 16 janvier 2015
Statut
Membre
Dernière intervention
17 mai 2015
-
Messages postés
5430
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 octobre 2020
-
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

Messages postés
5430
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 octobre 2020
904
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
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
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
Messages postés
5430
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 octobre 2020
904
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/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
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
Messages postés
5430
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 octobre 2020
904
bravo diaguily9 :-)