Vektoren und Debugproblemchen

Hallo alle zusammen,

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.

main.cpp:
http://paste.bradleygill.com/index.php?paste_id=31438

PoMoI.h:
http://paste.bradleygill.com/index.php?paste_id=31437

PoMoI.cpp:
http://paste.bradleygill.com/index.php?paste_id=31435

Hallo,

ich kann mir zum
Beispiel keine Werte in den Vektoren anschauen. Hoffe jemand
weis Rat:smile:

Wie hast du das denn probiert?
Was ist dabei geschehen?

Was passiert, wenn du so etwas wie

cout 
machst?

Grüße,
Moritz

Guten Tag,

Also da scheint es schon zu Problemen zu kommen.
Hab mal mit ner Schleife jeden Wert der eingabe Vektoren m_vdX und m_vdY ausgelesen:

m_vdX:0
m_vdX:0
m_vdX:2
m_vdX:0
m_vdX:2
m_vdX:2
m_vdX:0
m_vdX:2
m_vdX:2
m_vdX:0
m_vdY:0
m_vdY:0
m_vdY:0
m_vdY:0
m_vdY:0
m_vdY:2
m_vdY:0
m_vdY:0
m_vdY:2
m_vdY:2

Eigentlich werden nur 4 X und 4 Y Werte eingelesen aber im Vektor stehen jeweils 10 Werte, da kann ja was grundlegend nicht stimmen.

Danke schonmal für die Hilfe

Gruß
Ben

Hallo Ben

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

Wenn Du die Schleife jetzt mit "i

Guten Tag,

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.

Wenn Du die Schleife jetzt mit "i

.

Auf die Schnelle erste Lösungsversuche:

http://dl.dropbox.com/u/5634124/SourceCode/Polygon.cpp
Siehe auch …

http://www.iti.fh-flensburg.de/lang/algorithmen/geo/…

Hallo alle zusammen,

super danke für die Hilfe, ich hatte zwar noch keine Zeit mir das genauer anzusehen aber ich denke das wird nun:wink:

Gruß
Ben