Votre question
Résolu

programme qui classe par ordre croissant

Tags :
  • Adobe Premiere
  • Créer un programme
  • Programme
Dernière réponse : dans Programmation
26 Février 2017 13:02:16

je dois créer un programme en C++ qui affiche 10 nombres aléatoires dans un tableau et qui ensuite les classe par ordre croissant. j'ai réussie la première partie mais la seconde me pose problème, pouvez-vous m'aider?

mon code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

int main()
{
int tableau_aleatoire[N];
int i,j=0;
srand(time(NULL));

for(i=0;i<N;i++)
{ j=rand()%100;
tableau_aleatoire=j;

printf("|%d| ",tableau_aleatoire);

}
return 0;
}

void tri_insertion(int*tableau_aleatoire,int n){

int i,p,j;
int x;
for(i =1; i < n; i++)
{x = tableau_aleatoire;p = i-1;
while(tableau_aleatoire[p] > x && p-- >0)
{}p++;
for(j = i-1; j >= p; j--)
{tableau_aleatoire[j+1] = tableau_aleatoire[j];}tableau_aleatoire[p] = x;}
}

affiche: |47| |15| |8| |15| |13| |40| |97| |23| |59| |14|
je n'arrive pas à les afficher par ordre croissant.

Autres pages sur : programme classe ordre croissant

Meilleure solution

27 Février 2017 21:13:05



Aller un peut d'algo simple !
suffi de parcourir ton tableau et pour chaque nombre tu regarde si il n'y a pas un nombre plus petit devant lui, si c'est le cas, tu inverse , jusqu’à ce que tu arrive au début du tableau ... quand tu a fini , tu passe au nombre suivant ...

pour ton tableau 47, 15, 8, 15, 13, 40, 97, 23, 59, 14

le premier tour de boucle ne fais rien ... ( enfin dans la pratique )
je démarre donc mon explication sur le deuxième tour ...


je prend donc 15 ...
je regarde devant lui : 47 donc j'inverse ( 15, 47, 8 15 13 40 97 23 59 14
je suis arriver au debut tu tableau , je passe au suivant
je prend donc le 8
je regarde devant lui 47 donc j'inverse ( 15 8 47 15 13 40 97 23 59 14 )
je regarde devant lui 15 donc j'inverse ( 8 15 47 15 13 40 97 23 59 14 )
je suis arriver au debut , je passe au suivant
je prend le 15
je regarde devant lui 15 <47 , j'inverse ( 8 15 15 47 13 40 97 23 59 14 )
subtilité qui n'en est pas une en fais 15 < 15 = false !
je break ma boucle pas besoin d'aller plus loin!
je prend le 13
47 < 13 ( 8 15 15 13 47 ....
...
...
...

8 13 14 15 15 23 40 47 59 97
Spoiler

  1. void tricroissant( int tab[], int tab_size)
  2. {
  3. int i=0;
  4. int tmp=0;
  5. int j=0;
  6.  
  7. for(i = 0; i < tab_size; i++) //On veut remplir la case i du tableau
  8. {
  9. for(j = i+1; j < tab_size; j++) //On vérifie s'il n'y a pas de nombre inférieur
  10. { //Dans les cases suivantes
  11. if(tab[j] < tab[i])
  12. {
  13. tmp = tab[i]; //Si c'est le cas on intervertit les cases
  14. tab[i] = tab[j];
  15. tab[j] = tmp;
  16. }
  17. else
  18. {
  19. break; // Si le nombre devant est plus petit pas besoin d'aller plus loin
  20. }
  21. }
  22. }
  23. }
partage
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS