Foros del Web » Programación para mayores de 30 ;) » C/C++ »

"Programa pelota"

Estas en el tema de "Programa pelota" en el foro de C/C++ en Foros del Web. Hola muy buenas noches a todos, miren tengo como tarea escolar desarrollar un programa que dice así: Determinar la distancia recorrida por una pelota que ...
  #1 (permalink)  
Antiguo 02/05/2012, 23:49
 
Fecha de Ingreso: mayo-2011
Ubicación: Toluca
Mensajes: 115
Antigüedad: 12 años, 11 meses
Puntos: 2
"Programa pelota"

Hola muy buenas noches a todos, miren tengo como tarea escolar desarrollar un programa que dice así:

Determinar la distancia recorrida por una pelota que cae de una altura "h", al dar el 2do brinco la altura sera 4/5 de la altura original, y la distancia recorrida sera de 6/4 de la altura anterior. (Osea que si la altura es 6, el 2do brinco sera 4/5 de 6 osea 4.8, y la distancia recorrida hasta el 2do brinco, sera 6/4 de 6, osea 9).

Mas o menos tengo ya la lógica del programa o el algoritmo, pero no se que ciclos necesito ocupar, espero puedan ayudarme o ubicarme un poco por favor, (AYUDARME A CONSTRUIR EL CÓDIGO) hasta luego....

Hasta el momento solo se me a ocurrido como calcular el primer salto, y la distancia hasta ese salto...

Código C++:
Ver original
  1. #include<iostream.h>
  2. #include<conio.h>
  3. main()
  4. {
  5. float h,brinco,distancia;
  6. cout<<"Deme la altura de la que cayo su pelota";
  7. cin>>h;
  8. brinco=(4*h)/5;
  9. distancia=(6*h)/4;
  10. }
  #2 (permalink)  
Antiguo 03/05/2012, 09:46
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: "Programa pelota"

Hola! si cae a una altura de 6 y si rebota a una altura de 4/5 de la altura anterior(4.8), la distancia ¿no seria 6+4.8???... igual esto no es lo importante

Tenes que tener en cuenta que h va a variar por cada rebote y va a llegar un momento que se va a ser tan pequeño que ya no va a tener sentido sumarle a distancia. Esto lo podrias poner como un corte de ciclo, es decir cuando el rebote sea menor a 1 salir. La distancia va a ir incrementando por lo tanto tenes que ir sumando

Fijate si lo podes hacer, solo tenes que poner lo que tenes en un bucle, hacer que h varie y a distancia ir sumandole la distancia anterior

Saludos
  #3 (permalink)  
Antiguo 03/05/2012, 09:57
 
Fecha de Ingreso: mayo-2011
Ubicación: Toluca
Mensajes: 115
Antigüedad: 12 años, 11 meses
Puntos: 2
Respuesta: "Programa pelota"

Hola gracias por responder, de tu aclaración no estoy muy seguro, porque 4.8 seria la altura del 2do brinco. Pero bueno lo que acabas de decirme es justo lo que ya se, lo intente hacer con un do while como te muestro a continuación pero no me mostró nada:

Código C++:
Ver original
  1. #include<iostream.h>
  2. #include<conio.h>
  3. main()
  4. {
  5. float h,brinco,distancia;
  6. int i;
  7. cout<<"Deme la altura de la que cayo su pelota: ";
  8. cin>>h;
  9. do
  10. {
  11.  for(i==h;i>0;i--)
  12.  {
  13.   brinco=(4*h)/5;
  14.   distancia=(6*h)/4;
  15.  }
  16. }
  17. while(brinco>0);
  18. cout<<"\nLa distancia que recorrio su pelota fue: "<<distancia;
  19. }

Algo me falta dentro del do pero no se que ciclo tengo que poner, ni tampoco se referido a que variables, podrias ayudarme un poco???

Última edición por patiurco; 03/05/2012 a las 10:09
  #4 (permalink)  
