Programa en C de permutaciones

Iniciado por JuanJose97ortiz, 28 Junio 2019, 22:57 PM

0 Miembros y 1 Visitante están viendo este tema.

JuanJose97ortiz

Hola necesito ayuda urgente como puedo hacer este programa en C:   Escriba un programa que liste todas las permutaciones de ABCDEF en las que A aparece antes que D.
Resulta que procedí a hacer el análisis del programa, pero no encuentro la forma de empezar a desarrollarlo, las entradas ya están pero no se como puedo empezar a hacer las permutaciones de las letras, cualquier aporte de como puedo ir desarrollándolo me serviría mucho, gracias

K-YreX

En google habrá muchos ejemplos de permutaciones en C.
Y para controlar la condición de que A debe ir antes que D, calcula todas las permutaciones y haz una función que compruebe si eso se cumple o no y utiliza solo las permutaciones que lo cumplan.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;

@XSStringManolo

Para resolver problemas te aconsejo plantear primero el problema con los pasos que harías para serolverlo con un lapiz y un papel imitando tu pensamiento:
Pongo las letras en el papel.
ABCDEF
Pongo todas las combinaciones posibles 1 por 1.
ACBDEF
ADBCEF
AEBCDF
AFBCDE

ABDCEF
ABECDF
ABFBCD
......

Que estás haciendo?
Compara cada cadena con la original:
ABCDEF
ACBDEF
Intercambiaste el elemento con índice [2] por el elemento con índice [1].

En la siguiente cadena?
ABCDEF
ADBCEF
Intercambiaste la cadena anterior ACBDEF moviéndole el índice [3] por el índice [1]

En la siguiente cadena?
ABCDEF
AEBCDF

Intercambiaste la cadena anterior ADBCEF moviéndole el índice [4] por [1] AEBCDF

....

Ya encontraste un patron para parte del algoritmo. Si llamas al primer índice X = 2, solo tienes que cambiar la letra guardada en el indice [X] por la letra en el índice [1]. Puedes hacer una funcion a la qje le pases dos 2 numeros enteros y te devuelva un array con esas posiciones intercambiadas.

El bucle de momento sería:
int x = 2;
for (int i = 0; i < tamañoArray; ++i;
{
ArrayConLasLetras = FuncionCambioElementosArray(x, 1);
++x;
}

Te falta comprobar la posición de los elementos para saber si hacerle printf.
Te faltan permutaciones. Puedes ir comprobando paso por paso los resultados del programa e ir modificándolo paso a paso para que siga realizando otras permutaciones.

O seguir buscando "con el papel" el siguiente paso que deberías dar para sacar más permutaciones.
Cuando las tenga todas observa si encuentras una operación matemática para calcular todas las permutaciones.