1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include <stdio.h>
#include <stdlib.h>
void afficher_tableau( long int *p, size_t p_sz );
void tri_croissant ( long int *p, size_t p_sz );
int main()
{
//Demander la taille du tableau avant de procéder à son allocation
size_t p_sz = 0;
printf("\nTaille du tableau : ");
scanf("%d", &p_sz);
//Réaliser l'allocation du dit tableau
long int *p = NULL;
if ( ( p = malloc ( p_sz*sizeof(*p) ) ) )
{
//Si l'allocation réussie, on procède à la saisie des valeurs
printf("\nSaisie des valeurs du tableau :\n");
for( size_t i=0 ; i<p_sz ; i++ )
printf("Saisie de l'element %u/%u : ", i+1, p_sz), scanf("%ld", &p[i]);
//Le tableau étant initialisé, on peut effectuer son tri
tri_croissant( p, p_sz );
//Afficher le resultat du tri
afficher_tableau( p, p_sz );
//On libère la mémoire allouée pour le tableau p
free(p);
}
return 0;
}
void afficher_tableau( long int *p, size_t p_sz )
{
printf("\n");
if ( p )
for ( size_t i=0 ; i<p_sz ; i++ )
printf("\np[%u] = %u", i, p[i]);
}
void tri_croissant( long int *p , size_t p_sz )
{
if ( p ) // On vérifie que le pointeur est non NULL i.e alloué
{
long int swap = 0;
for( size_t i=0 ; i<p_sz ; i++ )
for( size_t j=i ; j<p_sz ; j++ )
if ( p[i]>p[j] )
{
swap = p[j];
p[j] = p[i];
p[i] = swap;
}
}
} |
Partager