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;