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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Ejercicio Problema de Bala de Cañon. Resuelto.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio Problema de Bala de Cañon. Resuelto.  (Leído 10,528 veces)
necro1991

Desconectado Desconectado

Mensajes: 19


¡Lidia Con Los Mejores, Muere Como El Resto!


Ver Perfil
Ejercicio Problema de Bala de Cañon. Resuelto.
« en: 2 Octubre 2010, 00:48 am »

Esto es un Ejercicio...
Se debe hacer en python, Java y C++  (Orientado a Objetos) Con Clase Projectile.

En el libro que ingrese en la parte de abajo tiene como hacerlo en python bueno de echo ya esta echo ai poco a poco y muy bien explicado el problema es que esta en ingles...

Citar
Si alguien esta interesado en postear el codigo en otro lenguaje aparte de C++, Python y Java... Adelante asi aprendemos de todo un poco; Favor de dar explicaciones de cada parte

Ahi que poner tambien las explicaciones para que sepamos como se va moviendo el programa, para que todos sepan que estamos haciendo bien y que estamos haciendo mal (Como Puedan).  Bueno Adelante Y Suerte.! :)

Para El Domingo Pongo mis Resultados! =] ("Por Exceso de Tarea Recibida, Lo tienen antes del Jueves")

Citar
Example Program: Cannonball
Before launching into a detailed discussion of how to write your own classes, let’s take a short detour to see
how useful new classes can be.

10.2.1 Especificacion del Programa

Supongamos que queremos escribir un programa que simula el vuelo de una bala de cañón (o cualquier otro proyectil, como una bala, el béisbol o lanzamiento de peso). Estamos particularmente interesados en saber hasta qué punto la bala viajará cuando se dispara a diferentes ángulos de lanzamiento y la velocidad inicial. La entrada al programa será el ángulo de lanzamiento (En grados), la velocidad inicial (en metros por segundo) y la altura inicial (en metros). La salida será la distancia que viaja el proyectil antes de golpear el suelo (en metros).

Si ignoramos los efectos de la resistencia al viento y se supone que la bala de cañón se mantiene cerca de la superficie terrestre (Es decir, no estamos tratando de ponerla en órbita), se trata de un problema clásico de la física relativamente simple. La aceleración de la gravedad cerca de la superficie de la Tierra es de unos 9,8 metros por segundo, por segundo. Esto significa que si un objeto se lanza hacia arriba a una velocidad de 20 metros por segundo, después de pasado un segundo, su velocidad de subida se ha desacelerado a 20-9.8 = 10.2 metros por segundo. Después de un segundo, la velocidad será sólo 0.4 metros por segundo, y poco después se empiezan a caer.

Para aquellos que saben un poco de cálculo, no es difícil obtener una fórmula que da la posición de nuestro bala de cañón en cualquier momento dado de su vuelo. En lugar de adoptar el enfoque de cálculo, sin embargo, nuestro programa utilizará la simulación para rastrear el momento bala de cañón por el momento. Usando un poco de trigonometría simple para empezar, junto con la relación evidente que la distancia de un objeto se desplaza en una determinada cantidad de tiempo es igual a veces su tasa de la cantidad de tiempo (d = rt), podemos resolver este problema algorítmico.

Pistas:
Recuerden el Valor de Pi es: 3.1416
Y De La Gravedad.

Extra:
Se tiene que Hacer "una clase projectile", Y un intervalo que nos diga cada cuanto tiempo quiere saber en que posicion se encuentra la bala cuando viaja.

Ejemplo:
(x,y) = (0,0)
El intervalo lo quiero de 0.5 segundos

(x,y) = (0,0)   0 segundos...
Se lanza...
(x,y) = (15,85) 0.5 segundos
(x,y) = (27,115) 1 segundo
...
(x,y) = (n,n)  n segundos hasta llegar al suelo...



La referencia de este programa lo encontre en el siguiente libro:

http://www.google.com.mx/url?sa=t&source=web&cd=2&ved=0CCAQFjAB&url=http%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.111.6062%26rep%3Drep1%26type%3Dpdf&rct=j&q=Python%20Programming%3A%20An%20Introduction%20to%20Computer%20Science%20pdf&ei=hGSmTPLAGMK88gbWy4n4AQ&usg=AFQjCNFyDFAoTuPioXb1mYk0Wel9_z9u_w&cad=rja

Nombre:Python Programming: An Introduction to Computer Science
Autor: John M. Zelle, Ph.D.
Pagina en el Libro: 156 "capitulo 10"
Pagina en el PDF: 164




//Gracias a todos los que estan dando sugerencias las estoy tomando en cuenta ya que como saben soy nuevo  :D


« Última modificación: 8 Octubre 2010, 02:50 am por necro1991 » En línea

...♫Las Cosas Que Haces En Vida Resuenan En La Inmortalidad♫...
necro1991

Desconectado Desconectado

Mensajes: 19


¡Lidia Con Los Mejores, Muere Como El Resto!


Ver Perfil
¡Mis Resultados!
« Respuesta #1 en: 2 Octubre 2010, 07:36 am »

