Programación
No te pierdas ningún tema nuevo, hacé click en Me gusta
alguien me puede explicar este programa???????????
En el foro de Programación
| |
| 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
| |
| Cual es la duda especificamente??? |
| Herramientas | |
| |