[Programación] Programa funcionando ;-)
Sebastián D. Criado
programacion@lugro.org.ar
Mon, 28 Apr 2003 12:01:46 -0300
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Ya esta , funciona. ahora solo me hace falta agregarle el gtk :-)
#define T 20
#include <cmath>
#include <stdlib.h>
#include <ctype.h>
#include <iostream.h>
int isnum(char *arg);
int main()
{
const double gt =9.8; // Aceleración de la gravedad
const double radian = 57.29578; // Grado en radianes para la conversión
double v0cos,
v0sen,
puntoalto, // El punto más alto
r, // Alcance horizontal
v0, // Velocidad inicial
vx, // Vx
vy, // Vy
x, // Posición en el eje x
y, // Posición en el eje Y
v; // Velocidad resultante
double angulo, // Angulo de elevación
radianes, // Angulo en radianes para calcular los grados
angulofin; // Angulo en el tiempo
double tiempoalto, //El tiempo del punto mas alto
tiempollegada, // Tiempo en el que llega a destino
tiempo; // Tiempo del calculo
char velo[T];
char ang[T];
char time[T];
// Asignación de las varibles desde los Text_Entry
cout << "Ingrese la velocidad inicial Vo: ";
cin >> velo;
cout << "Ingrese el angulo de inclinación en grados: ";
cin >> ang;
cout << "Ingrese el tiempo en segundos: ";
cin >> time;
v0=atof(velo);
angulo=atof(ang);
tiempo=atof(time);
radianes = angulo/radian;
if((isnum (velo) && isnum (ang)) && (v0>0.0 && angulo>0.0))
{
// Calculo del punto en tiempo=t
v0cos = v0 * cos(radianes);
v0sen = v0 * sin(radianes);
// Calculo de la llegada del proyectil
vx = v0cos;
vy = v0sen - gt;
angulofin = atan(vy/vx)*radian;
v = sqrt(pow(vx,2)+pow(vy,2));
tiempoalto = v0sen/gt; // Tiempo en el que llego al punto más alto
puntoalto = (v0sen * tiempoalto) - (0.5 * gt * pow(tiempoalto,2));
tiempollegada = tiempoalto * 2;
r = vx * tiempollegada; // Metros recorridos en el eje x desde el
lanzamiento
// Seteo de la variable buffer output para asignarla a las etiquetas
// Se utilizan 3 etiquetas para un mejor control de lo que se muestra
printf("Punto mas alto: %.2lf metros a los %.2lf s.\n",puntoalto,tiempoalto);
printf("Proyectil llegara a destino a %.2lf metros\nen %.2lf seg desde el
lanzamiento",r,tiempollegada);
if(isnum(time) == 1 && tiempo >= 0.0) // Si no esta seteado el tiempo t
// o es negativo,
// no se muestra el punto xy en ese tiempo
{
if (tiempo <= tiempollegada) // Si el tiempo es menor al tiempo de llegada
// se calcula la posición
{
x = v0cos * tiempo;
y = v0sen * tiempo - 0.5 * gt * pow(tiempo, 2);
printf("A los %.2lf segundos: \n Proyectil a: %.2lf metros en
X.\nProyectil a: %.2lf metros en Y.\nVelocidad: %.2lf m/seg, angulo de
caida:%.2lf grados",
tiempo,x,y,v,angulofin);
}
else // Si no se indica que ya llego
{
printf("A los %.2lf segundos: el proyectil llego a destino",tiempo);
}
}
}
else
{
printf("!!! Ingrese los datos requeridos por favor ¡¡¡");
}
}
// La función isnum() determina si el string es un numero
int isnum(char *arg)
{
int i;
for (i = 0; arg[i]!='\0'; i++)
{
if (!isdigit(arg[i]))
return 0;
return 1;
}
}
- --
- --
Sebastián D. Criado - scriado@ciudad.com.ar
L.U.G.R.o - http://www.lugro.org.ar
GNU/Linux Registered User # 146768
- -------------------------------------------------------------------
"Si el Universo fuera un programa estaría hecho en C, y correría sobre
un sistema UNIX"
Anónimo.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQE+rUJa8hmHQ8ZCg0IRAuDOAKChfSvVTvx34h1LXmbyknLEo4X7ZQCfQ2di
OAT8YBJ2v7SNXPVqMeGsaAU=
=J9sy
-----END PGP SIGNATURE-----