Mis Resultados:

Python 2.7:
Citar
from math import pi, cos, sin

class Projectile:
   def __init__(self, angle, velocity, height):
      self.xpos = 0.0
      self.ypos = height
      a=pi*angle
      theta = a / 180.0
      self.xvel = velocity * cos(theta)
      self.yvel = velocity * sin(theta)

   def update(self, time):
      self.xpos = self.xpos + time * self.xvel
      yvel1 = self.yvel - 9.8 * time
      self.ypos = self.ypos + time * (self.yvel + yvel1) / 2.0
      self.yvel = yvel1

   def getY(self):
      return self.ypos

   def getX(self):
      return self.xpos

def getInputs():
   print 'Dame el angulo en Grados'
   a = input()
   print 'Dame el valor inicial de la velocidad m/s'
   v = input()
   print 'Dame la altura inicial en metros'
   h = input()
   print 'Introduce el intervalo del calculo'
   t = input()
   return a,v,h,t

def main():
   angle,vel,h0,time = getInputs()
   cball = Projectile(angle, vel, h0)
   while cball.getY() >= 0:
      cball.update(time)
      print 'X:', cball.getX()
      print 'Y:', cball.getY()
   print ' '
   print   'Distancia Viajada:', cball.getX(), 'metros'

  
if __name__ == "__main__":
    main()
raw_input()

Java:
Citar
package clasess;
import java.io.*;
import java.math.*;
import java.io.IOException;
public class Main {
///Menu Principal:
    public static void main(String[] args) throws IOException{
//Valores Determinados En caso de que no ingresen valores

        projectile a = new projectile();
        a.setxpos(0);
        a.setypos(0);
        a.setxvel(0);
        a.setyvel(0);
        a.captura();
        a.imprime();
      //////////////////////////////////
}}
/////////////////////CLASES DE CADA OBJETO////////////////////
 class projectile {
    private double xpos;
    private double ypos;
    private double xvel;
    private double yvel;
//Posiciones
    public double getxpos () {  return xpos; };
    public void setxpos (double i_xpos) { xpos=i_xpos; }
    public double getypos () {  return ypos; };
    public void setypos (double i_ypos) { ypos=i_ypos; }
//Velcoidades
    public double getxvel () {  return xvel; };
    public void setxvel (double i_xvel) { xvel=i_xvel; }
    public double getyvel () {  return yvel; };
    public void setyvel (double i_yvel) { yvel=i_yvel; }
    public void captura() throws IOException
    {
    BufferedReader lee = new BufferedReader(new InputStreamReader(System.in));
    int a,v,h,t;double pi=3.1416,aa,tetha;double bb,r,yvel1,r1,r2,r3,r4,r5;
    System.out.println("Dame el angulo en grados");
    a = Integer.parseInt(lee.readLine());
    System.out.println("Dame el valor inicial de la velocidad m/s");
    v= Integer.parseInt(lee.readLine());
    System.out.println("Dame la altura inicial en metros");
    h= Integer.parseInt(lee.readLine());
    System.out.println("Dame el intervalo de calculacion");
    t= Integer.parseInt(lee.readLine());
    //Calculando velocidades en x & en y
    aa=pi*a;
    tetha=aa/180;
    xvel=v*Math.sin(tetha);
    yvel=v*Math.cos(tetha);

    //Iniciando el Ciclo
    //Posicion de Xpos & Ypos
    while(ypos>=0){
    //Trabajando con la X
    bb=t*xvel;
    r = xpos +bb;
    xpos=r;
    //Trabajando con la Y
    r1=9.8*t;
    yvel1 = yvel - r1;
    //Posicion de Y
    r2=yvel+yvel1;
    r3=r2/2.0;
    r4=t*r3;
    r5 = ypos + r4;
    ypos=r5;
    yvel = yvel1;
    System.out.println(" ");
    System.out.println("X: "+xpos+" ");
    System.out.println("Y: "+ypos +" ");
    }

        }
    public void imprime(){
    //System.out.println("X: "+xvel+" ");
    System.out.println("Distancia recorrida es:"+xpos+"");
    }
   }


C++:
Citar
Sorry.! Vi que nadie participo... Si quieren adelante participen Ingresando el codigo en C++, El tema lo dejo abierto para ver quien lo quiera poner

Nota:
Citar
Lo Pueden hacer en otro lenguaje bien... Para aprender

Con un Gracias Por participar me conformo xD jajaja :D


« Última modificación: 8 Octubre 2010, 02:51 am por necro1991 » En línea

