Ich stelle euch hier mal mein, noch nicht ganz fertiges Programm vor, mit dem man ganz leicht quadratische Funktionen berechnen kann. Das Programm benutzt die PQ-Formel zum errechnen von x1 und x2, welche man in der Mathematik normalerweise als Nullpunkte auf der X-Achse bezeichnet, wie es sie z.B. häufig bei Parabeln gibt. Im moment kann das Programm nur Funktionen mit Additionen rechnen, ich füge aber später mehr hinzu. Kiddies die in der Schule also Nullstellen berechnen müssen könnens ja mal verwenden. Das ist mein zweites Programm in Delphi ich würde mich als um konstruktive Kritik o.a. freuen. :lol
Features:
- Nullstellen quadratischer Funktionen berechnen ( f(x)=ax²+bx+c )
- Übersichtlich designed
- Überprüft ob die Zahl unter dem Wurzel Schritt negativ ist und gibt eine Warnung aus
- Lasst euch von den Labeln mit + nicht verwirren ihr könnt auch negative Zahlen in die Felder eingeben, da - und + wieder - ergibt!
-Source Code liegt bei
procedure TForm1.CalculateBtnClick(Sender: TObject);
begin
xq := StrToFloat(EditXQ.Text); { xq aus EditXQ holen }
p := StrToFloat(EditP.Text); { p aus EditP holen }
q := StrToFloat(EditQ.Text); { q aus EditQ holen }
p1 := p / xq; { Auf Normalform dividieren falls nötig }
q1 := q / xq;
p2 := - p1 / 2; { Zahl vor der Wurzel ausrechnen }
q2 := sqr( p1 / 2 ); { p/2 Quadrat unter der Wurzel }
q3 := (q2 - q1); { q2 ist q1+q (zusammenrechnen) }
Application.Title := 'Negativer Radikant!'; { Fenstertitel von ShowMessage }
if ( q3 < 0 ) then { Wenn q2 kleiner als 0 ist (negativ) dann... }
begin
ShowMessage('Rechnung nicht möglich!'+#13#10+'Aus einer negativen Zahl kann keine Wurzel gezogen werden!');
Exit;
end
else
q4 := sqrt(q3); { Wurzel aus q2 }
x1 := p2 + q4; { x1 ist p1+q3 }
x2 := p2 - q4; { x2 ist p1-q3}
joa ganz schön gemacht
ist aber nicht sonderlich schwer hab sowas ohne c schon in autoit gemacht ich weiss vb is was anderes^^
/edit is doch vollkommen ob es in Delphi oder in sonstwas ist.....
22.11.2010, 19:49
dYnAm1c
Das is nicht in VB sondern in Delphi gecoded.
22.11.2010, 20:19
Hu5eL
evtl mitternachtsformel nehmen ist einfacher xDansonsten ok
22.11.2010, 20:23
AlterHacker
Gut, die Warnung bzgl. der Wurzel wird ausgegeben, und trotzdem kommt ein Ergebnis?!
Des weiteren kann ich mit wine nichts in das c-Feld eintragen.
22.11.2010, 20:26
dYnAm1c
Ja das trotzdem ein Ergebniss ausgegeben wird obwohl die Warnung kommt ist mir auch schon aufgefallen, ich weiß im moment nicht wie ich ihm sagen soll dass er aufhören soll zu rechnen wenn die Warnung kommt.
Warum kannst du nichts in das C Feld eingeben?
22.11.2010, 20:39
inout
Zitat:
Zitat von dYnAm1c
[...] ich weiß im moment nicht wie ich ihm sagen soll dass er aufhören soll zu rechnen wenn die Warnung kommt.
Einfach ein exit; nach dieser Anweisung einfügen, mit einem bool'schen Flag arbeiten oder diesen Teil in den else-Zweig auslagern.
Genaueres könnte man sagen, wenn du mal den Source postest oder ist dieser 3-Zeiler so streng geheim? ;)
Ja die Source kommt auch noch aber muss die noch bisschen aufräumen xD
22.11.2010, 21:23
Steiger_mp
Zitat:
Zitat von Hu5eL
evtl mitternachtsformel nehmen ist einfacher xDansonsten ok
PQ Formel ist ein andrer Name für die Mitternachtsformel,
dein Mathelehrer wird sich freuen, wenn du ihm sagst, dass x = 4,5673842403 ist ;)
Ein bruch ist angebrachter!
22.11.2010, 21:41
dYnAm1c
Meinst du? Mein Mathelehrer besteht sogar darauf das wir Dezimalzahlen verwenden.
Außerdem sollte das Programm sowieso nur zum überprüfen genutzt werden da ja überhaupt
kein Rechenweg angegeben wird und ohne Rechenweg geht in der Mathematik gar nichts.
22.11.2010, 21:49
blackberry
Zitat:
Zitat von dYnAm1c
und ohne Rechenweg geht in der Mathematik gar nichts.
Ha! Da hast du wohl aber noch nie mathematische Literatur gelesen.
22.11.2010, 22:01
dYnAm1c
Hab ich nicht und will ich nicht :p
22.11.2010, 22:45
Delphia
er meint wohl das man ohne rechenweg keine punkte bekommt!
23.11.2010, 15:13
dYnAm1c
So Source Code ist jetzt auch dabei!
23.11.2010, 17:23
Cooter
Für den Anfang ist das doch nicht schlecht :)
Aber es wäre vielleicht elleganter, wenn du MessageDlg anstatt ShowMessage für die Fehlermeldung nimmst:
Aber es wäre vielleicht elleganter, wenn du MessageDlg anstatt ShowMessage für die Fehlermeldung nimmst:
Das hatte ich bei meinem ersten Versuch, irgendwas hat nicht geklappt und ich hab ShowMessage benutzt^^, ma schaun ob ichs später einbau. thx
23.11.2010, 17:36
Cooter
Wie schaut denn die Fehlermeldung aus?
Hast du daran gedacht, die Buttons als Array, also in [], zu übergeben?
Das passiert oft, wenn man noch neu in Delphi ist oder mal kurz nicht aufpasst :P
23.11.2010, 18:04
inout
Meine Verbesserungsvorschläge wären:
Lokale Variablen benutzen. Globale Variablen mit 1-2 Buchstaben sind tödlich. Das fällt in so einem kleinen Programm zwar nicht auf, sollte man sich aber trotzdem nicht angewöhnen.
Lokale Variablen mit 1-2 Buchstaben gehen schon eher in Ordnung.
Exceptions abfangen. Zum Beispiel bei StrToFloat (ungültige Gleitkommaoperation) oder die Division durch Null.
Man könnte daraus auch ganz gut eine Funktion/Klasse schreiben.
23.11.2010, 18:40
dYnAm1c
Mit Exceptions und Globalen Variablen kenn ich mich noch nicht aus :o ^^
Edit: Oh man bin ich blöd, jetzt weiß ich was du mit Lokalen Variablen meinst, die werden erst in die Prozedur geschrieben wo sie verwendet werden^^
24.11.2010, 17:52
gORDon_vdLg
So, und jetzt zeichnen lassen =P
24.11.2010, 19:04
dYnAm1c
bist du verrückt :D kp wie das geht^^, aber vielleicht könnte man mit einer Wertetabelle arbeiten... :D
24.11.2010, 19:09
gORDon_vdLg
google einfach nach dem stichwort canvas oder gdi, is total easy...
24.11.2010, 19:20
dYnAm1c
Entweder bin ich blind oder dafür gibts echt kein Tutorial.
24.11.2010, 19:25
motion
Könntest den Rechner umschreiben, so dass er bei einer negativen Wurzel ausgibt, dass es einfach keine Nullstellen gibt und bei der Wurzel = 0 dass es nur eine Nullstelle + Position gibt.
24.11.2010, 19:29
gORDon_vdLg
tut mir leid dir das sagen zu müssen, aber, ich fürchte du bist blind. google -> "delphi canvas" und go^^
24.11.2010, 19:37
dYnAm1c
@motion Jo das mit einer Nullstelle is auch noch ne gute Idde thx :)
@gORDon_vdLg Ja bin ich xD habs jetz auch gefunden^^