folgendes problem:
Ich versuche gerade eine Klasse zu schreiben welche die Fläche eines beliebigen Polygons berechnet, soweit so gut nun hab ich nur leider im Moment das Problem das der Code nicht geht. Es gibt zwar keine Compiler Fehler aber ich bin mir im Moment nicht sicher ob es wirklich ein logischer Fehler ist. Ich Arbeite unter Eclipse CDT mit MinGW und GDB und bin noch ziemlicher Anfänger. Aus mir nicht ganz klaren gründen lässt sich mein Code nicht richtig Debuggen, ich kann mir zum Beispiel keine Werte in den Vektoren anschauen. Hoffe jemand weis Rat:smile:
Ich Versuche über eine setfunktion welche auf push_back zurückgreift meine Vektoren zu füllen. Mit diesen Vektoren wird dann über die calcArea Funktion die Fläche berechnet. Das Funktioniert leider nicht, die Ausgabe ist immer 0, ich glaube aber das der Fehler schon bei den set Funktionen liegt.
Ich habe mich mit der Berechnung von Flächen nie abgegeben, aber einen Tipp hätte ich schon:
Eigentlich werden nur 4 X und 4 Y Werte eingelesen aber im
Vektor stehen jeweils 10 Werte, da kann ja was grundlegend
nicht stimmen.
Sieh es mal so: ein Punkt ist „ein Objekt“. Mir fehlt da ein Zähler in der Klasse, der die Anzahl eingegebener Punkte (Objekte) inkrementiert, sowie ein Funktion getSize():
struct Point {double x, double y;}
class Poly
{
int counter;
public:
Poly() : counter(0)
{}
int entry(double x, double y);
int getSize() {return counter;}
// Point getNext() {}
};
int Poly::entry(double x, double y)
{
this-\>x = x;
this-\>y = y;
return ++counter;
}
Ich habe mich mit der Berechnung von Flächen nie abgegeben,
aber einen Tipp hätte ich schon:
…
Sieh es mal so: ein Punkt ist „ein Objekt“. Mir fehlt da ein
Zähler in der Klasse, der die Anzahl eingegebener Punkte
(Objekte) inkrementiert, sowie ein Funktion getSize():
NEEIINN!! Tut mir leid… aber das löst weder das Problem noch ist es hilfreich. Genau dieser Zähler sollte vermieden werden. Mit dem Zähler bringst du Redundanz (doppelt gehaltene Daten) in die Software. Die Information, wie viele Elemente im Vektor sind, steckt schon im Vektor selbst. Wenn Du selbst noch mal mitzählst, ist die Gefahr viel zu groß, dass Du Dich verzählst.
Bitte achtet darauf, jede Information nach Möglichkeit nur an einer einzigen Stelle zu halten!
Sorry, dass ich zur Lösung Deiner Frage dennoch fürs erste nichts beitragen kann.