Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   programm fehler (pq-formel) - numerische datentypen (https://www.delphipraxis.net/42215-programm-fehler-pq-formel-numerische-datentypen.html)

pete_knightde 15. Mär 2005 20:56


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

Ultimator 15. Mär 2005 21:03

Re: programm fehler (pq-formel) - numerische datentypen
 
Delphi-Quellcode:
if sqrt((p^2/4)-q)=0
Dieses --> ^ Zeichen wird in Delphi im Zusammenhang mit Zeigern verwendet.
Binde die Unit Math ein und nutze die Funktuon Power ;-)

[edit] Ups, hab ich übersehn: Herzlich Willkommen ;-) [/edit]

BenjaminH 15. Mär 2005 21:10

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:
x1 := -1*p / 2 + sqrt(Sqr(p)/4-q);
x2 := -1*p / 2 - sqrt(Sqr(p)/4-q);
P.S: Bitte verwende das nächste mal auch solche Delphi Tags für deinen Code

pete_knightde 15. Mär 2005 21:17

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

???

Ultimator 15. Mär 2005 21:20

Re: programm fehler (pq-formel) - numerische datentypen
 
Naja, nicht unbedingt.
Du muss halt aufpassen, dass der Term unter der Wurzel >=0 ist ;-)

pete_knightde 15. Mär 2005 21:34

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

gordon freeman 15. Mär 2005 21:38

Re: programm fehler (pq-formel) - numerische datentypen
 
Zitat:

Zitat von pete_knightde
if sqrt((p^2/4)-q)<0
then begin
EdKommentar.text:='Keine Lösung';

das habe ich doch berücksichtigt

An dieser Stelle rechnest du ja bereits mit der Wurzel. Vorher müsste so etwas stehen:

Delphi-Quellcode:
if (sqr(p)/4-q) >= 0 then
//Rechnung
else
//keine Rechnung

pete_knightde 15. Mär 2005 21:46

Re: programm fehler (pq-formel) - numerische datentypen
 
ich habs es nochmal ausprobiert
aber es klappt trotzdem nicht

liegt es vielleicht an der deklaration??

gordon freeman 15. Mär 2005 21:51

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:

gordon freeman 15. Mär 2005 21:54

Re: programm fehler (pq-formel) - numerische datentypen
 
Außerdem ist mir noch ein kleiner Logikfehler aufgefallen:

Zitat:

Zitat von pete_knightde
Delphi-Quellcode:
//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';

Du berechnest erst die Werte und checkst dann ab, ob diese Berechnung möglich ist. Das wird wahrscheinlich dein Fehler sein! Check erst, ob die Berechnung möglich ist und Rechne dann innerhalb des
Delphi-Quellcode:
if (...) then
  begin
   (...)
  end;
die Werte aus.

//Edit1: Da hab ich doch glatt selber die Delphi-Tags vergessen :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr.
Seite 1 von 2  1 2      

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