[Programación] Segmentation fault y la pu.. que lo pario
Sebastián D. Criado
programacion@lugro.org.ar
Sun, 27 Apr 2003 00:43:44 -0300
--Boundary-00=_wH1q+hxuMs8PQLO
Content-Type: Text/Plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Description: clearsigned data
Content-Disposition: inline
=2D----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Estoy haciendo una programilla en C++ y me esta dando un dolor de cabeza qu=
e=20
no tendr=EDa que darme.
Al ejecutarlo anda todo bien pero al pasarle los datos, crash.
Segmentation fault
Trate de debugearlo, pero no di pie con bola
A ver que les parece a uds.
=2D --=20
=2D --
Sebasti=E1n D. Criado - scriado@ciudad.com.ar
L.U.G.R.o - http://www.lugro.org.ar
GNU/Linux Registered User # 146768
=2D -------------------------------------------------------------------
"Si el Universo fuera un programa estar=EDa hecho en C, y correr=EDa sobre
un sistema UNIX"
An=F3nimo.
=09
=2D----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQE+q1Hx8hmHQ8ZCg0IRAj9pAJ9oyQ8qDYiRCqE92Ky4DnTNGsUy5ACeOM+w
GIFJdfk+sZ+9p/Km5gEK4OM=3D
=3DX2N9
=2D----END PGP SIGNATURE-----
--Boundary-00=_wH1q+hxuMs8PQLO
Content-Type: text/x-c++src;
charset="us-ascii";
name="trayec.cpp"
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="trayec.cpp"
#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;
char * ang;
char * time;
// Asignación de las varibles desde los Text_Entry
cout << "Ingrese la velocidad inicial Vo: ";
cin >> v0;
cout << "Ingrese el angulo de inclinación en grados: ";
cin >> angulo;
radianes = angulo/radian;
cout << "Ingrese el tiempo en segundos: ";
cin >> tiempo;
sprintf(velo,"%lf",v0);
sprintf(ang,"%lf",angulo);
sprintf(time,"%lf",tiempo);
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 requerido 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'|| arg[i]!='.' ; i++)
if (!isdigit(arg[i]))
{
return 0;
}
return 1;
}
--Boundary-00=_wH1q+hxuMs8PQLO--