![]() |
Re: Mathe mit Strings (die deutsche StringMatheLib ._. )
Hier das nächste Parser-Feature: 3*-2 liefert -6, das ist zwar ungewöhnlich aber OK. Aber 3*--2 liefert 3*--2! :o Ist zwar auch nicht falsch aber ...
|
Re: Mathe mit Strings (die deutsche StringMatheLib ._. )
Diesmal was zur den Konstanten pi10, pi100 und e10. Da
Pi*10^100 = 31415926535897932384626433832795028841971693993751 05820974944592307816406 2862089986280348253421170679.821480865132823066470 93844609550582231725359408128481... ist, sollten doch die letzten Stellen bei pi10 ...26536 und bei pi100 ...70680 lauten. Analalog e10='27182818285'. [edit=Luckie]Beitrag formatiert. Mfg, Luckie[/edit] |
Re: Mathe mit Strings (die deutsche StringMatheLib ._. )
zu PI und e ... nein, denn ich hab vorgestern gelernt, daß derartige Zahlen nicht gerundet werden. :mrgreen:
Wiki hat gesagt: Anm.: Der angegebene Wert ist nicht π auf 100 Nachkommastellen gerundet, sondern es handelt sich um die ersten 100 Stellen der Dezimalentwicklung, d.h., die 100. Nachkommastelle ist eine 9. Gerundet wären die letzten zwei Ziffern 80, nicht 79 (die 101. Stelle lautet auf 8). In der Zahlentheorie wird prinzipiell nicht gerundet, das ist nur bei konkreten physikalischen Messungen und ähnlichen Gebieten der angewandten Mathematik von belang. 3*--2 war ein Fehler in der "istZahl"-Prüfung, welcher die Zahl in den ersten zwei Durchgängen (2 und -2) durchließ, wobei auch --2 entstanden ist, aber bei der Übergabe an die Funktion es als Falsch ansah und somit nicht verarbeitete :oops: |
Re: Mathe mit Strings (die deutsche StringMatheLib ._. )
Hab die Veraltung der Konstanten, Funktionen und Operatoren etwas verbessert (bzw. erstmal Funktionen dafür erstellt)
* nun gibt es 2 Zwischenspeicher (Mem1 und Mem2 ... zum Speichern Button drücken und aufrufen via Konstante) * und die Konstante "Last", welche das letzte "erfolgreiche" Ergebnis enthält * die Rechendauer und Zahlengröße steht unterm Berechnenbutton * im Edit wurde [Enter] zum Berechnen definiert "1" ins Edit eintragen (man braucht halt erstmal ein "Last", um es zu verwenden) [enter] nun "Quadrat(Last)+1" ins Edit eintragen [enter] [enter] [enter] ... und nun nur noch zusehn, wie sich der Rechner bald zu tote rechnet :nerd: also mit Hilfe von Demo1 und Demo5 kann man sich nun vermutlich ganz leicht einen netten Ganzzahl-Taschenrechner zusammenbasteln :angel2: [add] und ich hatte inzwischen mal die "langsamen" Funktions-Versionen rausgebaut, dafür gibt es es jetzt bei einigen Funktionen anfangs eine auskommentierte Version
Delphi-Quellcode:
Function TMathe.Name(...
//Begin // ... langsamer/einfacherer Code //End; Begin ... etwas optierter Code End; |
Re: Mathe mit Strings (die deutsche StringMatheLib ._. )
- ein bissl aufgeräumt
- TMathe.Quadratwurzel, TMathe.PotenzModulo und Abhängiges stark beschleunigt - schnellen TMathe.Quotient2 eingeführt r := a div 2 (Grund für vorherigen Punkt) - Demo6 erstellt = "Fließkomma"-Parser (alles mit # rechnet noch mit "falscher" Nachkommabehandlung) ![]() |
Re: Mathe mit Strings (die deutsche StringMatheLib ._. )
Moin!
Ich habe mir dein Code mal angeguckt. An sich ganz ordentlich (wobei ich es selber hasse, wenn "Sonderzeichen" benutzt werden (außer Konstanten) :D ). Aber es ist dein Code also kein Ding. Aber eine Sache zu Produkt! Im Moment sieht das so aus:
Delphi-Quellcode:
Könnte man da nicht eine For-Schleife verwenden?
While b <> '' do Begin
For i := 1 to ZeichenZuZahl[b[Length(b)]] do Result := Summe(Result, a); a := a + '0'; // a := Produkt(a, '10'); Delete(b, Length(b), 1); // b := Quotient(b, '10'); End;
Delphi-Quellcode:
So fällt der Delete-Befehl weg. Und man ruft nur noch einmal "Length()" auf, statt wie jetzt 2*<Anzahl Stellen>. Außerdem ist imho eine For-Schleife immer schneller als eine entsprechende While-Schleife.
for j := Length(b) downto 1 do
begin for i := 1 to ZeichenZuZahl[b[j]] do Result := Summe(Result, a); a := a + '0'; end; MfG xZise |
Re: Mathe mit Strings (die deutsche StringMatheLib ._. )
Leider sind in der neuesten Ausgabe einige Verschlimmbesserungen drin:
1. Nicht mehr D6-kompatibel (xpman ...) 2. Auch D7 und höher gehen (bei mir) nicht: M7\DCC32 -b Demo6.dpr Borland Delphi Version 15.0 Copyright (c) 1983,2002 Borland Software Corporation StringMatheLib.pas(1104) StringMatheParserFloat.pas(660) Error: Incompatible types StringMatheParserFloat.pas(919) Demo6U.pas(5) Fatal: Could not compile used unit 'StringMatheParserFloat.pas' Habe gestern abend noch einige Features (der alten Vers) gefunden. Wenn x ein positive Zahl ist:
Code:
Übrigens: Ich (und mein Modem) fänden es toll, wenn die immer mehr werdenden Demo-EXE-Files separiert würden zum Runterladen bzw. ein separates nur Source-Zip da wäre.
PotenzModulo(x,0,0) -> 1 statt Fehler
PotenzModulo(x,0,1) -> 1 statt 0 PotenzModulo(x,0,-1) -> 1 statt 0 Plus1(-1) -> -0 statt 0 Negieren(0) -> -0 statt 0 Quotient(-0,-x) -> -0 statt 0 Produkt(-x,0) -> -0 statt 0 Gammatester |
Re: Mathe mit Strings (die deutsche StringMatheLib ._. )
Sonderzeichen, Sonderzeichen ... Sonderzeichen? :gruebel:
(hatte mal 'nen Tag lang ain ä in einem Funktionsnamen ... ist schon irgendwie cool :mrgreen: ) jetzt nur noch a := a + '0'; durch das "neue" Produkt10(a, 1); ersetzt und es sieht fast schon professionell aus :stupid: Zitat:
[add] das xpman kann man ja beruhigt entfernen :) hmmm, ich wußte nicht, in wie weit die D2009-.RES incl. Manifest mit älteren Delphis harmoniert, drum hatte ich eine D7-.RES verwendet und halt das XP-Manifest einzeln ... das kann ich ja gern wieder rückgängig machen :) OK, hab ja auch sowas wie Modem (bin gestern 'ne Weile nur mit GPRS reingekommen :wall: ) -0 :shock: mal sehn was da falsch läuft und eigentlich sollte das - von der Normlisierung entfernt werden :gruebel: Zitat:
- StringMatheLib.pas(1104) gibt es nicht ... es existieren doch nur 1103 Zeilen - die 660 ... wundert mich jetztz, daß dieses gestern noch ging :shock: einen String nach "Char" Casten und erfolgreich vergleichen - 919 ist klar (liegt an 660) |
Re: Mathe mit Strings (die deutsche StringMatheLib ._. )
In Ord(TMatheParserFListe(Liste[i + 1].Operanden)[i3].Operand) wendest Du ord auf einen String. Kann mir eigentlich keine Delphiversion vorstellen, die das erlaubt.
|
Re: Mathe mit Strings (die deutsche StringMatheLib ._. )
Zitat:
Zitat:
Zitat:
MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 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-2025 by Thomas Breitkreuz