Autor Tema: Las lunas del sistema solar y la tercera ley de Kepler almacenadas el un .txt

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

12 Septiembre, 2008, 10:06 pm
Leído 3853 veces

leonardo09

  • Leonardo Andrés Jofré Flor
  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 786
  • Karma: +0/-0
  • Sexo: Masculino
  • Leonardo Jofré
    • Leonardo Andrés Jofré Flor
 Este programa si que está bueno:

El archivo "Lunas.txt" contiene información sobre los satélites naturales del sistema solar, ordenados ascendentementes, para cada planeta por radio orbital.

Lunas de        nombre             radio orbital [km]        período [seg]          diámetro [km]

Mercurio            0

Venus               0

Tierra          1 Luna                    384400                  2360622           3474.8

Marte          1 Fobos                      9377                     27576               22.2
                   2 Deimos                  23460                   109260               12.6

Júpiter         1 Metis                   128000                    25488                43
                   2 Adrastea              129000                    25747                20.7
                   3 Amaltea               181400                    43027              180.7
                   4 Tebe                   221900                    58320               100
                   5 Ío                       421800                  152842              3643
                   6 Europa                 671100                  306806             3122
                   7 Ganímedes         1070400                  618192             5262
                   8 Calisto               1882700                 1441983             4821

...etc.

Escriba un programa que lea los datos y grabe un archivo "Lunas2.txt" con los datos ordenados descendientemente para cada planeta, por diametro, agregando una columna con la constante de la tercera ley de Kepler ,\( K=\displaystyle\frac{P^2}{R^3} \), donde \( P \) es el periodo y \( R \) el radio orbital.

El programa debe mostrar los datos en pantalla.

se adjunta el archivo lunas.txt
nunca seré buen matemático

12 Septiembre, 2008, 10:50 pm
Respuesta #1

Jabato

  • Visitante

Este programa si que está bueno:

El archivo "Lunas.txt" contiene información sobre los satélites naturales del sistema solar, ordenados ascendentementes, para cada planeta por radio orbital.

Lunas de        nombre             radio orbital [km]        período [seg]          diámetro [km]

Mercurio            0

Venus               0

Tierra          1 Luna                    384400                  2360622           3474.8

Marte          1 Fobos                      9377                     27576               22.2
                   2 Deimos                  23460                   109260               12.6

Júpiter         1 Metis                   128000                    25488                43
                   2 Adrastea              129000                    25747                20.7
                   3 Amaltea               181400                    43027              180.7
                   4 Tebe                   221900                    58320               100
                   5 Ío                       421800                  152842              3643
                   6 Europa                 671100                  306806             3122
                   7 Ganímedes         1070400                  618192             5262
                   8 Calisto               1882700                 1441983             4821

...etc.

Escriba un programa que lea los datos y grabe un archivo "Lunas2.txt" con los datos ordenados descendientemente para cada planeta, por diametro, agregando una columna con la constante de la tercera ley de Kepler ,\( K=\displaystyle\frac{P^2}{R^3} \), donde \( P \) es el periodo y \( R \) el radio orbital.

El programa debe mostrar los datos en pantalla.

Mejor así.

Saludos, Jabato.

13 Septiembre, 2008, 10:23 am
Respuesta #2

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 58,907
  • País: es
  • Karma: +0/-0
Hola

 leonardo08: es una exaltación del enunciado, o lleva implícito una consulta.  ;) Si es así, ¿cuál es la consulta?.

Saludos.

13 Septiembre, 2008, 11:12 pm
Respuesta #3

leonardo09

  • Leonardo Andrés Jofré Flor
  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 786
  • Karma: +0/-0
  • Sexo: Masculino
  • Leonardo Jofré
    • Leonardo Andrés Jofré Flor
El manejo de archivos es el que me complica eso nada mas
nunca seré buen matemático

13 Septiembre, 2008, 11:42 pm
Respuesta #4

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,797
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
No sé qué tipo de ayuda necesitás, a lo mejor lo que te diga no te sirva o ya lo sepas.
Pero lo importante es delimitar bien los objetivos parciales del programa.

El primer paso es leer los datos.
Si los datos están en un archivo de texto, entonces el único modo de leerlo es una línea a la vez.
Al leer una línea, sabemos que contiene o debe contener números tipo float.
Asi que se lee caracter a caracter hasta hallar un espacio en blanco.
Los caracteres no blancos, entre un espacio blanco y otro, se copian a una cadena temporal, y se intenta traducirla a número. Si no es un numero, o está en formato erróneo, el programa devuelve un error y termina.
En caso contrario, continúa hasta el fin de la línea.
Si sobran datos, se puede enviar un mensaje de advertencia, sin parar el programa.
Si faltan datos, se puede mostrar un mensaje de advertencia, sin parar el programa, y almacenando 0 en la variable correspondiente.

Se sigue con este procedimiento, línea a línea, hasta agotar el stock.

Ahora está la cuestión de almacenar los datos.
Como los datos son números, y corresponden varios datos por cada ítem, y hay varios ítems (satélites), lo ideal sería colocar los datos en una matriz.
Sin embargo, como no se puede saber a priori cuán grande es el archivo de texto, conviene definir un tipo de datos lista, cada uno de los cuales contiene los campos que interesan: nombre del satelite, período orbital, etc.

Luego, cada vez que se lee una nueva línea del archivo en forma satisfactoria, y los datos han sido almacenados en alguna variable o variables temporales, se procede a la creación de un nuevo elemento al final de la lista, y se copian allí los datos temporales.

Se cierra el archivo de lectura.

Luego se procesan los datos que están en la matriz (o array bidimensional), y cuando estén ordenados, procesados, o lo que fuere que se les tuviera que hacer, ya está terminado, se procede a la última etapa: crear el archivo de salida.
Esto es más facil.

Se crea el archivo de salida de tipo texto. Se envía al archivo una cadena de texto formateada, ya sea con fprintf, o con cout, colocando los valores de los campos de cada ítem del array bidimensional. Se agrega un caracter fin de línea al final de cada lista de campos.
Se hace una iteración hasta finalizar el array, y se cierra el archivo.

En cada paso conviene, claro está, hacer las debidas comprobaciones de errores en la lectura/escritura de datos de archivo, y en caso de error, enviar los mensajes adecuados.
Esto puede hacerse con macros, o con alguna metodología de trabajo sistematizada, o con interrupciones, o posiblemente la biblioteca assert (que no estoy seguro, porque nunca la uso, muy mal de mi parte).

Saludos.

13 Septiembre, 2008, 11:44 pm
Respuesta #5

leonardo09

  • Leonardo Andrés Jofré Flor
  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 786
  • Karma: +0/-0
  • Sexo: Masculino
  • Leonardo Jofré
    • Leonardo Andrés Jofré Flor
nunca seré buen matemático

13 Septiembre, 2008, 11:46 pm
Respuesta #6

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,797
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino

18 Septiembre, 2008, 04:15 am
Respuesta #7

leonardo09

  • Leonardo Andrés Jofré Flor
  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 786
  • Karma: +0/-0
  • Sexo: Masculino
  • Leonardo Jofré
    • Leonardo Andrés Jofré Flor
¿Pero cuál seria un buen algoritmo?
eliminemos inmediatamente la idea de la matriz, o sea para ello estan los struct
nunca seré buen matemático