Ver Mensaje Individual
  #128 (permalink)  
Antiguo 02/02/2015, 17:16
kutcher
 
Fecha de Ingreso: noviembre-2014
Mensajes: 36
Antigüedad: 9 años, 4 meses
Puntos: 13
Respuesta: Petando la pila. Problemas y retos usando recursividad.

Vaya, lleva tiempo inactivo este hilo al parecer todos nos echamos unas largas vacaciones xD, por mi parte ya devuelta con las actividades diarias, ahora veamos el ultimo ejercicio propuesto:

Cita:
Iniciado por Pantaláimon Ver Mensaje
Area de un polígono.

Dado un array de puntos donde cada punto se une geométricamente por una línea recta al siguiente y el último se une al primero. Esto puede representar un polígono. Se debe crear una función que calcule el area de dicho polígono. Hay que considerar todos los tipos de polígonos que pueden ser descritos:
http://commons.wikimedia.org/wiki/Fi...n_types_es.svg
Solución:

Código C++:
Ver original
  1. #include <stdio.h>
  2.  
  3. typedef struct
  4. {
  5.     double x, y;
  6. } Punto;
  7.  
  8. double AreaPoligono(Punto *puntos, int N, int i)
  9. {
  10.     return (i < N) ? puntos[i].x * puntos[((i + 1) % N)].y +
  11.            AreaPoligono(puntos, N, i + 1) -
  12.            puntos[i].y * puntos[((i + 1) % N)].x : 0;
  13. }
  14.  
  15. double areaPoligono(Punto *puntos, int N)
  16. {
  17.     double area = AreaPoligono(puntos, N, 0) / 2;
  18.     return (area < 0) ? -area : area;
  19. }
  20.  
  21. int main(void)
  22. {
  23.     Punto puntos[] = { {-3,-2}, {3,-2}, {1,5} };
  24.     int n = sizeof(puntos) / sizeof(Punto);
  25.     printf("Area del poligono: %g\n", areaPoligono(puntos, n));
  26.     return 0;
  27. }

Espero que los demás compañeros se vayan reportando estos días, no eferion ?

Última edición por kutcher; 02/02/2015 a las 18:06