结构化数据:使用结构和计算嵌套三角形

时间:2016-04-19 07:23:10

标签: c++

问题描述:编写一个函数的代码,该函数以三角形作为输入并返回其区域。通过了解定义的抽象数据类型,您还需要弄清楚如何访问数据。您可以使用任何方法从顶点计算区域

您需要编写一个函数:

功能名称: cal_area

此功能有1个参数

三角形aTriangle:它包含x-y平面中三角形的3个顶点。您需要弄清楚如何访问数据。 该功能应该执行以下操作

它应该返回三角形的区域" aTriangle"作为一个浮动。

这就是问题所在 我需要填写以下内容

//-----Include required headers here-----
#include <iostream.h>
#include <cmath>
//-----End of headers-----

//-----Don't change/delete structs-----
struct vertex{
float x;
float y;
};

struct triangle{
vertex vertices[3];
};
struct LineSegment
{
  Point endPoint1;
  Point endPoint2; 
}; 
//-----Structs end here


//-----Add new functions here(if any)-----
double eval (LineSegment line, Point p)
{
 Point p_a = p - line.endPoint1;
 Point l_dir = line.EndPoint2 - line.EndPoint1;

  return p_a.x * l_dir.y - p_a.y * l_dir.x;
 }
  void makeTriangleCounterclockwise(Triangle & t)
  {
   LineSegment ab = {t.vertices[1], t.vertices[0]};
   if ( eval(ab,t.vertices[2]) < 0.0) {

    swap(t.vertices[0],t.vertices[1]);
    }
    }

    //-----New functions end here-----

      float cal_area(triangle aTriangle) {
    //Write your solution below this line


     return (-1);
     //Dont write below this line
     }

我试着写一些功能但出错了 请帮忙

1 个答案:

答案 0 :(得分:0)

我认为你要做的是:

float cal_area(triangle aTriangle) {
   float Area;

   Area = (aTriangle.vertices[1].x - aTriangle.vertices[0].x) *
          (aTriangle.vertices[2].y - aTriangle.vertices[1].y) -
          (aTriangle.vertices[1].y - aTriangle.vertices[0].y) *
          (aTriangle.vertices[2].x - aTriangle.vertices[1].x);

   if (Area < 0.0f) {
      return -Area / 2.0f;
   } else {
      return Area / 2.0f;
   }
}