Código fuente C y C++

En esta sección iremos incluyendo ficheros fuente, de algunos problemas que nos hemos ido encontrando. Rebuscaremos en nuestras bibliotecas, e intentaremos incluir todo aquello que pueda ser de utilidad o que tenga alguna característica didáctica.

También incluímos aquí algunos programas que los colaboradores han ido enviándonos.

Intentaremos que los programas o funciones estén lo mejor documentadas posible, y explicaremos la necesidad que hizo surgir cada programa y la utilidad que pueda tener, así como sus limitaciones y fallos.

Temas:

Los programas y enlaces están clasificados por temas, elige el tema que prefieras de la lista siguiente:

Tema actual: Algoritmos

NewBur (2003-06-20)

Autor: Manasés Jesús Galindo Bello

Este es el método de la burbuja con una optimización que revisa si hay elementos ordenados, lo que ahorra comparaciones y número de vueltas a los ciclos.

Utiliza arreglos con una constante (MAX) que indica el número máximo de números a ordenar.

Detalles:

  • NewBur.cpp 20/06/2003 (1.450 bytes)

Fichero: newbur.zip
Tamaño: 855 bytes

Número de descargas: 10611

Cambio de bases (2001-08-13)

Autor: Luis Abalos 26-6-01

"Este es un programa de cambio de bases que incorporo porque lo considero bastante interesante. Permite cambiar de base 2 a base 32. El funcionamiento del mismo, es introducir una base de destino y una base final en la que se calculara el numero. Permite operar con letras, que van apareciendo en cada base (mayusculas), y tiene controles de errores, aunque hay uno que no esta terminado que es para el caso de que se introduzca un número con cifras de más. Faltan algunos controles. Si pudiera reducir algo más el código me sería muy útil. Lo mando por si alguien está interesado. Está hecho en BorlandC para C."

Detalles:

  • binario.cpp: 13/08/2001 (16.311 bytes)

Fichero: binario.zip
Tamaño: 3755 bytes

Número de descargas: 11268

Código de algoritmos genéticos I (2001-06-06)

Autor: Milton Osses Castro

Sobre costo mínimo de una ruta especifica con grafica.

Detalles:

  • Genet.cpp 06/06/2001 (2.802 bytes)

Fichero: Genet.zip
Tamaño: 3918 bytes

Número de descargas: 15816

Código de algoritmos genéticos II (2001-06-06)

Autor: Milton Osses Castro

Árbol de expansion mínima de una ruta específica (Genetico.cpp)

Detalles:

  • Genetico.cpp 06/06/2001 (10.968 bytes)

Fichero: Genetico.zip
Tamaño: 3762 bytes

Número de descargas: 12973

El camino más corto (2000-08-10)

Autor: Salvador Pozo

El problema consiste en trazar la ruta más corta posible que pase por un número indeterminado de puntos. Además los puntos de partida y final son fijos y las distancias entre los puntos deberán ser introducidas.

Por mi parte he introducido algunos límites, aunque no demasiado rígidos:

  1. Dentro de la ruta no puede pasarse dos veces por la misma ciudad.
    Esta es una limitación arbitraria, ya que cada uno es muy libre de hacer las excursiones como quiera, de hecho, si para hacer la ruta A->B->C, es más corto hacer A->C->B->C, yo al menos lo haría.
    Si parece que este caso es muy poco probable, basta con imaginar que no existe carretera entre A y B, y que el único camino para ir de A a B es pasar por C.
    En nuestro ejemplo, cuando introduzcamos las distancias entre los puntos no pondremos una distancia infinita entre A y B, sino que pondremos la distancia de A a B pasando por C. De este modo el funcionamiento es lógico y no se contradice el enunciado.
  2. Se usa una función recursiva, es la técnica más potente y eficaz, (al menos que yo conozca), para generar todas las permutaciones posibles de un conjunto de elementos.
  3. Para mantener la claridad del programa se llamará a los puntos A, B, C..., esto limita su número máximo a 26, que son las letras que tenemos. De todos modos el programa es fácil de modificar para incluir más puntos, pero es dudoso que alguien esté dispuesto a introducir las 325 distancias para 26 puntos.
    Para 100 puntos son casi 5000 distancias. Y esto no es lo peor, ya que el tiempo de ejecución también crece rápidamente.

El programa es fácil de modificar para hacer que los puntos de partida y destino no estén impuestos.

Me parece que es un buen ejemplo de programación de funciones recursivas.

Detalles:

  • ruta.c 10/08/2000 (6.640 bytes)

Fichero: ruta.zip
Tamaño: 2403 bytes

Número de descargas: 19021



suministrado por FreeFind
Valid HTML 4.0! Valid CSS!