Programm zur Berechnung quadratischer Funktionen mit math.m
-
Hallo zusammen,
habe folgendes Programm erstellt und finde keinen Fehler, warum es nicht funktioniert... Kann mal einer reinschauen und mir nen Tipp geben?
#include <stdio.h>
#include <math.h>int main(void)
{
float a;
float b;
float c;
float p=b/a;
float q=c/a;
float unterwurzel=((p/2)*(p/2))-q;
float wurzel=sqrt(unterwurzel);
float erg_x1=-(p/2)-wurzel;
float erg_x2=-(p/2)+wurzel;printf("Bitte geben Sie Werte zur Berechnung von ax²+bx+c=0 ein:\n\n");
printf("Wert fuer ax²:\n");
scanf("%f",&a);
printf("Wert fuer bx:\n");
scanf("%f",&b);
printf("Wert fuer c:\n");
scanf("%f",&c);if (unterwurzel<0)
{
printf("\nDiese Aufgabe hat kein Ergebnis!\n\n");
}
else
{
printf("Ergebnis fuer x1: %f\nErgebnis fuer x2: %f",erg_x1,erg_x2);
}return 0;
}Danke vorab!
Tuelle
-
Erst wenn du beschreibst wie sich das Fehlverhalten äußert und du den Code formatiert und in [cpp]-Tags gepackt hast.
-
Also:
#include <stdio.h> #include <math.h> int main(void) { float a; float b; float c; float p=b/a; float q=c/a; float unterwurzel=((p/2)*(p/2))-q; float wurzel=sqrt(unterwurzel); float erg_x1=-(p/2)-wurzel; float erg_x2=-(p/2)+wurzel; printf("Bitte geben Sie Werte zur Berechnung von ax²+bx+c=0 ein:\n"); printf("Wert fuer ax²:\n"); scanf("%f",&a); printf("Wert fuer bx:\n"); scanf("%f",&b); printf("Wert fuer c:\n"); scanf("%f",&c); if (unterwurzel<0) { printf("Diese Aufgabe hat kein Ergebnis!\n"); } else { printf("Ergebnis fuer x1: %f\nErgebnis fuer x2: %f",erg_x1,erg_x2); } return 0; }
Das Programm läuft an sich, allerdings bekomme ich bei jeder Eingegebenen Zahlenkombi, "Diese Aufgabe hat kein Ergebnis!".
Obwohl es rechnerisch Lösungen gibt!
-
Seien x und y zwei relle Zahlen. Wie viel die Dezimaldarstellung von x durch y?
-
µngbd schrieb:
Seien x und y zwei relle Zahlen. Wie viel die Dezimaldarstellung von x durch y?
Wie viel ist ...
-
µngbd schrieb:
Seien x und y zwei relle Zahlen. Wie viel die Dezimaldarstellung von x durch y?
Sorry, verstehe deine Frage nicht. Zumal von y in diesem Programm keine Rede ist...
-
Tuelle1 schrieb:
Sorry, verstehe deine Frage nicht.
Die kann man auch nicht beantworten. Erst wenn man die Zahlen kennt, kann man das ausrechnen. Das gilt auch für dein Programm.
-
µngbd schrieb:
Tuelle1 schrieb:
Sorry, verstehe deine Frage nicht.
Die kann man auch nicht beantworten. Erst wenn man die Zahlen kennt, kann man das ausrechnen. Das gilt auch für dein Programm.
Habe verschiedene Zahlen ausprobiert. Unter anderem natürlich auch welche, bei denen (p/2)²-q größer als 0 ist.
Es können ja Dezimalzahlen sowohl positiv als auch negativ verwendet werden. Ich habs zuerst mit ganzen Zahlen ausprobiert...
-
Der Wert von a ist aber erst ab Zeile 18 bekannt. Von dort an kannst du damit rechnen. Vorher hat a irgendeinen zufälligen Wert, und deshalb auch alles, was du aus a berechnest.
-
Ehm, das bedeutet, ich muss die unteren Deklarationen weiter nach unten packen?
Sorry stehe aufm Schlauch, bin Programmier Neuling!
-
Ehm, das bedeutet, ich muss die unteren Deklarationen weiter nach unten packen?
Bei alten Compilern darf man das nicht, und es sind noch nicht alle Compiler in Neuzeit angelangt. Sicherheitshalber besser nur die Zuweisungen nach unten schieben:
float a, b, c, ..., erg_x2; // oder in mehrere Zeilen, ganz egal // dann hier die Eingaben // dann kannst du mit den Zahlen rechnen: p=b/a; q=c/a; ...
-
okay okay...
Nun gehts.
Das bedeutet man sollte sich grundsätzlich angewöhnen, die Zuweisung der Deklarationen immer erst vor dem Schritt zu machen, bei dem sie dann verwendet werden?
-
Wenn du sie verwendest, sollten sie einen wohldefinierten Wert haben. Und das haben sie erst, nachdem ein = danach gestanden ist (es ginge auch anders, aber egal).
Eine Deklaration ist sowas:
float me;
Eine Zuweisung ist sowas:
me = 17.71;
Man darf bei einer Deklaration auch gleich einen Anfangswert angeben, das nennen dann manche "Initialisierung". Man muss aber nicht.
Ganz allgemein spielt die Zeit in C eine Rolle, und du musst überlegen was vorher und was nachher passiert, und wie die beiden kausal zusammenhängen. Das gilt nicht für alle Sprachen (zB gilt das nicht für die üblichen mathematischen Notationen).