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 ?
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.
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.
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.
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.