Problema con la comprensión de un código

Iniciado por ferchundo9, 8 Octubre 2016, 01:09 AM

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

ferchundo9

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void permutaciones(char *conjunto, size_t card, size_t elem);

int main(void)
{
   char conjunto[] = "cat";
   size_t card = sizeof conjunto - 1;
   
   permutaciones(conjunto, card, 0);
   
   return EXIT_SUCCESS;
}

void permutaciones(char *conjunto, size_t card, size_t elem)
{
   if (card > 1){
      int i;
     
      permutaciones(conjunto, card - 1, elem + 1);
     
      for (i = 1; i < card; i++){
         char temp;
         
         temp = conjunto[elem + i];
         memmove(conjunto + elem + 1, conjunto + elem, i);
         conjunto[elem] = temp;
         
         permutaciones(conjunto, card - 1, elem + 1);
         
         memmove(conjunto + elem, conjunto + elem + 1, i);
         conjunto[elem + i] = temp;
      }
   }else
      puts(conjunto);
}

Soy nueve en esto de la programación y me pasaron este código y hay muchos elementos que no entiendo, necesito que me echeis un cable.

ivancea96


ferchundo9

Lo contenido en for() si me pudieras y diciendo que se hace en cada linea de código me ayudaría mucho.


ivancea96

Hombre, hay que decir que no es un código sencillo para quien está empezando.
Tepuedo explicar qué hacen las sentencias, cómo funcionan los elementos de C++, y lo que quieras.
Pero el algoritmo en sí, mejor que lo veas tú.
Es evidente que es un algoritmo recursivo para sacar las permutaciones de un array.
Si dudas en lo que ahce alguna sentencia en sí, pregunta.

dato000

Cita de: ivancea96 en  8 Octubre 2016, 14:27 PM
Hombre, hay que decir que no es un código sencillo para quien está empezando.
Tepuedo explicar qué hacen las sentencias, cómo funcionan los elementos de C++, y lo que quieras.
Pero el algoritmo en sí, mejor que lo veas tú.
Es evidente que es un algoritmo recursivo para sacar las permutaciones de un array.
Si dudas en lo que ahce alguna sentencia en sí, pregunta.

Naaa lo que quiere es que le hagan la tarea (que ya esta hecha).



ferchundo9

Mira lo que me descoloca de verdad es "elem" no se que valores tiene ni cual es su función en todo momento.

ivancea96

Casi sería mejor preguntarle al que lo hizo: https://elrincondelc.com/foros/viewtopic.php?t=13729
Y si no lo hizo él, sabrá su funcionamiento exacto.
De todos modos, en ese post da algo de información acerca del algoritmo, aunque sea escasa.