594.728 temas | 4.835.969 mensajes | seremos forros, pero somos una bocha

alguien me puede explicar este programa???????????

En el foro de Programación

Viejo patrycia dijo: 12.05.08
El programa tiene que recibir por teclado las coordenadas(x,y) de los 4 vertices de un cuadrilatero, verificar si se trata de una figira cerrada concava o convexa y calcular el area del poligono.
por favor!!!!!!!!!gracias!!!!!!!!




#include<stdio.h>

int recibeprimera();
int dentroderango(float x, float z);
int recibesegunda();
int mismopunto(float x1, float z1, float x2, float z2);
int recibecoordenadas();
int cortediagonales(float *cortex,float *cortez);
int secortandentro(float cortex, float cortez);
int recibetercera();
int recibecuarta();
float calcularea();
int mismarecta(float x1, float z1, float x2, float z2, float x3, float z3);
int secortansegmentos(float x1, float z1, float x2,float z2,float x3,float z3,float x4,float z4);
void puntodecorte(float x1, float z1, float x2, float z2, float x3, float z3, float x4, float z4,float *px,float *pz);

float x1,z1,x2,z2,x3,z3,x4,z4;
main()
{
float cortex, cortez, a;
printf("\n Da coordenadas \n");
recibecoordenadas();
cortediagonales(&cortex,&cortez);
if(secortandentro(cortex,cortez))
printf("El poligono es convexo");
else printf("El poligono es concavo");
a= calcularea();
printf("El area es %2.2f",a);
}

int recibecoordenadas()
{
int vale = 0;
do {printf("Introduzca 1 coordenada");
vale=recibeprimera();} while(!vale);
do {printf("Introduzca 2 coordenada");
vale=recibesegunda();} while(!vale);
do {printf("Introduzca 3 coordenada");
vale=recibetercera();} while(!vale);
do {printf("Introduzca 4 coordenada");
vale=recibecuarta();} while(!vale);
printf("Coordenadas: \n p1=(%f,%f) \n p2=(%f,%f) \n p3=(%f,%f) \n p4=(%f,%f)",x1,z1,x2,z2,x3,z3,x4,z4);
}

int recibeprimera()
{
scanf("%f",&x1); scanf("%f",&z1);
if (dentroderango(x1,z1)) return 1;
else return 0;
}

int recibesegunda()
{
scanf("%f%f",&x2,&z2);
if (dentroderango(x2,z2) && !mismopunto(x1,z1,x2,z2)) return 1;
else return 0;
}

int recibetercera()
{
scanf("%f%f",&x3,&z3);
if ( dentroderango(x3,z3) && !mismopunto(x1,z1,x3,z3) && !mismopunto(x2,z2,x3,z3) && !mismarecta(x1,z1,x2,z2,x3,z3) ) return 1;
else return 0;
}
int recibecuarta()
{
scanf("%f%f",&x4,&z4);
if (dentroderango(x4,z4) && !mismopunto(x1,z1,x4,z4) && !mismopunto(x2,z2,x4,z4) && !mismopunto(x3,z3,x4,z4) && !mismarecta(x2,z2,x3,z3,x4,z4) && !secortansegmentos(x1,z1,x2,z2,x3,z3,x4,z4) && !secortansegmentos(x1,z1,x2,z2,x3,z3,x4,z4) ) return 1;
else return 0;
}

int dentroderango(float x, float z)
{
if( x<(-10) || x>10 || z<(-10) || z>10 )
return 0;
else return 1;
}
int mismopunto(float x1, float z1, float x2, float z2)
{
if (x1==x2 && z1==z2)
return 1;
else return 0;
}

int mismarecta(float x1, float z1, float x2, float z2, float x3, float z3)
{
if ( ((z2-z1)/(x2-x1)) == ((z3-z2)/(x3-x2)) ) return 1;
else return 0;
}

int secortansegmentos(float x1, float z1, float x2,float z2,float x3,float z3,float x4,float z4)
{
float x,z;
puntodecorte(x1,z1,x2,z2,x3,z3,x4,z4,&x,&z);
if((x<x1 && x<x2)||(x>x1&&x>x2)||(x<x3&&x<x4)||(x>x3&&x>x4)||( z<z1&&z<z2)||(z>z1&&z>z2)||(z<z3&&z<z4)||(z>z3&&z> z4)) return 0;
else return 1;
}
void puntodecorte(float x1,float z1, float x2, float z2, float x3, float z3, float x4, float z4, float *px,float *pz)
{
float x, z, den, numx, numz;
den=(x4-x3)*(z2-z1)-(x2-x1)*(z4-z3);
if(den==0) { *px=30; *pz=30 ; return ;}
numx=(x2-x1)*(z3*(x4-x3)-x3*(z4-z3))-(x4-x3)*(z1*(x2-x1)-x1*(z2-z1));
numz=(z4-z3)*(z1*(x2-x1)-x1*(z2-z1))-(z2-z1)*(z3*(x4-x3)-x3*(z4-z3));
x=numx/den;
z=(-1)*numz/den;
*px=x; *pz=z;
}

int cortediagonales(float *cortex, float *cortez)
{
printf("cortediagonales"); return 0;
}
int secortandentro(float cortex,float cortez)
{
printf("secortandentro");
return 1;
}
float calcularea()
{
return 1;
}

1 Comentarios

Viejo CloudStrife dijo: 31.05.08
-->
Cual es la duda especificamente???

Herramientas
Iniciar Sesion

Recordarme

Top de Usuarios