/*"burbuja" para cadena de literales implementada como funcion basada en apuntadores*/ void ordenamiento_cadena(char *b ) { bool desorden; do { desorden = false; // puts(b); <= descomentar si quere ver la dinamica de ordenamiento int i = 0; while (*(b + i) != '\0' && *(b + i + 1) != '\0') { if (*(b + i) > *(b + i + 1) ) { desorden = true; char aux = *(b + i); *(b + i) = *(b + i + 1) ; *(b + i + 1) = aux; } i++; } } while (desorden == true); } #define L 40 char gen_letra() { char alfabeto[] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i' }; return alfabeto[rand() % 9]; } /*generar cadena de literales de longitud aleatoria menor que dim*/ void gencad(char *c , int dim) { int i, N = rand() % (dim - 1); for (i = 0; i < N; i++) *(c + i) = gen_letra(); *(c + i) = '\0'; } int main() { char b[L], i; for (int i = 0; i < 5; i++) { /*generar cadena de literales*/ gencad(b, L); puts("\n cadena generada:"); puts(b); /*ordenar cadena*/ ordenamiento_cadena(b); printf("cadena b[] ordenada: \n"); puts(b); } return 0; }