jueves, 30 de agosto de 2012

Algoritmo en C:Calcular el perimetro de un cuadrilatero con punteros

Este ejercicio calcula elperimetro de un cuadrilatero indicando sus coordenadas en x y y. Como ven en el codigo utilize la liibreria math.h para las funciones sqrt y pow y utilize punteros para hacer referencias a memoria y asi evitar implementar 4 procedimientos. El codigo lo tiene abajo espero les sirva =D

#include <stdio.h>
#include <conio.h>
#include <math.h>
typedef float Coordenada;
typedef struct{
 Coordenada x;
 Coordenada y;
 } Punto;
Punto p1, p2, p3, p4;
Punto po, pd;
float dist, perimetro;
void Distancia()
{
dist=sqrt(pow(pd.x-po.x,2)+pow(pd.y-po.y,2));
}
void LeerPunto(float *x, float *y,short int n)
{
printf("Coordenada x del punto %d: ", n);
scanf("%f", x);
while(getchar() != '\n');
printf("Coordenada y del punto %d: ", n);
scanf("%f", y);
while(getchar() != '\n');
printf("\n");
}
int main()
{
clrscr();
printf("\n");
printf("****\n");
printf("Calcular el perimetro de un \n");
printf("cuadrilatero irregular");
printf("****\n");
printf("\n");
printf("Introduzca los puntos del cuadrilatero (en orden de adyacencia): \n\n");
LeerPunto(&p1.x, &p1.y, 1);
LeerPunto(&p2.x, &p2.y, 2);
LeerPunto(&p3.x, &p3.y, 3);
LeerPunto(&p4.x, &p4.y, 4);
perimetro=0.0;
po=p1;
pd=p2;
Distancia();
perimetro=dist;
//E1: perimetro=Distancia(p1, p2)
po=p2;
pd=p3;
Distancia();
perimetro=perimetro+dist;
//E2:perimetro=E1 + Distancia(p2,p3)
po=p3;
pd=p4;
Distancia();
perimetro=perimetro+dist;
//E3:perimetro=E2 + Distancia(p3, p4)
po=p4;
pd=p1;
Distancia();
perimetro=perimetro+dist;
//E4:perimetro=E3 + Distancia(p4, p1)
printf("El perimetro del cuadrilatero irregular es: %.2f\n", perimetro);
printf("\nPulse enter para continuar");
getchar();
return 0;
}

0 comentarios:

Publicar un comentario