Buenas. Este ejercicio pide, en resumidas cuentas, que crees una función que "mezcle" un array y lo devuelva. Mi código no genera ningún error o warning en compilación, pero cuando intento ejecutarlo, me tira "violación de segmento ('core' generado)". Adicionalmente, no estoy seguro de que mi código sea muy eficiente en el mezclado que digamos, así que cualquier consejo es agradecido. Sin más, paso mi código:
#include <stdio.h>
#include <stdlib.h>
int
shuffleArray(int array[], int dim){
int aux;
int i=0;
while(i<dim){
aux = array[i];
/*Elegir pos random entre i y dim, y luego intercambiar lugares*/
int posicionElegida = (rand()/(dim-i))+i;
array[i] = array[posicionElegida];
array[posicionElegida] = aux;
i++;
}
}
/*PRUEBA*/
int
main(void){
int array[]={1, 2, 3, 4, 5, 6};
int dim = 6;
shuffleArray(array, dim);
for(int i=0; i<=dim; i++){
printf("%i\t", array[i]);
}
}
Buenas. Este ejercicio pide, en resumidas cuentas, que crees una función que "mezcle" un array y lo devuelva. Mi código no genera ningún error o warning en compilación, pero cuando intento ejecutarlo, me tira "violación de segmento ('core' generado)". Adicionalmente, no estoy seguro de que mi código sea muy eficiente en el mezclado que digamos, así que cualquier consejo es agradecido. Sin más, paso mi código: