Geradengleichung berechnen - falsches Ergebnis

jojomp

Mitglied
Hallo zusammen,

ich habe ein Problem beim Berechnen der Geradengleichung bei zwei gegebenen Punkten. Die Formel dafür ist klar, aber bei der Berechnung tritt ein seltsamer Fehler auf. Hier erst mal die Funktion:
Code:
void geradengleichung(int points[2][2]) {
	float y2=points[1][1], y1 = points[0][1];
	float x2=points[1][0], x1 = points[0][0];
	// Geradengleichung ermitteln: f(x) = mx + n
	
	float m,n;
	
	m = (y2 - y1) / (x2 - x1);
	n = y2 - (m*x2);
	printf("m=%f  n=%f\n",m,n);
}
Wenn ich das mit folgenden Werten rechnen lasse...
Punkt 1: x=2.5
Punkt 1: y=5.5
Punkt 2: x=3.5
Punkt 2: y=4.5

... kommt das raus:
m=-1.000000 n=7.000000

n solte ja eigentlich 8 sein oder irre ich mich da?

Gruß
jojomp

P.S.: Viele kennen die Formel warscheinlich eher als f(x) = ax + b

Edit: Ich habe gerade festgestellt, dass der Fehler nur bei Zahlen mit Nachkommastellen auftritt. n sollte -1 sein, die Funktion berechnete 0.
 
Zuletzt bearbeitet:
Hallo

vielleicht sollte dein Funktionsparameter auch den Datentyp float erhalten :)
Normalerweise sollte der Compiler das auch ankreiden, da die Typen verschieden sind !

mfg
 
Zuletzt bearbeitet:
Super, nach dem Anpassen der Datentypen und atof() statt atoi() hat alles funktioniert! Klar, bei Ganzzahlen rundet er und das produziert Fehler. Der Compiler hat nix angekreidet, weil ich ihn ohne die -Wall Option gestartet hab.

Gruß jojomp
 
Zurück