Error en la ejecucion de un simple programa

rdigiura
04 de Junio del 2009
Hola foro,
Queria preguntarles si alguien me puede decir como solucionar el error que me arroja mi programa en c.
Compila bien, pero cuando ejecuta arroja el siguiente mensaje
"Fault: floating point stack check" y cuelga el programa
Les paso el mismo y muchas gracias por su colaboración
Saludos Raúl

#include <stdio.h>
#include <ctype.h>

float xp1,yp1,xv1,yv1;
float xp2,yp2,xv2,yv2;
float x,y;
void Ingresar_recta(float *xp, float *yp, float *xv, float *yv);
float Se_cruzan(float xp1,float yp1,float xv1,float yv1,float xp2,float yp2,
float xv2,float yv2,float *x,float *y);

void main()
{
Ingresar_recta(&xp1,&yp1,&xv1,&yv1);
Ingresar_recta(&xp2,&yp2,&xv2,&yv2);
if (((xv2 * yv1) - (yv2 * xv1)) == 0)
{
puts("Las rectas son paralelas o no se cortan en ningun punto");
getchar();
}
else
{
Se_cruzan(xp1,yp1,xv1,yv1,xp2,yp2,xv2,yv2,&x,&y);
printf("Las rectas se cruzan en el punto (%.0f,%.0f)",x,y);
getchar();
}
getchar();
}

void Ingresar_recta(float *xp, float *yp, float *xv, float *yv)
{
printf("Ingrese la recta: n");
puts("n");
printf("Primero ingrese dos puntos pertenecientes a la recta n");
puts("n");
printf("Ingrese la componente en x :");
scanf("%f",xp);
printf("Ingrese la componente en y :");
scanf("%f",yp);
puts("n");
printf("Ingrese el vector direccion de la recta n");
puts("n");
printf("Ingrese la componente en x :");
scanf("%f",xv);
printf("Ingrese la componente en y :");
scanf("%f",yv);
puts("n");
while ((*xv == 0) && (*yv == 0))
{
puts("Error, el vector direccion no puede ser nulo, sino no es recta");
puts("n");
printf("Ingrese el vector direccion de la recta n");
puts("n");
printf("Ingrese la componente en x :");
scanf("%f",xv);
printf("Ingrese la componente en y :");
scanf("%f",yv);
puts("n");
}
}

float Se_cruzan(float xp1,float yp1,float xv1,float yv1,float xp2,float yp2,
float xv2,float yv2,float *x,float *y)

{
float delta1,delta2;
delta2 = (((yp2 * xv1) - (yp1 * xv1) -(xp2 * yv1) + (xp1 * yv1))
/ ((xv2 * yv1) - (yv2 * xv1)));
if (xv1 == 0)
{
delta1 = ((yp2 + (delta2 * yv2) - yp1) / yv1);
}
else
{
delta1 = ((xp2 + (delta2 * xv2) - xp1) / xv1);
}
*x = (xp1 + (delta1 * xv1));
*y = (yp2 + (delta2 * yv2));

}



Meyer900
04 de Junio del 2009
pues lo acabo de probar, compilando y tal y no da problema ninguno. Solo que en pones void main, que si no me equivoco es int main, agregandole return 0; al final y ya esta.
da un aviso de que la funcion se_cruzan no devuelve nada, porque en tu declaracion pones floar se_... y despues no devuelves ningun float. pon mejor void se_cru y ya esta.