Antiguo 03/05/2012, 16:22
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: "Programa pelota"

yo me referia a hacer algo asi

Código C:
Ver original
  1. distancia=0;
  2.  
  3. while(h>1)
  4. {
  5. distancia+=h; // sumo las distancias
  6. h=(4*h)/5; // vario h
  7. }

Saludos
  #5 (permalink)  
Antiguo 03/05/2012, 16:27
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: "Programa pelota"

Deberia sumar dos veces la altura ya que la pelota sube y baja y es ahi cuando rebota y alcanza menos altura.

Saludos
  #6 (permalink)  
Antiguo 03/05/2012, 23:55
 
Fecha de Ingreso: mayo-2011
Ubicación: Toluca
Mensajes: 115
Antigüedad: 12 años, 11 meses
Puntos: 2
Respuesta: "Programa pelota"

Cita:
Iniciado por cesar_casla Ver Mensaje
yo me referia a hacer algo asi

Código C:
Ver original
  1. distancia=0;
  2.  
  3. while(h>1)
  4. {
  5. distancia+=h; // sumo las distancias
  6. h=(4*h)/5; // vario h
  7. }

Saludos
Pues no ya intente de mil maneras pero mi programa no pasa de pedirme la altura de la que cayo mi pelota y hasta ahí, creo que tendré que pedir ayuda a alguno de mis profesores, porque en Internet no e conseguido nada, bueno de cualquier forma muchísimas gracias por responder, y hasta pronto.
  #7 (permalink)  
Antiguo 04/05/2012, 07:43
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: "Programa pelota"

mmm si no podes hacer esto nose q vas a hacer mas adelante, es un programa muy simple. Tenes la respuesta echa ¿cual es el problema??

Saludos
  #8 (permalink)  
Antiguo 06/05/2012, 09:52
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: "Programa pelota"

Cita:
Iniciado por patiurco Ver Mensaje

Código C++:
Ver original
  1. #include<iostream.h>
  2. #include<conio.h>
  3. main()
  4. {
  5. float h,brinco,distancia;
  6. int i;
  7. cout<<"Deme la altura de la que cayo su pelota: ";
  8. cin>>h;
  9. do
  10. {
  11.  for(i==h;i>0;i--)
  12.  {
  13.   brinco=(4*h)/5;
  14.   distancia=(6*h)/4;
  15.  }
  16. }
  17. while(brinco>0);
  18. cout<<"\nLa distancia que recorrio su pelota fue: "<<distancia;
  19. }
pudiste solucionar el problema?, porque en este codigo hay algunos errores por los cuales no termina el programa:

- linea 11: for(i==h;i>0;i--) el operador "==" se usa para comparacion, en el caso de que la variable de la izquierda sea igual a la de la derecha el operador va a retornar el valor true, de lo contrario devuelve false... en la primera parte tendrias que hacer una asignacion en lugar de una comparacion, pero igualmente te recomiendo que borres el for, se puede llegar a la solucion sin el

- en el do...while: la condicion para que siga es que brinco sea mayor a 0, pero el valor de brinco se calcula en base al valor de la altura, en este caso h. Si no modificas la altura, brinco va a seguir valiendo siempre lo mismo porque su valor se calcula siempre con los mismos numeros, entonces la idea es que dentro del do...while modifiques la altura, ya que en la realidad, cada vez que la pelota rebota su altura disminuye y el nuevo brinco sera menor.

- la condicion del do...while tendria que ser mayor a 1, ya que con esta funcion nunca va a llegar a 0, pero si es menor a 1 entonces sabes que va a estar valiendo 0,####

- la variable distancia tendria que ser un acumulador, ya que va aumentando cada vez que la pelota rebota


proba este codigo:

