Necesito ayuda para realizar un ejercicio bastante complejo en CodeBlocks

Iniciado por galucas96, 27 Noviembre 2014, 23:29 PM

0 Miembros y 2 Visitantes están viendo este tema.

galucas96

Este es el enunciado:

El atunero Quicksilver ha salido a faenar. El arte de pesca que efectúa es artesanal, de manera que pescan uno a uno los atunes.

Si el atún no es lo suficientemente grande, lo devuelven al mar, y sino, lo congelan clasificándolo según su peso (kg) en las siguientes categorías:

(0)   Los atunes de [5-10) kg,
(1)   Los atunes de [10-20) kg,
(2)   Atunes de [20-40) kg y
(3)   Los que pesan 40 kg o más.

Y cada categoría genera, respectivamente, las siguientes ganancias: 2.35€/kg, 2.98€/kg, 3.15€/kg y 1.50€/kg. (¡Ojo!, euros por kilogramo de atún).

La captura se da por finalizada cuando el atunero regrese a puerto.

Entrada de datos (0 para terminar, y los pesos en kg. Se muestran en negrita)

Pesos de las capturas:    26.8   35.1   2   51.9   ...0

Con los datos registrados, se pide determinar:

1.¿Cuántas capturas ha realizado por cada categoría de atún?
2.¿Cuánta ganancia ha obtenido con la pesca realizada?
3.¿Cuál ha sido la categoría de atún que mas ganancia ha reportado al atunero?
4.Dada una categoría de atún, indicar el número de kilos capturados. Repetir el proceso mientras el número de categoría introducido sea válido.

Ejemplo de ejecución

Categorías de atún en función del peso:
0)   [5-10) kg,
1)   [10-20) kg,
2)   [20-40) kg,
3)   40 kg o más.
Dame una categoría (0..3): 2
Se han capturado 2343.7 kg de atún

Categorías de atún en función del peso:
0)   [5-10) kg,
1)   [10-20) kg,
2)   [20-40) kg,
3)   40 kg o más.
Dame una categoría (0..3): 3
Se han capturado 98.7 kg de atún

Categorías de atún en función del peso:
4)   [5-10) kg,
5)   [10-20) kg,
6)   [20-40) kg,
7)   40 kg o más.
Dame una categoría (0..3): 5

Orubatosu

Parece ligeramente laborioso, pero complejo... no, simplemente hay que montar acumuladores y usar por ejemplo un switch con 4 ramas

Ayudaría bastante que pusieras lo que tienes ya hecho
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

zShackra

Lee las normas del subforo, no se realizan tareas, sólo has puesto un enunciado, demuestra que has intentado solucionar algo y con seguridad recibirás orientación... repito que aquí NO SE RESUELVEN TAREAS.

P.D.: Sí es cierto, no es nada complejo. Sólo analiza con paciencia y desglosa el enunciado.

galucas96

No pido la solución del ejercicio, preguntaba aver si podíais guiarme por donde tirar, ya que no se como hacer el programa, usando if, for, do-while, switch...

Controlo los principales comandos del programa pero a la hora de crear programas me atasco y no se por donde tirar.

Si me podríais dar algún consejo os lo agradecería.

zShackra

Cita de: galucas96 en 28 Noviembre 2014, 00:23 AM
No pido la solución del ejercicio, preguntaba aver si podíais guiarme por donde tirar, ya que no se como hacer el programa, usando if, for, do-while, switch...

Controlo los principales comandos del programa pero a la hora de crear programas me atasco y no se por donde tirar.

Si me podríais dar algún consejo os lo agradecería.

Lo lamento pero si no logras descifrar un enunciado de un ejercicio, dudo mucho que recibas ayuda. Los foros se usan para buscar orientación en un punto de ofuscamiento, si no das de tu parte, nadie te dará todo en bandeja de plata.

Si sientes que no puedes empezar por nada, que se te hace muy intrincado y casi imposible, es mejor que comiences a estudiar una rama que se llama Lógica, y si es posible... que leas un libro de matemática discreta. Son esos los libros y ramas los que desarrollan tu parte lógica más abstracta. Si no tienes mucho tiempo, por cualquier motivo... entonces busca ejercicios sobre lógica, de comprensión de enunciados, de resolución de problemas... con pseudocódigo al menos.

No te lo digo por creerme más que tú ni nada por el estilo, si es orientación lo que buscas, la mejor que te puedo dar en lo personal, es decirte qué caminos tomar, está en ti si decides tomarlos o no.

Programar no es solamente escribir código, es dar órdenes de forma lógica, eficiente y estructurada.

Orubatosu

El problema quizás es que crees que esto es mirar el enunciado y ponerte a picar código, y no, así no va el tema.

Como dijo Jack (el destripador) "vayamos por partes".

Divide tu problema en trozos, y ataca a cada uno por separado. No es lo mismo un problema grande que tres o cuatro pequeños. Por ejemplo plantea como capturas los datos, luego como los acumulas y finalmente como sacas los resultados.

Piensa en cuantas variables y de que tipo vas a usar. Luego puedes añadir o quitar, pero empieza organizando esto.

¿Que usar, un if-for-do-while?.. depende. ¿En que punto?

Son estructuras que se parecen, pero no hacen lo mismo

Por ejemplo, "coger los datos"... ¿Un For?... no, porque no sabes cuantos datos vas a capturar, como el mismo enunciado dice "hasta un peso 0"... pues un while obviamente, es la solución mas simple.

Capturas datos, a partir de UN dato (Un pez... atún, rico maguro mmmmm....) tienes 4 opciones en base a su peso.

¿Algo para múltiples opciones?... me viene a la cabeza un switch. Ya conoces la categoría, pues empieza a acumular datos según los necesites de pesos, numero de peces, etc... cuando termines solo tendrás que sacar un par de cálculos simples y hale... a correr.

No intentes hacer todo el programa de una sentada, hazlo por partes, pruebalo con pocos datos (uno de cada por ejemplo) y compila frecuentemente para asegurarte de que no se te están colando gazapos, que falte algún ";", etc...

Y como te han dicho, programar no es conocer los comándos, como hablar otro idioma no es solo conocer las palabras. Hay que conocer la "gramática" y sobre todo analizar el problema, incluso con papel y lápiz haciendo un diagrama de flujo general para tener las cosas mas claras. Un papel, lápiz y un pequeño diagrama, o unas pruebas en papel que cuestan cinco minutos pueden ahorrar mucho tiempo.

Y de nuevo, el problema puede ser laborioso, pero "complejo".... no, complejo no. Solo hay que tomar unas decisiones y sumar datos.

Un Switch te funcionaría, lo mismo que "If", solo que los if probablemente, dado que hay 4 opciones pueden hacer que te líes. Intenta ir siempre a la solución mas sencilla siempre que puedas.
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

galucas96

Muchas gracias por los consejos y las pautas que has comentado, creo que me van a ser de gran utilidad. Os comentare como me ha quedado cuando lo acabe