Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ferchundo9 en 8 Octubre 2016, 01:09 am



Título: Problema con la comprensión de un código
Publicado por: ferchundo9 en 8 Octubre 2016, 01:09 am
#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.


Título: Re: Problema con la comprensión de un código
Publicado por: ivancea96 en 8 Octubre 2016, 01:31 am
¿Qué parte son las que no entiendes?


Título: Re: Problema con la comprensión de un código
Publicado por: ferchundo9 en 8 Octubre 2016, 01:34 am
Lo contenido en for() si me pudieras y diciendo que se hace en cada linea de código me ayudaría mucho.


Título: Re: Problema con la comprensión de un código
Publicado por: dato000 en 8 Octubre 2016, 04:28 am
https://www.programarya.com/Cursos/C++/Ciclos/Ciclo-For


Título: Re: Problema con la comprensión de un código
Publicado por: 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.


Título: Re: Problema con la comprensión de un código
Publicado por: dato000 en 8 Octubre 2016, 15:21 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).


Título: Re: Problema con la comprensión de un código
Publicado por: ferchundo9 en 8 Octubre 2016, 15:40 pm
Mira lo que me descoloca de verdad es "elem" no se que valores tiene ni cual es su función en todo momento.


Título: Re: Problema con la comprensión de un código
Publicado por: ivancea96 en 8 Octubre 2016, 15:48 pm
Casi sería mejor preguntarle al que lo hizo: https://elrincondelc.com/foros/viewtopic.php?t=13729 (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.