Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: Delphiproblem - Taschenrechner brauche hilfe !

  Alt 11. Mai 2010, 12:48
Erstmal wissen wir garnicht wie dein Taschenrechner arbeitet, da ist es schwer zu sagen, wie du was lösen kannst.

Dann kann ich garnicht verstehen, wie du nichts finden konntest, denn immerhin gibt es alleine mehrere Taschenrechner und Mathe-Bibliotheken hier in der DP, da sollte sich langsam mal für alles eine Lösung finden lassen.

Zitat von -Ptype-:
Zur rechenart die ich noch gerne haben würde, wäre die n-te wurzel aus x zu berechnen ohne die function oder wie das auch genannt wir "Power" aus der Unit math zu verwenden.
Tja, das sagt abernichts darüber aus, was du alles zum Lösen nutzen kannst.

PS: Es läßt sich eigentlich fast jede mathematische Operation auf die grundlegenste Operation reduzueiren.
> Die Addition
Das ginge selbst mit sowas, wie den Wurzeln.

PSS: Wenn ich mal so in meine letze Mathe-Lib reinschaue, dann wurde wird da grundsätzlich alles manuell errechnet und diese Lib ist hier in der DP zu finden.
In diese Lib ist zwar keine Funktion für die n-te Wurzel zu finden, aber wenn man sich das "einfache" Prinzip der "Quadratwurzel" ansieht, dann ist es ein Leichtes dieses für eine mehrfache Wurzelfunktion zu verwenden.




Zu dem Komma ... wenn dein Löschbutton das Komma löscht (du kannst ja vor dem Löschen prüfen was gelöscht wird), dann stellst du einfach das Button.Enable wird auf True und fertig.
Ist das denn so schwer?

PS: Hier mal eine etwas ältere und einfache Power-Funktio aus Delphi.
(in neueren Versionen ist ja eine optimiertere Variante verbaut)
Delphi-Quellcode:
{ Power: Raise base to any power.
  For fractional exponents, or |exponents| > MaxInt, base must be > 0. }

function Power(const Base, Exponent: Extended): Extended;
begin
  if Exponent = 0.0 then
    Result := 1.0 { n**0 = 1 }
  else if (Base = 0.0) and (Exponent > 0.0) then
    Result := 0.0 { 0**n = 0, n > 0 }
  else if (Frac(Exponent) = 0.0) and (Abs(Exponent) <= MaxInt) then
    Result := IntPower(Base, Integer(Trunc(Exponent)))
  else
    Result := Exp(Exponent * Ln(Base))
end;
$2B or not $2B
  Mit Zitat antworten Zitat