elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ayuda con este problema?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con este problema?  (Leído 3,608 veces)
TrashAmbishion


Desconectado Desconectado

Mensajes: 756


Ver Perfil
Ayuda con este problema?
« en: 18 Febrero 2021, 06:24 am »

Holas a todos,

A ver si me ayudan a comprender este problemilla..

-----------------------------------------------------------------------------

Dos vehículos A y B viajan por una pista que tiene una parte pedregosa entre los 20 y 40Km.

Los vehículos parten de los 0Km y se sabe que, en terreno pedregoso, el VehículoA viaja al 80% de su velocidad normal y el VehículoB al 75%.

Hay que desarrollar un programa que realice lo siguiente:

- Solicite al usuario que ingrese las velocidades de los 2 vehículos en KM/h.
- Solicitar el número de horas transcurridas.
- Mostrar distancia recorrida y sus posiciones.


Bueno la distancia se calcula hasta donde se y investigue, velocidad por tiempo.

Mi duda es en el terreno pedregoso que como bien dice que es entre 20 y 40KM, imagino que debo calcular el porciento de cada uno por 20 o no?

Y estos valores debería restarlos a la distancia final siempre que sea mayor de 20 o no?

----------------------------------------------------------------------------------

Saludos y gracias cualquier ayuda!!


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Ayuda con este problema?
« Respuesta #1 en: 18 Febrero 2021, 08:01 am »

Primero conforme a ka velocidad que lleva cada uno, debes determinar cuánto tardan en llegar al terreno pedregoso. . .
Luego si la velocidad es suficiente y el tiempo, y por tanto ha logrado entrar en dicho terreno,  debes aplicar el descuento de velocidad a cada uno.
Luego calcular cuánto tiempo tardará cada uno en cruzar ese terreno pedregoso.
Si el tiempo dado es aun mayor, es decir, les ha dado tiempo a cruzar ese terreno, de nuevo vuelven a tener el 100% de velocidad,  ahora con el tiempo que resta hay que calcular una tercera distancia. . .
Finalmente donde lograron cada uno llegar en ese tiempo, total que pediste de entrada es la respuesta pedida.

Se pueden dar 3 casos (para cada vehículo):
- Si el tiempo es muy corto, no llega al terreno pedregoso.
- Que el tiempo, dé para llegar al terreno pedregoso, pero no para terminar de cruzarlo.
- Que el tiempo alcance para cruzar el terreno pedregoso y más...

