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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
/*
============================================================================
Name : Untitled 7.c
Author : SAMBIA39
Version : 0.1
Copyright : Copyright (c) 2016 SAMBIA39
Description : Ansi-style
Le code source et algorithme que j'ai posté peuvent contenir des erreurs.
============================================================================
*/
#define MAX 5
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int f_get_random_opti( int x , int y){
static int seed;
if( !seed ){
seed = 1;
srand( (unsigned int)time(NULL) );
}
return (rand() % (y - x + 1));
}
void f_print_data( size_t size, char t_data[][size] ){
unsigned int i = 0;
unsigned int j = 0;
for( i = 0; i < size; i++ ){
for( j = 0; j < size; j++ )
fprintf( stdout, "%c", t_data[i][j] );
fprintf( stdout, "\n" );
}
}
void f_shuffle_opti_knuth( size_t size, char ptr[] ){
char c_str = '\0';
unsigned int i = 0;
unsigned int r = 0;
for( i = 0; i < size; i++ ){
r = (unsigned int)f_get_random_opti( i, 1 );
c_str = ptr[r];
ptr[r] = ptr[i];
ptr[i] = c_str;
}
}
void f_algo_shuffle_knuth( size_t size, char ptr[][size] ){
unsigned int i = 0;
unsigned int j = 0;
for( i = 0; i < size; i++ ){
for( j = 0; j < size; j++ )
f_shuffle_opti_knuth( size, &(*ptr[j]) );
}
}
int main( void ){
char t_data[MAX][MAX] ={
{"BONGH"},
{"RDE"},
{"RETRE"},
{"RTYTE"},
{"RERTY" }
};
f_print_data( MAX, t_data );
fprintf( stdout, "\n====\n" );
f_algo_shuffle_knuth( MAX, t_data );
f_print_data( MAX, t_data );
return EXIT_SUCCESS;
} |
Partager