2016-04-19 4 views
-5

Problembeschreibung: Schreiben Sie den Code einer Funktion, die ein Dreieck als Eingabe nimmt und seinen Bereich zurückgibt. Sie sind auch, um herauszufinden, wie erwartet, auf die Daten zuzugreifen, indem Sie die abstrakten Datentypen zu verstehen defined.You jede Methode verwenden, um den Bereich von den EckpunktenStrukturierte Daten: Verschachtelung Dreiecke mit Strukturen und Berechnung

Sie benötigt werden, zu berechnen, eine Funktion zu schreiben:

Funktion Name: cal_area

Diese Funktion hat 1 Parameter

Dreieck aTriangle: Sie enthält die 3 Ecken des Dreiecks in XY-Ebene. Es wird erwartet, dass Sie herausfinden, wie Sie auf die Daten zugreifen können. Die Funktion sollte Folgendes tun

Es sollte die Fläche des Dreiecks "aTriangle" als Schwimmer zurückgeben.

Gut, das ist die Frage ich brauche die folgenden

//-----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 
    } 

ich einige fuction zu schreiben versucht zu füllen, aber schief ging pls helfen

+1

Was ist das Problem? Zugriff auf die Koordinaten oder Berechnung der Fläche von ihnen? (Sie sollten in der Lage sein, die Lösung für das letztere in jedem Mathematik-Buch der Oberstufe zu finden.) – molbdnilo

+1

Ich mag die "Sie sind herauszufinden" und "zu verstehen". Ich schlage vor, dass du dort anfängst. –

+0

'Ich habe versucht, eine Funktion zu schreiben' - bitte zeigen Sie diesen Versuch, –

Antwort

0

Ich denke, was Sie versuchen, dies zu tun ist :

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; 
    } 
}