Código C++:
Ver original
  1. #include<iostream>
  2.  
  3. #include<conio.h>
  4. using namespace std;
  5.  
  6. int main()
  7.    
  8. {   float h,brinco=0,distancia=0, variacion=0;
  9.    
  10.     cout<<"Deme la altura de la que cayo su pelota: ";
  11.    
  12.     cin>>h;
  13.    
  14.     do  {
  15.                
  16.         brinco=(4*h)/5;
  17.                                
  18.         distancia+=(6*h)/4;
  19.                
  20.         variacion= h-brinco;
  21.                
  22.         h-=variacion;          
  23.         }
  24.     while(brinco>=1);
  25.    
  26.     cout<<"\nLa distancia que recorrio su pelota fue: "<<distancia;
  27.    
  28.     return 0;
  29. }
  #9 (permalink)  
Antiguo 09/05/2012, 10:42
 
Fecha de Ingreso: mayo-2011
Ubicación: Toluca
Mensajes: 115
Antigüedad: 12 años, 11 meses
Puntos: 2
Respuesta: "Programa pelota"

Cita:
Iniciado por starfix Ver Mensaje
pudiste solucionar el problema?, porque en este codigo hay algunos errores por los cuales no termina el programa:

- linea 11: for(i==h;i>0;i--) el operador "==" se usa para comparacion, en el caso de que la variable de la izquierda sea igual a la de la derecha el operador va a retornar el valor true, de lo contrario devuelve false... en la primera parte tendrias que hacer una asignacion en lugar de una comparacion, pero igualmente te recomiendo que borres el for, se puede llegar a la solucion sin el

- en el do...while: la condicion para que siga es que brinco sea mayor a 0, pero el valor de brinco se calcula en base al valor de la altura, en este caso h. Si no modificas la altura, brinco va a seguir valiendo siempre lo mismo porque su valor se calcula siempre con los mismos numeros, entonces la idea es que dentro del do...while modifiques la altura, ya que en la realidad, cada vez que la pelota rebota su altura disminuye y el nuevo brinco sera menor.

- la condicion del do...while tendria que ser mayor a 1, ya que con esta funcion nunca va a llegar a 0, pero si es menor a 1 entonces sabes que va a estar valiendo 0,####

- la variable distancia tendria que ser un acumulador, ya que va aumentando cada vez que la pelota rebota


proba este codigo:

Código C++:
Ver original
  1. #include<iostream>
  2.  
  3. #include<conio.h>
  4. using namespace std;
  5.  
  6. int main()
  7.    
  8. {   float h,brinco=0,distancia=0, variacion=0;
  9.    
  10.     cout<<"Deme la altura de la que cayo su pelota: ";
  11.    
  12.     cin>>h;
  13.    
  14.     do  {
  15.                
  16.         brinco=(4*h)/5;
  17.                                
  18.         distancia+=(6*h)/4;
  19.                
  20.         variacion= h-brinco;
  21.                
  22.         h-=variacion;          
  23.         }
  24.     while(brinco>=1);
  25.    
  26.     cout<<"\nLa distancia que recorrio su pelota fue: "<<distancia;
  27.    
  28.     return 0;
  29. }

Hola starfix, tu código hace exactamente lo que buscaba que hiciera, y muchas gracias por tu respuesta, solo me queda hacerte una pregunta, para que sirven, los operadores que pones después de "distancia", y de "h" osea el + y el -, no sabia de ellos....
  #10 (permalink)  
Antiguo 09/05/2012, 11:52
Avatar de cristiantorres  
Fecha de Ingreso: marzo-2012
Mensajes: 383
Antigüedad: 12 años, 1 mes
Puntos: 61
Respuesta: "Programa pelota"

respondiendo tu pregunta lo que hace es una asignación de operadores de suma y resta.
Código C++:
Ver original
  1. distancia+=(6*h)/4;
  2. h-=variacion;

Es lo mismo a tener.
Código C++:
Ver original
  1. distancia=distancia+(6*h)/4;
  2. h=h-variacion;
__________________
Visita mi Blog C#, vb.net, asp.net, sql, java y mas...
Blog Cristian Torres

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:55.