Vous êtes sur la page 1sur 1

Formations Financements Pour les entreprises EM

Accueil > Forum > Programmation > Langage C > Débutant en C : trier tableau ?

Liste des forums   Mes interventions   Sujets suivis   Rechercher sur le forum 

Débutant en C : trier tableau ? Partage


Comment faire?

Sujet résolu

MoMoTrAt 13 août 2015 à 11:39:48


Ra

Es ce qu'une personne sait comment  creer un fonction qui trie un tableau de valeurs par ordre
croissant en langage C ?

ca fait environ 24h que je suis decus,

j'ai fais un programme mais ca marche pas, ca enerve ;

1 #include <stdio.h>
2
3 #include <stdlib.h>
4
5 void ordonnerTableau(int tableau[], int tailleTableau);
6
7 int main()
8
9 {
10
11 int tableau[7]={6,8,5,9,2,1,0},i=0;
12
13
14
15 ordonnerTableau(tableau,7);
16
17 return 0;
18
19 }
20
21 void ordonnerTableau(int tableau[], int tailleTableau)
22
23 {
24
25 int i=0;int permutateur=0;int k=0;
26
27 for (i=0;i<tailleTableau;i++)
28
29 {
30
31 if (tableau[i+1]<=tableau[i])
32
33 {
34
35 permutateur=tableau[i];
36
37 tableau[i]=tableau[i+1];
38
39 tableau[i+1]=permutateur; permutateur=0;
40
41 }
42
43 }
44
45 for (i=0;i<tailleTableau;i++)
46
47 {
48
49 printf("Valeur: %d\n",tableau[i]);
50
51 }
52
53 }

En fait je veux qu'a la n que les valeurs du tableau soit af cher par ordre de croissance.

-
Edité par MoMoTrAtRa 15 août 2015 à 18:19:10

pagrette 13 août 2015 à 11:44:16

Wow wow, doucement, pas besoin de gros mots ni de MOTS COMME CA.

Tout d'abord, pour qu'on puisse t'aider, il faut que tu poste ton code dans les balises </>
pour que ça donne quelque chose comme ça :

1 C'est mieux là non ?

Car là c'est pas lisible.

Ensuite, comment faire pour trier un tableau? Tu prends une feuille, un stylo, tu fais un
tableau et tu trouve un moyen pour trier ton tableau.

EDIT : Et rajoute le résultat que te donne ton code en l'état actuel des choses.

-
Edité par pagrette 13 août 2015 à 11:46:27

Donnez-moi votre avis sur le cours de Bridge

moratar 13 août 2015 à 11:44:45

Pagrette m'a devancé pour l'af chage du code indenté.

Pour ton tri, que se passe t'il si tu as une suite comme 13, 21, 10 ? n'as tu pas oublié certaines
conditions dans ton tri ?  parce qu'il me semble qu'avec ton code ça donne un truc comme
13 10 21...

-
Edité par moratar 13 août 2015 à 11:48:49

Do. Or do not. There is no try.

michelbill 13 août 2015 à 12:11:03


aud

MohamedTraoré a écrit:

Es ce qu'une personne sait comment  creer un fonction qui trie un tableau de valeurs par ordre
croissant en langage C ?

Putain!!!!, ca fait environ 24h que je suis decus,

j'ai fais un programmer mais ca marche pas, ca enerve ;

(...)

AIDER MOI S'IL VOUS PLAIT!!!!

Bien sur qu'on sait, en n, la plupart. On voit même du premier coup d'oeil ce qui ne va pas
dans ton code, il y a au moins deux raisons, mais on te le dira pas parce que ça ne t'aiderait
pas.

En fait tu as besoin de méthode. Y a deux voies,

soit tu considères que ton programme est sur la bonne voie,


soit tu considères qu'il est trop mal barré et qu'il faut repartir de zero.

Comme tu nous as présenté le source, on suppose que tu veux suivre la première voie, c'est
à dire

chercher ce qui ne va pas


trouver comment le corriger

L'idée de base, c'est que ça ne marche pas. Tu as dû le constater, sinon tu ne serais pas là.

Mais que ça marche pas, ça peut prendre plusieurs formes

soit ça produit des résultats incorrects


