Scheitelhöhe einer Parabel berechnen

#1

Hallo,

ich muss für die FH ein Programm erstellen, welches die Scheitelhöhe einer Parabel in C berechnet.
Ich hab die Werte der Parabel a,b,c und prüfe auch schon auf a != 0. Die Methode soll nach der Berechnung die Scheitelhöhe als GKZ zurück geben. Das Problem ist, dass ich nicht weis, wie ich diese GKZ berechne ? Was ist denn die Scheitelhöhe? Der y-Wert des Scheitelspunktes ? Wie berechne ich diesen Wert mit a,b,c ?

Vielen Dank schonmal.
Grüße Swoop

#2

Moin,

dazu gibt es doch hunderte von Seiten im Web :
https://www.google.de/#q=Scheitelhöhe+einer+Parabel+berechnen

Gruß
Klaus

#3

Hast du denn die Funktion der Parabel?

EDIT: So, jetzt richtig.

Eine Parabelfunktion ist ja nach dem Prinzip ax²+bx+c aufgebaut. Entsprechend wäre die erste Ableitung wie folgt 2*ax+b.
Und diese Ableitung müsstest du = 0 setzen, um dann zu erfahren, an welchem x die Steigung der Parabel = 0 ist und somit auch der Scheitelpunkt sein muss. Dieses X setzt du dann wieder in die Ursprungsfunktion ein et voila dann hast du zu deinem X auch ein Y und die Scheitelhöhe.

#4
#5

Die hat er, denn das a,b,c kommt aus der Parabelgleichung y = ax² + bx + c

#6

Ich weiß, ich hab’s gerade noch korrigiert. ^^

#7

Okay soweit hab ich das ganze mal.
Ich habe zunächst die Ableitung umgefomrt. Danach habe ich das Ergebnis in die Parabelgleichung eingesetzt. Mich hat mehr der Begriff “Scheitelhöhe” iritiert. Ich vermute aber mal, dass ich mit y-Wert des Scheitelpunktes richtig liege.
Jetzt noch mit Quicksort sortieren und fertig

*** Edit ***

Okay ich hab doch noch ein Probelm mit dem qsort:

	double y1;
	double y2;
	int rc1 = scheitelhoehe(&p1, &y1);
	int rc2 = scheitelhoehe(&p2, &y2);

	if (rc1 == 0) {
		if (rc2 == 0) {
			return 0;
		} else {
			return 1;
		}
	} else {
		if (rc2 == 0) {
			return 0;
		} else {
			if (y1 == y2) {
				return 0;
			} else if (y1 < y2) {
				return 1;
			} else {
				return -1;
			}
		}
	}
}

void sort_parabeln(struct parabel *p, int n) {
	qsort(p, n, sizeof(p), cmp);
}

Ich bekomm noch folgende Fehler:

test:25:2: Fehler: Inkompatibler Typ für Argument 1 von »scheitelhoehe«
test.c:5:5: Anmerkung: »struct parabel« erwartet, aber Argument hat Typ »struct parabel **«
test.c:26:2: Fehler: Inkompatibler Typ für Argument 1 von »scheitelhoehe«
test.c:5:5: Anmerkung: »struct parabel« erwartet, aber Argument hat Typ »struct parabel **«
test.c: In Funktion »sort_parabeln«:
test.c:50:2: Warnung: Implizite Deklaration der Funktion »qsort« [-Wimplicit-function-declaration]
dg@dg-nb:~/workspace/Testat$ gcc -Wall testat-6.c
test.c: In Funktion »cmp«:
test.c:25:2: Fehler: Inkompatibler Typ für Argument 1 von »scheitelhoehe«
test.c:5:5: Anmerkung: »struct parabel« erwartet, aber Argument hat Typ »struct parabel **«
test.c:26:2: Fehler: Inkompatibler Typ für Argument 1 von »scheitelhoehe«
test.c:5:5: Anmerkung: »struct parabel« erwartet, aber Argument hat Typ »struct parabel **«
test.c: In Funktion »sort_parabeln«:
test.c:50:2: Warnung: Implizite Deklaration der Funktion »qsort« [-Wimplicit-function-declaration]

Ich hab schon einiges geschaut. Googel hilft mir leider auch nicht weiter.

#8

Was erwartet den Die Funktion Scheitelhöhe für Parameter?
Die Fehlermeldung sagt, dass das Argument 1 für die Funktion Scheitelhöhe nicht richtig ist, weil er ein anderes erwartet. Daher müsstest du hier auf jeden Fall den Code von Scheithoehe posten damit man die helfen kann.

#9

Okay habs selber lösen können. Ich hab Scheitelhöhe den falschen Parameter übergeben!

#10

Und wie hast du das gelöst?

#11

Ich hab der Quicksort-Methode nicht struct parabel übergeben sondern struct void *void1. Das ganze habe ich dann innerhalb der Methode geparst auf die Struktur parabel geparst.
So funktionierts jetzt wunderbar.

#12

kannst du bitte mal die lösung für deinen quicksort oder kompletten code posten ?