Holaaaa. Gracias!
Seré más claro... Supongamos que abc y wz son dos palabras o cadenas de eventos generados por dos componentes independientes de un Sistema (respectivamente). Según las condiciones del sistemas el ordenamiento no es cualquier ordenamiento... Al comenzar con la concatenacion abcwz yo espero esto.
abwcz
awbcz
wabcz
wabzc
wazbc
wzabc
guardando los resultados anteriores para reusarlos podría generar estos otros (pero los pierdo, y me imprime wzabc)
awbzc
awzbc
abwzc
Algo de memoria perdida... El código es este
#include <stdio.h>
#include <stdlib.h>
int l3,l1,l2,i,j,s,k,t;
int main(void){
printf("Programa que concatena dos segmentos\n\n"); printf("Introduzca la longitud del primer segmento:"); scanf("%i",&l1
);/*Se piden los datos*/ printf("Introduzca el primer segmento:"); char S1[l1];
printf("\nIntroduzca la longitud del segundo segmento:"); char S2[l2];
printf("Introduzca segundo segmento:"); l3=l1+l2;
int cant;
cant=factorial(l3)/(factorial(l2)*factorial(l1));
printf("\n\n El numero de permutaciones es:%d",cant
); char S3[l3];
for(i=0; i<l1; i++){
S3[i]=S1[i];
}
j=0;
for(i=l1; i<l3; i++){
S3[i]=S2[j];
j++;
}
printf("\n\n El segmento es:%s",S3
);
//dato = (char*)malloc(cant);
char aux1; /*Tamaño maximo de 100*/
char *arreglo[cant];
//char* dato;
s=0;
arreglo[0]=S3;
printf("\n\n OjO es:%s",arreglo
[s
]); for(i=l1; i<=l3-1; i++){
t=0;
for(j=i-1; j>=0; j--){
s++;
aux1=S3[j];
S3[j]=S3[j+1];
S3[j+1]=aux1;
arreglo[s]=S3;
printf("\n\n Permutacion %i en ciclo %i es:%s y Arreglo es %s",s
,t
,S3
,arreglo
[s
]); // t=0;
// while(abs(i+1-j)>1){
// aux1=S3[j+1];
// S3[j+1]=S3[i+1];
// S3[i+1]=aux1;
// s++; t++;
// arreglo[s]=S3;
// printf("\n\n Permutacion %i en ciclo %i es:%s y arreglo es %s",s,t,S3,arreglo[s]);
// }
}
}
//printf("\n\n Permuta DOS es:%s",arreglo[2]);
for(j=0;j<=cant;j++){
printf("\n\n Permuta %d es:%s",j
,arreglo
[j
]); }
return EXIT_SUCCESS;
}