void orden_cadena(char a[]) { bool desorden; do { desorden = false; //antes de entrar al siguiente ciclo, supongamos // que el arreglo ya es ordenado /*for (int i = 0; i < dim - 1; i++)*/ int i = 0; while (a[i] != '\0' && a[i + 1] != '\0') { // recorrido de pares sucesivos if (a[i] > a[i + 1]) { // si se detectó el hecho de datos desordenados desorden = true; // es para comunicar al 'while' // que hay que seguir ordenando char aux = a[i]; a[i] = a[i + 1]; a[i + 1] = aux; } i++; } } while (desorden/*repetir mientras hay desorden*/); } void impr_char(char ar[], int dim) { for (int i = 0; i < dim; i++) printf("%c ", ar[i]); printf("\n"); /*imprimir el cuarto (!!!) elemento de arreglo a[]*/ } char letra3() { char alfabeto[] = { 'a', 'b', 'c', 'd','e','f', 'g', 'h', 'i' }; return alfabeto[rand() % 9]; } void gencad(char c[], int dim) { int longi = rand() % dim; int i; for (i = 0; i < longi; i++) c[i] = letra3(); c[i] = '\0'; } void concatcadenas(char *a, char *b, char *c) { while (*a != '\0') { *(c++) = *(a++); } while (*b != '\0') { *(c++) = *(b++); } *(++c) = '\0'; } void filtrar_wx(char *c, char *d) { while (*c != '\0') { if (*c != 'w' && *c != 'x') *(d++) = *(c++); else c++; } *(++d) = '\0'; } int main() { char A[DIM], B[DIM], C[2*DIM], D[DIM]; char control; do { gencad(A, DIM); puts("se genero la cadena:"); puts(A); puts("dame texto < %d simbolos", DIM - 1); gets_s(B); puts("texto introducido"); puts(B); concatcadenas(A, B, C); puts("texto concatenado"); puts(C); filtrar_wx(C, D); puts("texto sin w's y sin x's"); puts(D); orden_cadena(D); puts("texto ordenado"); puts(D); puts("teclees 't' para terminar u otro simbolo para segir"); control = getch(); } while (control!='t); }