variable ändert sich ohne erkennbaren Grund...



  • Hallo zusammen,

    ich habe mit Borland6 ein Programm geschrieben, das Zeiger für 3 punkte an eine Funktion übergibt, die die Steigung der 3 Verbindungsgeraden ausrechnet. Dies klappt eigentlich auch ganz gut, bis auf eine seltsame sache. Vor dem Berechnen der Stegungen werden die Punkte noch richtig ausgegeben. Nach dem Berechnen der Steigung überprüfe ich ob die 3 Punkte evtl. auf einer Geraden liegen. Hier sagt mein Programm oft, obwohl die Punkte 100% nicht auf einer Geraden liegen, dass die Aussage zutrifft und gibt mir danach für punkt[1] und für punkt[0] den gleichen Wert aus. Für Steigung 3 wird "NAN" ausgegeben (kA was das bedeutet), allerdings müsste das Programm abstürzen wenn da bereits durch 0 geteilt würde.
    hier ist mein Quelltext:

    Form1->Edit5->Text = punkt[2];  //gibt 1 aus
      Form1->Edit6->Text = punkt[1];  //gibt 3 aus
      Form1->Edit7->Text = punkt[0];  //gibt 2 aus
    
      float  m1 = (y[punkt[0]]-y[punkt[2]])/(x[punkt[0]]-x[punkt[2]]);
      float  m2 = (y[punkt[2]]-y[punkt[1]])/(x[punkt[2]]-x[punkt[1]]);
      float  m3 = (y[punkt[0]]-y[punkt[1]])/(x[punkt[0]]-x[punkt[1]]);
    
      if(m1 == m2)
        {
        Form1->Edit12->Text = punkt[2]; //gibt 3 aus
        Form1->Edit13->Text = punkt[1]; //gibt 2 aus
        Form1->Edit14->Text = punkt[0]; //gibt 2 aus
        Form1->Edit15->Text = m1;       //gibt 0.49... aus
        Form2->Edit16->Text = m2;       //gibt 0.49... aus (punkt[1] vor Berechnung verändert!)
        Form3->Edit17->Text = m3;       // gibt "NAN" aus
        return(false);
        }
    

    Ich hoffe ihr könnt mir helfen!!!

    Gruß Jakob



  • Die Division durch 0 gibt bei floats keinen Fehler, sondern eben Nan, was den Fehler anzeigen soll.



  • ok danke. das war aber leider das klenere Problem... 😞



  • Dann geh da mal mit dem Debugger durch die Berechnung und schau, wo etwas schief läuft..



  • Ist dein punkt-Array groß genug? Solche Effekte können auch leicht durch Bereichsüberschreitungen entstehen.



  • empty1990 schrieb:

    Für Steigung 3 wird "NAN" ausgegeben (kA was das bedeutet)

    Das bedeutet Not A Number
    Erklärung siehe Vorposter.
    rya.


Anmelden zum Antworten