Tras cada calculo, debes comprobar si resta tiempo.
Una sola función, puede calcular con 3 parámetros,  tiempo, velocidad, y distancia, al regreso de la función se evalúa si resta tiempo, si es asi, se vuelve a invocar actualizando velocidad y pasando a la función los nuevos valores de los parámetros.... en el último caso, si sobra tiempo, la distancia no está acotada, luego pasa '- 1', con cada retorno de la funcion suma la distancia devuelta... (en el caso 1 y 2, si el tiempo se consumió ante de la distancia,  el valor de distancia devuelto, no sera la entrada,  pero si sobra tiempo en cada caso (1 y 2), la distancia a devolver es la misma entrada... en el caso 3, es hasta agotar el tiempo, la distancia ahí se entiende infinita (no se agotará, si no el tiempo).

Es muy sencillo, pero te puede resultar un enredo...


« Última modificación: 18 Febrero 2021, 08:14 am por Serapis » En línea

TrashAmbishion


Desconectado Desconectado

Mensajes: 756


Ver Perfil
Re: Ayuda con este problema?
« Respuesta #2 en: 18 Febrero 2021, 13:37 pm »

Hola,

Gracias por la pronta respuesta.

Entonces en resumen debo calcular los 3 tiempos.

- Antes de llegar al camino pedregoso.
- El camino pedregoso
- Cuando haya pasado el camino pedregoso.

Pero para calcular esto primero debo saber si el tiempo dado es suficiente o no?

Imagino esto imagino que lo haría sacando un total para después aplicar las correspondientes correcciones.

D=v*t (Kilómetros recorridos)
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Ayuda con este problema?
« Respuesta #3 en: 18 Febrero 2021, 17:25 pm »

Exacto.

En general, primero tienes un problema en prosa, que luego uno debe darle cierto orden (también en prosa).
Un siguiente examen debería permitirte dividir el problema en varios pasos, o subproblemas y de ahí entonces, luego resulta más fácil estructurarlo en pseudocodigo.
El pseudocódigo nunca es definitivo, es la primera aproximación al código final... pero con el pseudocódigo ya puedes ver que elementos de programación vas a necesitar (por supuesto siempre hay alternativas, así que de momento no importa en exceso la eficiencia, una vez que el código funciona y hace correctamente lo que se espera, un último paso es optimizarlo, sea para reducir código, hacerlo más eficiente o inclumo más claro. Si el objetivo del problema no es estrictamente para tí, suele documentarse el código para que el receptor 'entienda', algo oscuro o por qué elegiste tal cosa y no tal otra, etc...).

Te doy esa primera fase en pseudocódigo ( el mensaje anterior es la prosa de descomponer el problema de frma cuasi ordenada (no importa ser estricto, mientras se entienda, a cada fase se corrige 'el defecto' que se localizare).

Código:
// permite calcular para 1 o x vehiculos (1 de cada vez), la distancia total rcorrida en el plazo que se le ha dado.

[code] funcion Principal
    bucle por cada vehiculo   
        pedir frenada      // introducir -1 para terminar (por ejemplo).
        distanciaRecorrida = RecorridoVehiculo(frenada)
        imprimir distanciarecorrida
    repetir
fun funcion

entero = funcion RecorridoVehiculo(frenada)
   distancia1= X //km.
   distancia2 = y //km.
   distancia3 = -1 //km.
   distTotal = 0
   Pedir tiempo y ¿velocidad?

   Si tiempo > 0
       distTotal += Recorrer(tiempo, velocidad, distancia1)
   fin si
   Si tiempo > 0
       //reducir velocidad con 'frenada' // del vehiculo actual, frenada se recibe como parametro, es particular a cada vehículo
       distTotal += Recorrer(tiempo, velocidad - frenada, distancia2)
   fin si
   Si tiempo > 0
       //aumentar velocidad con 'frenada' // del vehiculo actual, frenada se recibe como parametro, es particular a cada vehículo
       distTotal += Recorrer(tiempo, velocidad, distancia3)  // recuerda distancia3 = -1
   fin si
  
   devolver distTotal
fun funcion[/code]

Esta funcion: mezcla de prosa y pseudocodigo... termina de pasarlo tu a pseucodigo y cuando quede claro, a código.
(tiempo se recibe por referencia, para hacer una resta y que dicho valor sea devuelto)
Código:
entero = funcion Recorrer(tiempo, velocidad, distancia)
    tiempoTotal, tmp

    (ej: supongamos recibido tiempo 2 horas, velocidad 20 k/h, distancia  60 km)
    Si distancia está acotada  (mayor que 0)    
        calcular el tiempoTotal para recorrer toda la distancia a la velocidad establecida
        (ej: tmpTotal =  (60km/ (20k/h)) = 3horas.   (km, con km se anulan y quedan horas))
       si tiempoTotal es igual que tiempo       // es decir si tiempo fuera 3horas.
            tiempo = 0
            devolver distancia                          // (ej: distancia =  (tiempo * velocidad) = (3h * 20km/h) = 60km ))
       si tiempototal es mayor que el tiempo   // distancia parcial recorrida consumiendo todo el tiempo (sobra carretera)
             tiempo =  0                                 // (ej: 2h - 3h) = -1h. (nos faltó una hora para recorrer todo.)
             //devolver proporcion de la distancia recorrida
             devolver (tiempo * velocidad)        // (ej: distancia = (2h. * 20km/h) = 40km  (horas con horas se anulan y quedan km.))            
       sino       // distancia agotada sin consumir el tiempo.
            //(ej: supongamos tiempo 4h, velocidad 20km/h, distancia 60km), luego tiempoTotal = (60/20) 3 (que es emnor que tiempo)
            
             tiempo =  (tiempo - tiempoTotal)
             devolver distancia  
    si no   // distancia ilimitada representada por -1, luego toda la distancia que dé de sí.
           distancia = (tiempo * velocidad)
           tiempo = 0
           devolver distancia
    fin si
fin funcion

Y eso sería más o menos, a partir de ahí, entiende el problema, haz que funciones, completa el pseudocódigo, deja o cambia comentarios, luego pásalo a código, prueba y corrige posibles errores... cuando todo funcione, simplifica (hay redundancia en la función recorrer, a veces es adecuada para simplificar entender el proceso), optimiza el código, elimina comentarios superfluos y deja los imprescindibles para entenderlo, etc, etc...
Una vez completo, verás que el código es realmente muy escueto...


p.d.: nota que no recuerdo (y no me apetece reler tu primer mensaje), si los datos (que dabas eran de ejemplo o si) se debían pedir enteramente o solo el tiempo o también, la velocidad, y/o las 2 primeras distancias, etc... así el pseudocódigo:
Código:
   distancia1= X //km.
   distancia2 = y //km.
   distancia3 = -1 //km.
   distTotal = 0
   Pedir tiempo y ¿velocidad?
Debe serle suministrado un valor inicial para las distancia1 y distancia2, o si debe solicitarse también al usuario... lo mismo con velocidad... se pueden pedir aquí o en el bucle de la funcion principal (y pasar dichos valores como parámetros a la función invocada)....
« Última modificación: 19 Febrero 2021, 16:46 pm por Serapis » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con este problema please !!!
Scripting
ahkbar 0 2,159 Último mensaje 25 Noviembre 2007, 23:58 pm
por ahkbar
ayuda con este problema que tengo
Java
dj wou 1 1,996 Último mensaje 6 Septiembre 2010, 22:56 pm
por danielo-
Ayuda con este problema raro « 1 2 »
Hardware
_CrisiS_ 13 5,823 Último mensaje 5 Enero 2011, 13:54 pm
por _CrisiS_
Ayuda con este problema , con iptables..
GNU/Linux
Jenag 1 1,994 Último mensaje 3 Octubre 2012, 22:14 pm
por Epzylon
ayuda con este problema de dev c++
Programación C/C++
JORGETOUZETT 1 1,793 Último mensaje 28 Abril 2015, 01:36 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines