Práctica Universidad, programacion c++

Resulta que estando algo aburrido en el trabajo, una compañera en principio de broma me ha pedido que me entretenga analizando una práctica que tiene que hacer en la facultad. La práctica consiste en escribir un programa (que seria el sistema planetario por ejemplo Ossianne) en C ++ que calcule la distancia minima para visitar un conjunto de puntos. Estos puntos serian planetas que estan alrededor de la estrella (la estrella va ahld). Los datos (campos) de los planetas a tener en cuenta serian el nombre, distancia a la estrella, radio del planeta, masa, rotación, numero de lunas, inclinacion orbital, excentricidad orbital (ni idea de que es eso xD) y densidad. El programa deberia calcular una ruta para visitar todos los planetas recorriendo la mínima distancia. El punto de partida puede ser la propia estrella u otro planeta. Una vez calculada la ruta, el software procedera a realizar una simulacion de la visita. Cada cierto tiempo, se actualizará la visualización al siguiente planeta visitado. En cualquier momento, el usuario ha de poder cancelar la visita y seleccionar un nuevo punto de partida para recorrer los planetas aún no visitados. El programa calculará entonces una nueva ruta sólo con los planetas aún no visitados y volverá a empezar la simulación con dicha ruta.

XD, no quiero ni mucho menos que pongais trozos de codigo, solo quiero que deis ideas, ya que ahora mismo estoy dandole a la cabeza mientras paso la tarde en el curro. Parece sencillo a simple vista y no se si hay que tener en cuenta todos los campos, por lo menos el de excentricidad orbital no tengo ni idea para que podria servir. Bueno, a ver esas cabezas, y esas ideas xDD.


salu2.
La excentricidad es lo achatada que está la órbita, por lo que sí que es importante a la hora de optimizar un camino que recorra los planetas.

Suerte con el programa.
Det_W.Somerset escribió:La excentricidad es lo achatada que está la órbita, por lo que sí que es importante a la hora de optimizar un camino que recorra los planetas.

Suerte con el programa.


Me habia imaginado que se referia a eso. Bueno, yo no soy el que tiene que tener suerte con el programa, sino mi compañera xd.

He pensado un poco y no se si sera la forma correcta de realizar el programa, pero supongo que lo mas importante es calcular el periodo de traslacion de cada planeta para despues de eso saber a que planeta hay que trasladarse dependiendo de si esta mas junto de otro o no , o sea que aunque el planeta 2 tenga una orbita contigua al planeta 1, si el planeta 2 esta en el lado opuesto quiza hay un camino mas corto hasta el planeta3 y luego otra vez al planeta 2.

O sea que seria calcular el periodo de traslacion de los planetas y luego averiguar en cada momento en que posicion de la orbita esta cada uno. Eso a groso modo.

Lo chungo es averiguar el periodo de traslacion y todo lo demas, pero eso ya se lo dejo a mi compañera que para eso esta en la universidad xD.

salu2 y gracias.
A mi se me ocurre que es más complejo de lo que parece. Y falta por definir si el recorrido de un planeta a otro lleva tiempo. Si el viaje es instantáneo el problema es muy simple y es un recorrído de grafos mínimo. Pero como el viaje no sea instantáneo, la cosa se complica:
La idea es que partiendo de una posición inicial de los planetas, seleccionemos una ruta, y recalculando la posición de los planetas una vez pasado el tiempo que tardaríamos en llegar al destino, seleccionar otro y así sucesivamente. Sin embargo esto no es trivial. Si por ejemplo tenemos 3 planetas A B C que al iniciar el viaje la ruta más corta es AB = 10 , pero una vez llegamos a B, debido al movimiento de los planetas la ruta entre a BC = 30, tenemos un total de 40 unidades.
Sin embargo si hubiéramos hecho la ruta entre AC = 20, y luego por la posición de los planetas la ruta CB = 15, el total es 35, por lo que sería la verdadera ruta menor.
La solución pasa por implementar el algoritmo de Dijkstra. Eso sí, si se supone que los planetas están en movimiento continuamente y que el tiempo de desplazamiento no es despreciable, habrá que realizar modificaciones.

Tienes el pseudocódigo en la wiki: http://es.wikipedia.org/wiki/Algoritmo_de_Dijkstra#Pseudoc.C3.B3digo
Un poco más abajo tienes el código fuente del algoritmo en C.

Tendrás que implementar una clase planeta, y luego una instancia de la clase por cada planeta.
Sinceramente, si es solo una práctica, se han pasado un huevo
Ademas si el tiempo de viaje no es despreciable, mientras viajas, tu planeta de destino se mueve, y la distancia original puede aumentar o reducirse.

Sin saber las especificaiones de la practica poco mas se puede decir, pero puede ser una practica jodida.
Tu amiga estudia Física, a que si? xD

Y va como mínimo en 4º!
Dios, y yo que estaba to feliz con mi juego de los barquitos en C#... [tomaaa]

En estos casos es cuando se nota la diferencia entre la universidad y los Módulos (estoy terminando el de A.S.I.) [666]
bascu escribió:Dios, y yo que estaba to feliz con mi juego de los barquitos en C#... [tomaaa]

En estos casos es cuando se nota la diferencia entre la universidad y los Módulos (estoy terminando el de A.S.I.) [666]



Hombre, es que esta en el último año y es su cuarta práctica (creo que es la última). Algo dificil tendria que ser pero vamos, coincido en que se han pasado un pelin xD.

No es fisica, es ingenieria tecnica de gestion (pero vamos de dificultad ya con esta va sobrada xD, no necesita fisica.)

Todo eso que comentais ya lo habia pensado, y en principio la dan la opcion de que los viajes sean instantaneos, pero matizan que seria mas realista si no fuera asi, (vamos que te "obligan" a adornar el programa calculando lo que tarda la nave en recorrer la ruta.. XD). Si se tiene en cuenta que los planetas se mueven constantemente , asi como que el viaje no es instantaneo, el programa es xungo xungo, mas que nada por todos los calculos que hay que realizar. Ahora entiendo mas que nunca la razon entre otras, del porque deje la carrera .. [tomaaa]

Ademas, si en cualquier momento hay que inicializar los calculos de nuevo para recorrer los demas planetas si empezamos desde otro lugar, mas dificil todavia, los planetas restantes se habran movido... en fin.. gracias por las ideas gente.

He estado mirando el algoritmo de Dijkstra, y realmente lo veo dificil dificil, mas que nada porque ese "programita" es unicamente el algoritmo, faltaria implementar todo lo demas.. espero que la pobre ya sepa la que se le viene encima xD.

Salu2.

PD.: supongo que no en todas las carreras y no en todas las uni y no siempre pondran estos problemas tan complemos, supongo que sera la suerte, mas aun cuando luego en la practica (cuando se empieza a trabajar) no se trabaja con casos tan dificiles.
A ver, puestos a complicarlo se poddría hacer y mucho, ya que las órbitas pueden tener diferente inclinación, habrá que saber en qué instante de tiempo cada planeta pasa por su apogeo (o perigeo o cualquier punto definido de la órbita), etc. Pero sabiendo que tu amiga no estudia fisica ni nada parecido y que parece que no hay muchos datos, imagino que hay que empezar a simplificar a piñón y asumir cosas, no? Es decir, que falta más info sobre la práctica porque con lo que has dado está todo muy en el aire xD

Un saludo!
Es un tipo de algoritmo bastante visto en la universidad (al menos en la mía).

Este año para un trabajo sé que un grupo hizo algo parecido. El problema es similar al problema del viajante de comercio, que es un problema clásico, eso sí, deberá hacer bastantes modificaciones, pero la idea para el algoritmo la puede coger de allí.

Un saludo
[quote="resakosix"]Es un tipo de algoritmo bastante visto en la universidad (al menos en la mía).

Este año para un trabajo sé que un grupo hizo algo parecido. El problema es similar al problema del viajante de comercio, que es un problema clásico, eso sí, deberá hacer bastantes modificaciones, pero la idea para el algoritmo la puede coger de allí.

Un saludo [/QUOTE
Como ya he dicho, depende. Depende de lo que te pidan realmente en el problema es algo más complicado que un Prim
xRas3ngaNx escribió:No es fisica, es ingenieria tecnica de gestion (pero vamos de dificultad ya con esta va sobrada xD, no necesita fisica.)
Y lo estudia en la UCM, y la practica es de LP2 XD XD

El otro dia -antes de semana santa- estuve ayudando algo a una amiga sobre esa misma practica, aunque aun no habian llegado ahi. Estaban con la carga de distancias del fichero, y la verdad es que la practica esta jodida. Ahora tengo algo de prisa pero luego leo y lo mismo puedo contestarte algo, aunque no creo porque su compañero es un celoson XD XD
12 respuestas