soit ça plante (erreur à l'exécution)
soit ça boucle (ça ne s'arrête pas).

ça, tu nous as pas dit.

on va supposer que c'est un résultat incorrect. Un moyen de voir ce qui ne va pas, c'est de
faire dérouler à la main, papier-crayon, pour our à quel moment ça ne se passe pas comme
on voudrait. Mais là tu as fait un test sur un tableau de 7 cases, ça risque d'être un peu long.

Tu peux essayer de trouver un tableau plus petit où ça ne marche pas non plus. 1 seule
case. 2 cases. 3 cases.  Et là, tu tu auras un petit exemple qui ne marche pas, où tu pourras
faire dérouler à la main.

-
Edité par michelbillaud 13 août 2015 à 12:15:07

bibou261 13 août 2015 à 12:18:04

Le problème réside en partie dans l'algorithme. C'est une mauvaise implémentation de ce


qui semble être un tri par bulles.

Comme je suis une grosse feignasse : https://openclassrooms.com/courses/le-tri-a-bulles.


C'est du C++, mais ça s'adapte facilement en C et il y a des exemples

EDIT : 7umpy : effectivement, j'ai pas fait gaffe à ça ...

-
Edité par bibou261 13 août 2015 à 12:47:06

7umpy 13 août 2015 à 12:43:44

Salut salut !

Tout d'abord je vois des variables déclarées non utilisées (i dans main et k dans
ordonnerTableau) mais la n'est pas le probleme.

Dans ta première boucle tu t'arrêtes à la taille du tableau - 1 (donc le dernier element de


ton tableau puisque celui-ci commence à 0) puis tu compares avec l'élément + 1 qui se
trouve en dehors de ton tableau. Cela risque de poser probleme.

Ensuite, dans ton code on voit que 0 se trouve en dernier dans ton tableau, comment peut-
il remonter au début avec une seule permutation ?.. regarde le lien de bibou261 tu devrais
mieux comprendre.

michelbill 13 août 2015 à 13:09:30


aud
Spoiler : C'est une seule passe du tri à bulles, avec un débordement d'indice à la n.

+1

MoMoTrAt 15 août 2015 à 16:32:46


Ra

Bonjour à tout le monde,

D'abord pour commencer, je vous presente mes excuse pour la facon dont je me suis exprimé,

Et en n, vos remarques peuvent vraiment aider, j'ai fais les corrections, et voila le programme, et ca
fonctionne parfaitement bien Au fait j'avais pas totalement compris le fonctionnement des
pointeurs, apres une revision ca donne ça:

1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 void ordonnerTableau(int tableau[], int tailleTableau);
5 int main()
6 {
7 int i=0;
8 int tableau[11]={65,23,8,0,5,1,6,83,20,4,0};
9 ordonnerTableau(&tableau,11);
10 for(i=0;i<11;i++)
11 {
12 printf("%d\n",tableau[i]);
13 }
14 return 0;
15 }
16
17 void ordonnerTableau(int tableau[], int tailleTableau)
18 {
19 int permutateur=0;int i=0;int rps=0;
20 do
21 {
22 for(i=0;i<tailleTableau-1;i++)
23 {
24 if(tableau[i+1]<tableau[i])
25 {
26 permutateur=tableau[i];
27 tableau[i]=tableau[i+1];
28 tableau[i+1]=permutateur;
29 } rps++;
30 }
31 } while (rps<tailleTableau*tailleTableau);
32 }

Merci a tous

-
Edité par MoMoTrAtRa 15 août 2015 à 18:17:23

michelbill 15 août 2015 à 17:09:25 Signaler Citer


aud
MohamedTraoré a écrit:

Bonjour à tout le monde,

Pour Pagrette, je sais pas vraiment comment faire pour ce que tu viens de montrer, mais bon je
chercher comment faire prochainnement.

D'accord. Alors on lira ton message prochainement quand tu l'auras remis en forme
correctement.

C'est pas pour t'embêter, il suf t que tu lises ce qu'on t'a dit, et d'un autre côté, af ché
comme ça, c'est pas lisible.

le </>, c'est un bouton qui apparait quand tu tapes ou modi es ton message. regarde bien.
clique dessus.

-
Edité par michelbillaud 15 août 2015 à 17:10:12

Débutant en C : trier tableau ?

Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour ×
poser ta question.

Style Taille Editeur Markdown


HTML

Répondre

OPENCLASSROOMS OPPORTUNITÉS POUR LES ENTREPRISES Français


 
Qui sommes-nous ? Nous rejoindre Former et recruter

Financements Devenir mentor


EN PLUS

Expérience de formation Devenir coach carrière


Boutique
Forum
AIDE Mentions légales
Blog
Conditions générales d'utilisation
Presse
Politique de protection des données
personnelles

Cookies

Accessibilité

Vous aimerez peut-être aussi