...♫Las Cosas Que Haces En Vida Resuenan En La Inmortalidad♫...
[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: The Cannonball problem (Problema de Bala de Cañon). (Python, Java & C++)
« Respuesta #2 en: 2 Octubre 2010, 07:56 am »

Creo que seria mejor si concretamente pones el ejercicio y dejas que cada quien busque la teoria. El post se te esta haciendo muy largo y muchos se van y no comentan cuando ven posts asi de largos. Es solo una sugerencia.

Saludos, LordRNA
En línea

necro1991

Desconectado Desconectado

Mensajes: 19


¡Lidia Con Los Mejores, Muere Como El Resto!


Ver Perfil
RE: problema de Bala de Cañon. (Java & C++) Python Semi-Resuelto
« Respuesta #3 en: 2 Octubre 2010, 16:01 pm »

Creo que seria mejor si concretamente pones el ejercicio y dejas que cada quien busque la teoria. El post se te esta haciendo muy largo y muchos se van y no comentan cuando ven posts asi de largos. Es solo una sugerencia.

Saludos, LordRNA

Ok Gracias.! :) ahurita lo cambio. pero primero quiero terminar el de clase por que el objetivo es ese jejeje =]
« Última modificación: 3 Octubre 2010, 03:17 am por necro1991 » En línea

...♫Las Cosas Que Haces En Vida Resuenan En La Inmortalidad♫...
¡Micronet!

Desconectado Desconectado

Mensajes: 159



Ver Perfil
Re: Ejercicio Problema de Bala de Cañon. Resuelto.
« Respuesta #4 en: 16 Octubre 2010, 00:05 am »

Casualidad... una amiga me paso ese problema jajaja
no te enojes amigo.

No todos te van a responder siempre...

Código:
#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;


class CannonBall
{
private:
    float  xVel, yVel, gv , x, y,tetha;  

public:
//xVel
    float getxVel() const; //accessor
    void setxVel(float velocity, float tetha); //mutator
//yVel
    float getyVel() const; //accessor
    void setyVel(float velocity, float tetha); //mutator
//GV
    float getgv() const; //accessor
    void setgv(float time); //mutator
//X
    float getX() const; //accessor
    void setX(float time); //mutator
//Y
    float getY() const; //accessor
    void setY(float time); //mutator
//Print
    void CannonBall::Imprimir();
};

//XVEL
float CannonBall::getxVel() const {return xVel;}; //accessor
void CannonBall::setxVel(float velocity, float tetha) { xVel=velocity*cos(tetha); }; //mutator
//YVEL
float CannonBall::getyVel() const {return yVel;}; //accessor
void CannonBall::setyVel(float velocity, float tetha) { yVel=velocity*sin(tetha); }; //mutator
//GV
float CannonBall::getgv() const {return gv;}; //accessor
void CannonBall::setgv(float time){ gv=yVel-(time*9.8); }; //mutator
//X
float CannonBall::getX() const {return x;}; //accessor
void CannonBall::setX(float time){ x=x+(time*xVel); }; //mutator
//Y
float CannonBall::getY() const {return y;}; //accessor
void CannonBall::setY(float time){ y=y+time*(yVel-gv)/2; yVel=gv;}; //mutator
//PRINT
void CannonBall::Imprimir()
{
cout<<" "<<x;
cout<<" "<<y<<endl;
}

int main ()
{
    CannonBall bullet;
    float height, interval, angle, velocity; //estos valores los pongo aqui porque no los voy aux modificar en los metodos de la clase
    float tetha, time=0, aux=0, max=0;
    
    cout<<"Angulo:"<<endl;
    cin>>angle;
    cout<<"Velocidad:"<<endl;
    cin>>velocity;
    cout<<"Altura:"<<endl;
    cin>>height;
    cout<<"Intervalo:"<<endl;
    cin>>interval;

    tetha=(angle*3.14)/180;
    bullet.setxVel(velocity, tetha);
    bullet.setyVel(velocity, tetha);

    cout<<"t, x, y"<<endl;

    do
    {
        bullet.setX(time);
        bullet.setgv(time);
        bullet.setY(time);
            if (bullet.getY()>=0)
            {
            bullet.Imprimir();
            cout<<time<<" ";
            }
            if (max<bullet.getY())
            {
             max=bullet.getY();
            }
        time+=interval;
        aux=bullet.getY();
    }while (aux<=0);
    cout<<"La altura maxima es: "<<max<<endl;
    cout<<"Tiempo antes de tocar el suelo: "<<time<<endl;;

    getch();
    return 0;
}


Derecho de Autor: Cruz! :) ^^
En línea


"La Tarea No Se Hace, Pero No Indica Que No Se Ayude Al Estudiante"
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error en ejercicio que no finalizo en Borland c++ 5.02[RESUELTO]
Programación C/C++
SonaArtica 4 4,597 Último mensaje 10 Mayo 2012, 22:49 pm
por Don Pollo
Ejercicio con matrices resuelto en un 90% (necesito ayuda)
Programación C/C++
Beaustyle 1 3,431 Último mensaje 8 Junio 2012, 07:40 am
por durasno
[RESUELTO]Ejercicio en C,se cierra¬¬,Borland 5.02
Programación C/C++
SonaArtica 2 2,796 Último mensaje 31 Agosto 2012, 21:10 pm
por SonaArtica
Ejercicio con funciones(Resuelto)
PHP
Maistere 4 2,351 Último mensaje 23 Octubre 2013, 12:29 pm
por Maistere
Ejercicio resuelto C
Ejercicios
the_patox 0 2,738 Último mensaje 3 Enero 2014, 23:46 pm
por the_patox
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines