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
|
#include <stdio.h>
#include <stdlib.h>
void permutation( char* e, int nb, int rang) ;
int main( int argc, char** argv )
{
int nb ; /* Le nombre d'entier à permuter */
char entree[3]={'A','B','C'} ; /* Le tableau qui contiendra les nombres */
int i;
printf( "Nb d'entier : " ) ; fflush(stdin) ;
fflush( stdout ) ; scanf( "%d", &nb ) ;
permutation( entree, nb, 0) ;
return 0 ;
}
void permutation(char* e, int nb, int rang)
{
int i, j ;
if ( rang == nb-1 ) /* Le zone à permutter ne contient qu'un élément */
{
char* sep = "" ;
for( i=0; i<nb; i++ )
{
printf( "%s%c", sep, e[i]) ;
sep = ", " ;
}
printf( "\n" ) ;
}
else
for( i=rang; i<nb; i++ )
{
int prem ;
permutation( e, nb, rang+1) ;
/* on fait tourner les éléments de la zone à permutter */
prem = e[rang] ;
for( j=rang+1; j<nb; j++ ) e[j-1] = e[j] ;
e[nb-1] = prem ;
}
} |
Partager