问题描述:编写一个函数的代码,该函数以三角形作为输入并返回其区域。通过了解定义的抽象数据类型,您还需要弄清楚如何访问数据。您可以使用任何方法从顶点计算区域
您需要编写一个函数:
功能名称: 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
}
我试着写一些功能但出错了 请帮忙
答案 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;
}
}