![]() |
programm fehler (pq-formel) - numerische datentypen
hi, muss für die schule ein programm machen, womit ich durch hilfe der pq-formel auf die lösung komme
jedoch habe ich folgende fehlermeldung (bei dem berechnungsteil): "Zeigertyp erwartet" procedure TForm1.BtBerechnenClick(Sender: TObject); //Deklaration var p, q, x1, x2 : real; begin //Umwandlung der Eingaben p:=strtofloat (Edp.text); q:=strtofloat (Edq.text); //Berechnungsteil x1 := -1*p / 2 + sqrt(p^2/4-q); x2 := -1*p / 2 - sqrt(p^2/4-q); if sqrt((p^2/4)-q)<0 then begin EdKommentar.text:='Keine Lösung'; end else if sqrt((p^2/4)-q)=0 then begin EdKommentar.text:='Nur Eine Lösung'; end else begin EdKommentar.text:='Zwei verschiedene Lösungen'; //Formatierung Edx1.text:=floatt ostrF(x1,ffgeneral,10,3); Edx2.text:=floattostrF(x2,ffgeneral,10,3 ); end; wenn ich die aufgabe streiche p zu quadrieren, dann klappt zwar das programm, aber stürzt mit einer fehlermeldung bei 2 positiven zahlen ab ("ungültige gleitkommaoperation") und wenn p negativ ist klappt es auch nicht woran liegt das?? ich kann zwar statt p^2, p*p eingeben, aber ich würde es gerne anders machen wäre nett, wenn ihr helfen würdet, ich benutze delphi 5 von borland, falls das hilft |
Re: programm fehler (pq-formel) - numerische datentypen
Delphi-Quellcode:
Dieses --> ^ Zeichen wird in Delphi im Zusammenhang mit Zeigern verwendet.
if sqrt((p^2/4)-q)=0
Binde die Unit Math ein und nutze die Funktuon Power ;-) [edit] Ups, hab ich übersehn: Herzlich Willkommen ;-) [/edit] |
Re: programm fehler (pq-formel) - numerische datentypen
Erstmal
:party: :hello: :party: Herzlich Wilkommen in der DP :party: :hello: :party: Du kannst in Delphi nicht einfach ein ^ eingeben, das ist dort für Zeiger reserviert. Stattdessen kannst du Sqr zum quadrieren eines Wertes verwenden. Also so:
Delphi-Quellcode:
P.S: Bitte verwende das nächste mal auch solche Delphi Tags für deinen Code
x1 := -1*p / 2 + sqrt(Sqr(p)/4-q);
x2 := -1*p / 2 - sqrt(Sqr(p)/4-q); |
Re: programm fehler (pq-formel) - numerische datentypen
aber es gibt immernoch das problem mit der ungültigen gleitkommaoperation
es klappt nur wenn p positiv und q negativ ist aber sonst nicht ??? |
Re: programm fehler (pq-formel) - numerische datentypen
Naja, nicht unbedingt.
Du muss halt aufpassen, dass der Term unter der Wurzel >=0 ist ;-) |
Re: programm fehler (pq-formel) - numerische datentypen
if sqrt(sqr(p)/4-q)<0
then begin EdKommentar.text:='Keine Lösung'; das habe ich doch berücksichtigt |
Re: programm fehler (pq-formel) - numerische datentypen
Zitat:
Delphi-Quellcode:
if (sqr(p)/4-q) >= 0 then
//Rechnung else //keine Rechnung |
Re: programm fehler (pq-formel) - numerische datentypen
ich habs es nochmal ausprobiert
aber es klappt trotzdem nicht liegt es vielleicht an der deklaration?? |
Re: programm fehler (pq-formel) - numerische datentypen
Wenn du alle Variablen als REAL deklariert hast sollte es keine Probleme seitens der Variablen geben. Zeig doch noch mal den Code-Teil, in dem der Fehler auftritt und sag nochmal genau, welcher Fehler es jetzt ist, dann können wir dir auch eher helfen :wink:
|
Re: programm fehler (pq-formel) - numerische datentypen
Außerdem ist mir noch ein kleiner Logikfehler aufgefallen:
Zitat:
Delphi-Quellcode:
die Werte aus.
if (...) then
begin (...) end; //Edit1: Da hab ich doch glatt selber die Delphi-Tags vergessen :mrgreen: |
Re: programm fehler (pq-formel) - numerische datentypen
wenn ich die datei compiliere
und für p=2 und q=3 eingebe, als beispiel dann kommt folgende fehlermeldung Im Projekt Projekt1.exe ist eine Exception der Klasse EInvalidOp aufgetreten. Meldung: 'Ungültige Gleitkommaoperation'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortfahren. danach ist folgender bereich blau markiert
Delphi-Quellcode:
if sqrt(Sqr(p)/4-q)<0
|
Re: programm fehler (pq-formel) - numerische datentypen
Du musst vorher prüfen, ob der Ausdruck unter Wurzel bzw. in sqrt() kleiner als Null ist.
Delphi-Quellcode:
mfG
var
Num: Real; begin Num := Sqr(P)/4 - q;´ if Num >= 0 then begin // jetzt mit sqrt() weitermachen. end; end; mirage228 |
Re: programm fehler (pq-formel) - numerische datentypen
ich hab mal die komplette datei geuppt, damit sich das einige angucken können
![]() |
Re: programm fehler (pq-formel) - numerische datentypen
Zitat:
((2^2)/4)-3 = (4/4)-3 = 1-3 = -2 und daraus kann man nun mal keine Wurzel ziehen! Hier nochmal die Reihenfolge, in der du prüfen musst:
Danach kannste das ganze entsprechend ausgeben. read you, gordon :cheers: |
Re: programm fehler (pq-formel) - numerische datentypen
Zitat:
das stimmt ja überhaupt nicht |
Re: programm fehler (pq-formel) - numerische datentypen
Zitat:
Mit deinen Beispielen (übertriebene Klammersetzung): ((sqr(2))/4)-(-3) = (4/4) -(-3) = 1 + 3 = 4 und somit ist der Term positiv und die Wurzel ist nicht Null, also erhält man 2 Lösungen :wink: |
Re: programm fehler (pq-formel) - numerische datentypen
kann mal jemand das programm ausprobieren
ist alles notwendige dabei ![]() |
Re: programm fehler (pq-formel) - numerische datentypen
Zitat:
Hab's mir mal geladen und guck's mir mal eben an! |
Re: programm fehler (pq-formel) - numerische datentypen
Liste der Anhänge anzeigen (Anzahl: 1)
Okay, dein Fehler liegt darin, dass du die Berechnungen von X1 und X2 außerhalb des If-Then Blocks durchführst. Diese Berechnungen können ja teilweise gar nicht durchgeführt werden!
Also gehören die Berechnungen in den If-Block! Außerdem fragt deine 1. Abfrage immer noch direkt die Wurzel ab, dabei sollte zuerst gefragt werden, ob der Term unter der Wurzel < 0 ist!! hab das ganze mal berichtigt und angehängt. //Edit1: Außerdem möchte ich noch folgendes sagen: Die DP ist kein Hausaufgabe-Hilfe-Forum, in dem jeder seine Hausaufgaben postet und gemacht bekommt. Es wird gewisse Kooperation seitens dessen erwartet, der die Aufgabe lösen soll. Ich habe heute nur viel Geduld, weil ich weiß, wie es ist im Info-Unterricht zu sitzen, bei einem total inkompetenten Lehrer und dann auch noch Homeworks machen zu müssen :wink: |
Re: programm fehler (pq-formel) - numerische datentypen
ja, das klappt
danke für eure hilfe auf euch ist verlass |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz