Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Rechenprogramm (https://www.delphipraxis.net/134885-rechenprogramm.html)

Amateurprofi 31. Mai 2009 17:20


Rechenprogramm
 
Liste der Anhänge anzeigen (Anzahl: 4)
Neue Version vom 06.10.2020 (Version 3.4.1.1)
Info hierzu weiter unten in #91

Neue Version vom 26.09.2020 (Version 3.3.3.1)
Info hierzu weiter unten in #74

Neue Version vom 16.04.2018 (Version 3.3.2.1)
Info hierzu weiter unten in #73

Neue Version vom 12.04.2018 (Version 3.3.1.1)
Was neu ist siehe #60 weiter unten.

Neue Version vom 12.04.2018 (Version 3.2.1.1)
Was neu ist siehe letzter Beitrag weiter unten.

Neue Version vom 13.07.2010 (Version 2.3.1.1)
Was neu ist siehe letzter Beitrag weiter unten.

Neue Version vom 27.02.2010
Hochgeladen wegen eines Hinweises auf einen Bug (Siehe # 50)
Was alles neu ist : Siehe #51
Achtung, ich hab das jetzt nur wegen des Bugs hochgeladen.
Einige Teile des Programms befinden sich in einer Änderungsphase, und es ist mit Fehlern zu rechnen.
Die Teile, die bisher funktionierten sollten davon aber nicht betroffen sein.




Neue Version vom 28.07.2009

Vielleicht kann der oder die eine oder andere etwas mit anhängendem Rechenprogramm anfangen.
Das Hauptfenster enthält zwei Textfenster. In das rechte können numerische Ausdrücke eingegeben werden, im anderen werden die Ergebnisse ausgegeben.
Die Auswertung der Ausdrücke erfolgt immer dann, wenn im rechten Textfenster etwas geändert wird.
Das Programm kennt die gängigen Rechenoperatoren und Funktionen und etwas mehr.
Zum Beispiel werden Ein-/Ausgabe in unterschiedlichen Zahlensystemen, das Rechnen mit Datums- und Zeitangaben und mit Brüchen unterstützt.
Wer das Programm ausprobieren möchte, sollte nach dem ersten Start des Programmes mit Menu > Hilfe > Einführung auswählen. Ein (zugegebenermaßen simpel gestricktes) Tutorial gibt einen Einblick. Ausführlichere Infos können dem Helpfile, der mit Menu > Hilfe > Hilfe aufgerufen wird, entnommen werden.


Zahlen können ein- und ausgegeben werden als
Dezimalzahl, z.B. 2009, 3.14, 1.5e3
Hexzahl, z.B. $7D9 = Dezimal 2009
Binärzahl, z.B. "11111011001 = Dezimal 2009
Zahl mit anderer Basis, z.B. #8#3731 = Dezimal 2009
Römische Zahl, z.B. 'MMIX = Dezimal 2009
Datum, z.B. 10.5.2009 = 10. Mai 2009
Uhrzeit, z.B. 11:55:00 = Fünf vor 12
Datum + Uhrzeit, z.B. 10.5.2009 11:55:00
Kalenderwoche, z.B. wk19/2009
Bruch, z.B. 3//4 oder _3/4 = Dezimal 0.75
Winkel, z.B. 45°10'
Positionsangabe, z.B. 53°34'02.12"N, 10°01'20.24"E = Eine Position in Hamburg
Speicherauszug, z.B. ?00 00 00 00 00 00 20 FB 09 40 = Dezimal 2009

Als Operatoren sind z.Z. implementiert

Dyadische Operatoren, die zwischen 2 Werten stehen
Grundrechenarten
+, -, *, /
Erweiterte Grundrechenarten
\, Div Dividieren mit Integer-Resultat
|, Mod Modulo mit reellem Resultat
\\, IDiv Integer Division mit Integer-Resultat
||, IMod Modulo aus Integer Division
\*, DivMul Integer Division mit anschließender Multiplikation
^ Potenzieren
Logische- / Boolesche Operatoren
And, Or, Xor, Nand, Nor, Xnor
Vergleichs Operatoren mit Vergleichtoleranz
<, <=, =, <>, >=, >
Vergleichs Operatoren ohne Vergleichtoleranz
<< Kleiner
<== Kleiner oder identisch
== Identisch
<>> Nicht identisch
>== Größer oder identisch
>> Größer
Bitverschiebungs Operatoren
Shl, Shr, Rol, Ror
Bit-orientierte Operatoren
Bts Bit = 1 setzen
Btr Bit = 0 setzen
Btc Bit "umdrehen"
Btt Bit testen

Monadische Operatoren, die vor einem Wert stehen
- Vorzeichen bzw. Negation
+ Nur der Vollständigkeit halber
Not Boolesche / Bitweise Negation

Monadische Operatoren, die hinter einem Wert stehen
² Quadrieren
³ Dritte Potenz
° Umrechnung von Grad in Rad (Bogenmaß)
°° Umrechnung von Rad (Bogenmaß) in Grad
! Fakultät
€ Umrechnung von Euro in DM
€€ Umrechnung von DM in Euro
' Extrahieren des Exponenten

Als Funktionen sind zur Zeit implementiert
Standardfunktionen
Abs(v) Absolutwert
Sqr(v) Quadrat
Sqrt(v) Quadratwurzel
Winkelfunktionen
Sin(v) Sinus
Cos(v) Kosinus
Tan(v) Tangens
Cot(v) Kotangens
Sec(v) Sekans
Csc(v) Kosekans
SinH(v) Sinus Hyperbolicus
CosH(v) Kosinus Hyperbolicus
TanH(v) Tangens Hyperbolicus
CotH(v) Kotangens Hyperbolicus
SecH(v) Sekans Hyperbolicus
CscH(v) Kosekans Hyperbolicus
ArcSin(v) ArcusSinus
ArcCos(v) ArcusKosinus
ArcTan(v) ArcusTangens
ArcCot(v) ArcusCotangens
ArcSec(v) ArcusSekans
ArcCsc(v) ArcusCosekans
ArcSinH(v) AreaSinus Hyperbolicus
ArcCosH(v) AreaKosinus Hyperbolicus
ArcTanH(v) AreaTangens Hyperbolicus
ArcCotH(v) AreaCotangens Hyperbolicus
ArcSecH(v) AreaSekans Hyperbolicus
ArcCscH(v) AreaCosekans Hyperbolicus
RadToDeg(v) Bogenmaß in Grad umrechen
RadToGon(v) Bogenmaß in Gon umrechen
RadToCycle(v) Bogenmaß in Cycles umrechen
DegToRad(v) Grad in Bogenmaß umrechnen
DegToGon(v) Grad in Gon umrechnen
DegToCycle(v) Grad in Cycles umrechnen
GonToRad(v) Gon in Bogenmaß umrechnen
GonToDeg(v) Gon in Grad umrechnen
GonToCycle(v) Gon in Cycles umrechnen
CycleToRad(v) Cycles in Bogenmaß umrechnen
CycleToDeg(v) Cycles in Grad umrechnen
CycleToGon(v) Cycles in Gon umrechnen
Logarithmische und exponentielle Funktionen
Ln(v) Natürlicher Logarithmus
Lg(v) Dekadischer Logarithmus
Log10(v) Dekadischer Logarithmus
Log2(v) Dualer Logarithmus
LogN(base,v) Logarithmus zu beliebiger Basis
ALn(v) Umkehrung des natürlichen Logarithmus
ALg(v) Umkehrung des dekadischen Logarithmus
ALog10(v) Umkehrung des dekadischen Logarithmus
ALog2(v) Umkehrung des dualen Logarithmus
ALogN(base,v) Umkehrung des Logarithmus zu beliebiger Basis
Root(x, y) Yte Wurzel aus x
Power(x, y) Yte Potenz von x
Exp(v) Vte Potenz von e
ExpMod(b, e, m) Modulo einer Potenz (=(b ^ e) Mod m)
Exponent(v) Exponent eines reellen Wertes
Rundungsfunktionen
Int(v) Integerwert
Trunc(v) Nachkommateil entfernen
Frac(v) Nackkommateil
Round(v) Runden
Floor(v) Abrunden
Ceil(v) Aufrunden
Bitorientierte Funktionen
BTL(v, len) Unterstes gesetztes Bit
BTH(v, len) Höchstes gesetztes Bit
BTN(v, len) Anzahl gesetzter Bits
BTP(v, len) BitParität
Kalender-, Datums- und Zeitfunktionen
HDay(name,year) Datum eines Feiertages in einem Jahr
Easter(year) Datum des Ostersonntags
Advent(year) Datum des Ersten Advent
Time(hh, mm, ss) Zeit
Date(y, m, d) Datum
DT(y, m, d, hh, mm, ss) Datum und Zeit
Today Aktuelles Datum
Now Aktuelles Datum mit aktueller Zeit
Secs(v) Umrechnung in Sekunden
Mins(v) Umrechnung in Minuten
Hours(v) Umrechnung in Stunden
Days(v) Umrechnung in Tage
Weeks(v) Umrechnung in Wochen
Months(v) Umrechnung in Monate
Years(v) Umrechnung in Jahre
Julian(v) Nummer des Tages im Jahr
JD(v) Julianisches Datum
JDtoGreg(v) Gregorianisches Datum
Entfernungsberechnung
GeoDist(p1,p2,r,f) Entfernung zwischen 2 Orten
GeoPath(Liste) Summe von Entfernungen zwischen Orten
GeoPos(w1, w2) Positionsangabe aus 2 Winkeln erstellen
Latitude(p) Breitengrad aus Positionsangabe extrahieren
Longitude(p) Längengrad aus Positionsangabe extrahieren
Sonstiges
Min(Liste) Minimum
Max(Liste) Maximum
Sum(Liste) Summe
Avg(Liste) Mittelwert
Mul(Liste) Produkt
QSum(Liste) Summe von Quadraten
LCD(Liste) Größter gemeinsamer Teiler
SCM(Liste) Kleinstes gemeinsames Vielfaches
Frc(v) Dezimalzahl in Bruch wandeln
Combis(N, K, r) Anzahl Kombinationen
Varis(N, K, r) Anzahl Variationen
NK(N, K) N über K (Anzahl Kombinationen)
HGV(N, K, r, z, p) Hypergeometrische Verteilung
HGVX(N, K, g, r, p) Hypergeometrische Verteilung
Encode((Liste),Liste) Verschlüsseln
Cvt( v, from, to ) Maßeinheiten umrechnen
Convert( v, from, to ) Maßeinheiten umrechnen
Bmi( v1, v2) Body-Mass-Index

DP-Maintenance 31. Mai 2009 17:25

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Freeware" verschoben.
Das passt eher in die Freeware-Rubrik. :-)

fLaSh11 31. Mai 2009 18:13

Re: Rechenprogramm
 
Echt coole Arbeit! Sehr vielseitig.

Eine frage hätte ich noch: Wie kann ich ein Zwischenergebnis in meine neu Rechnung aufnehmen?

Matze 31. Mai 2009 18:23

Re: Rechenprogramm
 
Sehr schön gemacht!

Doch doppelte Operatoren "\" und "\\" verwirren, finde ich. ;)

Grüße, Matze

Satty67 31. Mai 2009 18:33

Re: Rechenprogramm
 
Klasse Arbeit. :thumb:

Übersichtliche Oberfläche und mächtig viel Leistung im Hintergrund versteckt. Wird wohl auf Ctrl-Alt-R gelegt (war vorher der Windows Rechner)

Forlan 31. Mai 2009 19:17

Re: Rechenprogramm
 
Stimme hier allen zu ;)
Gute Arbeit :thumb:

Corpsman 31. Mai 2009 21:37

Re: Rechenprogramm
 
Habs nur kurz überflogen aber auf den 1. Blick kann ich nur sagen WOW.

Die Echtzeithilfe ist der Wahnsinn, evtl solltest du aber die Schriftart ein klein wenig kleiner machen, teilweise kann man nicht alles lesen.

Was mir sehr gefallen hat , dass es so schön intuitiv ist :) [zumindest für einen Programmierer], ohne die Hilfe zu lesen, hab ich gleich Variablen nutzen können.

Amateurprofi 31. Mai 2009 22:02

Re: Rechenprogramm
 
Zitat:

Zitat von fLaSh11
Eine frage hätte ich noch: Wie kann ich ein Zwischenergebnis in meine neu Rechnung aufnehmen?

Indem du es in eine Variable stellst.
Beispiel :
a:=25*3
a-15

Amateurprofi 31. Mai 2009 22:21

Re: Rechenprogramm
 
Zitat:

Zitat von Matze
Doch doppelte Operatoren "\" und "\\" verwirren, finde ich. ;)

Ja, da hast du Recht. Ich sehe es im Prinzip ebenso.
Besonders weil das nicht immer schlüssig ist (z.B. bei ° und € hat der doppelte Operator eine Umkehrung zur Folge, was in anderen Fällen nicht so ist).
Ich hab mich trotzdem dafür entschlossen, weil es nicht so viele Sonderzeichen gibt, die a) einfach zu tippen sind, b) auf der Tastatur sichbar sind und c) auch noch irgenwie Sinn machen. Ein weiterer Grund ist wohl, daß ich mich gern an alte Zeiten erinnere in denen ich auf einem Mainframe mit APL programmierte (APL besteht fast ausschließlich aus kryptischen Sonderzeichen).

himitsu 31. Mai 2009 22:23

Re: Rechenprogramm
 
Ich hab jetzt nicht sowas gefunden, aber zu dem Zwischenergebnis, da wäre es noch schön, wenn man einfach sagen könnte "hier Ergebnis aus Zeile X".

z.B.
Code:
25*3
r0-15  // Zeile1 - 15
r0+r1  // Zeile1 + Zeile2
Nja, vielleicht auch mit 1 beginnen zu indizieren, für die Nichtprogrammierer.


Wegen einiger Zeichen bin ich auch verwirrt...
Mußte z.B. da oben, in der Beschreibung, mehmals hingucken, bevor ich mitbekam, daß das " als Markierung für die Binärzahl ist und nicht nur zur Abgrenzung hier im Post ... hab mich erst ewig gefragt, wie er an 11111011001 (praktisch ohne das ") erkennen soll, daß es binär gemeint ist (binär und hekadezimal hätt man ja z.B. auch mit b und x kennzeichnen können)

das #8#3731 sähe als 8#3731 auch hübsch aus

insgesammt: ist hübsch :angel:


PS: wegen der Unmengen an Funktionen ... schonmal an eine Autovervollständigung gedacht?

Amateurprofi 31. Mai 2009 22:29

Re: Rechenprogramm
 
@Satty67
@Forlan

Danke. Freut mich, daß es euch gefällt.

Matze 31. Mai 2009 22:43

Re: Rechenprogramm
 
Schön wäre noch, wenn du es lösen würdest wie Matlab: Jedes Ergebnis wird (zusätzlich) der Variablen "ans" zugewiesen, sobald man Return drückt.

Dann wäre so etwas möglich:

Code:
5*4   [Return]
=> 20
ans+2 [Return]
=> 22
ans/2 [Return]
=> 11
Grüße, Matze

Amateurprofi 31. Mai 2009 23:22

Re: Rechenprogramm
 
Zitat:

Zitat von himitsu
Ich hab jetzt nicht sowas gefunden, aber zu dem Zwischenergebnis, da wäre es noch schön, wenn man einfach sagen könnte "hier Ergebnis aus Zeile X".?
z.B.
Code:
25*3
r0-15  // Zeile1 - 15
r0+r1  // Zeile1 + Zeile2
Nja, vielleicht auch mit 1 beginnen zu indizieren, für die Nichtprogrammierer.

Das hatte ich bereits implementiert, dann aber wieder rausgenommen.
Der Grund ist, daß der Teil, der die Ausdrücke auswertet keinerlei Zugriff auf das Hauptprogramm hat, bzw. nicht haben soll, weil er auch für andere Anwendungen verwendbar sein soll. Der eigentliche Parser ist eine Funktion, die vom Hauptprogramm als Parameter einen String (eine Zeile aus dem Eingabefeld (ein TMemo)) geliefert kriegt, und das Ergebnis als String zurück gibt. Aber das ist nicht wirklich ein grundsätzliches Problem - Ich notiere das mal als einen Punkt für eine neue Version.

Zitat:

Mußte z.B. da oben, in der Beschreibung, mehmals hingucken, bevor ich mitbekam, daß das " als Markierung für die Binärzahl ist und nicht nur zur Abgrenzung hier im Post ... hab mich erst ewig gefragt, wie er an 11111011001 (praktisch ohne das ") erkennen soll, daß es binär gemeint ist (binär und hekadezimal hätt man ja z.B. auch mit b und x kennzeichnen können)
Das gäbe dann aber Konflikte. Stell Dir vor da ist eine Variable mit dem Name xe8 oder b111. wie sollen dann xe8 und b111 ausgewertet werden ? Als Hex- und Binärzahl oder als Name einer Variablen ?

Zitat:

das #8#3731 sähe als 8#3731 auch hübsch aus
Nicht ganz unproblematisch, aber machbar.

Zitat:

PS: wegen der Unmengen an Funktionen ... schonmal an eine Autovervollständigung gedacht?
Ja, aber das übersteigt meine Fähigkeiten bei weitem (bin halt nur ein amateurprofi).

Amateurprofi 31. Mai 2009 23:32

Re: Rechenprogramm
 
Zitat:

Zitat von Matze
Schön wäre noch, wenn du es lösen würdest wie Matlab: Jedes Ergebnis wird (zusätzlich) der Variablen "ans" zugewiesen, sobald man Return drückt.

Dann wäre so etwas möglich:

Code:
5*4   [Return]
=> 20
ans+2 [Return]
=> 22
ans/2 [Return]
=> 11
Grüße, Matze

Müßte eigentlich machbar sein. Ist, so wie himitsus Vorschlag, auf die Ergebnisse vorheriger Zeilen zugreifen zu können, für eine neue Versione notiert.

himitsu 31. Mai 2009 23:41

Re: Rechenprogramm
 
Zitat:

Zitat von Amateurprofi
Das hatte ich bereits implementiert, dann aber wieder rausgenommen.
Der Grund ist, daß der Teil, der die Ausdrücke auswertet keinerlei Zugriff auf das Hauptprogramm hat, ...

da es ja auch Variablen gibt, könnte man es ja so lösen, daß dann einfach für jede Zeile eine Variable angelegt würde, welche sich dann auslesen liese :)

Zitat:

Zitat von Amateurprofi
Das gäbe dann aber Konflikte. Stell Dir vor da ist eine Variable mit dem Name xe8 oder b111. wie sollen dann xe8 und b111 ausgewertet werden ? Als Hex- und Binärzahl oder als Name einer Variablen ?

joar, ok ... das ist ein guter Grund ... OK, man könnte zwar auch "bestimmte" Variablennamen einfach verbieten :nerd:
(einige Namen, wie z.B. die ganzen Funktionsnamen sind ja vermutlich auch schon gesperrt)

mein Gedanke war halt nur, daß es für mich so verständlicher wäre :angel2:

Zitat:

Zitat von Amateurprofi
Ja, aber das übersteigt meine Fähigkeiten bei weitem (bin halt nur ein amateurprofi).

macht mix, der Eine kann das gut und andere was Anderes ... wozu sind wir ein Forum ... laß einfach andere das erledigen :mrgreen:
z.B. AutoComplete für TMemo, TRichEdit uvm.

[edit]
wenn ich es mir Recht überleg, dann sollte sich die AutoComplete-Klasse auch so erweitern lassen, daß im Popup auch noch die Funktionsparameter mit angezeigt werden könnten, so als kleine Hilfestellung.

fLaSh11 1. Jun 2009 17:12

Re: Rechenprogramm
 
Was ich noch gerne hätte :D wäre, dass man die Speicherung der Rechnungen abschalten kann (oder gibt's das Feature schon?), weil das benötige ich nicht :mrgreen:

Jakob Ullmann 1. Jun 2009 18:13

Re: Rechenprogramm
 
Wirklich gute Arbeit!

Ich bastle nämlich auch gerade an einem Rechner. Da hab ich noch sowas wie sum(n;0;20;1/fac(n)) oder halt prod(...) eingebaut. Nur so als Anregung. ;-)

Amateurprofi 2. Jun 2009 13:40

Re: Rechenprogramm
 
Zitat:

Zitat von Jakob Ullmann
Wirklich gute Arbeit!

Ich bastle nämlich auch gerade an einem Rechner. Da hab ich noch sowas wie sum(n;0;20;1/fac(n)) oder halt prod(...) eingebaut. Nur so als Anregung. ;-)

Danke, aber solche Funktionen die Listen von Werten verarbeiten, sind bereits Teil des Programms
Min(Liste) Minimum
Max(Liste) Maximum
Sum(Liste) Summe
Avg(Liste) Mittelwert
Mul(Liste) Produkt
QSum(Liste) Summe von Quadraten
LCD(Liste) Größter gemeinsamer Teiler
SCM(Liste) Kleinstes gemeinsames Vielfaches
In allen Fällen kann die Liste beliebig viele Einträge haben, und jeder Eintrag kann ein beliebig komplexer Ausdruck sein.

Amateurprofi 2. Jun 2009 19:17

Re: Rechenprogramm
 
Zitat:

Zitat von fLaSh11
Was ich noch gerne hätte :D wäre, dass man die Speicherung der Rechnungen abschalten kann (oder gibt's das Feature schon?), weil das benötige ich nicht :mrgreen:

Ist in der aktuellen Version nicht vorgesehen.
Da du die Texte mit einem einzigen Tastendruck löschen kannst, scheint mir das auch nicht problematisch zu sein.

Jakob Ullmann 2. Jun 2009 19:37

Re: Rechenprogramm
 
Zitat:

Zitat von Amateurprofi
Zitat:

Zitat von Jakob Ullmann
Wirklich gute Arbeit!

Ich bastle nämlich auch gerade an einem Rechner. Da hab ich noch sowas wie sum(n;0;20;1/fac(n)) oder halt prod(...) eingebaut. Nur so als Anregung. ;-)

Danke, aber solche Funktionen die Listen von Werten verarbeiten, sind bereits Teil des Programms
Min(Liste) Minimum
Max(Liste) Maximum
Sum(Liste) Summe
Avg(Liste) Mittelwert
Mul(Liste) Produkt
QSum(Liste) Summe von Quadraten
LCD(Liste) Größter gemeinsamer Teiler
SCM(Liste) Kleinstes gemeinsames Vielfaches
In allen Fällen kann die Liste beliebig viele Einträge haben, und jeder Eintrag kann ein beliebig komplexer Ausdruck sein.

Damit hatte ich eigentlich sowas wie das mathematische Summationszeichen gemeint. Zum Beispiel, um die eulersche Zahl zu nähern. Ist aber vielleicht nur bedingt brauchbar. :wink:

kroimon 2. Jun 2009 21:03

Re: Rechenprogramm
 
Wow wirklich geniales Tool, könnte unter Umständen sogar den sonst von mir verwendeten Google Calculator ersetzen ;-)
Wenns jetzt noch Open Source wäre - hehe... 8)

Zitat:

Zitat von Amateurprofi
Zitat:

Zitat von himitsu
Ich hab jetzt nicht sowas gefunden, aber zu dem Zwischenergebnis, da wäre es noch schön, wenn man einfach sagen könnte "hier Ergebnis aus Zeile X".?

Das hatte ich bereits implementiert, dann aber wieder rausgenommen.
Der Grund ist, daß der Teil, der die Ausdrücke auswertet keinerlei Zugriff auf das Hauptprogramm hat, bzw. nicht haben soll, weil er auch für andere Anwendungen verwendbar sein soll.

Das könntest du doch über ein Callback lösen, das unbekannte Variablen/Funktionen von der GUI holt... Damit könntest du sowohl Ans als auch Ans(x) [x = Zeilennummer] realisieren...
So macht das mein eigener (viiiel schlichterer) TMathParser...


Edit:
Zitat:

Zitat von Jakob Ullmann
[OT] [size] funktioniert nicht mit allen Größen, hehe. :mrgreen: [/OT]

Hehe... und die Vorschau gibts nich umsonst :oops: Fixed...

Jakob Ullmann 2. Jun 2009 21:28

Re: Rechenprogramm
 
[OT] [size] funktioniert nicht mit allen Größen, hehe. :mrgreen: [/OT]

Corpsman 3. Jun 2009 07:15

Re: Rechenprogramm
 
so nach einer gewissen Zeit hab ich mir den Thread noch mal angeschaut, dachte evtl gibts schon ne neue version.

Also hab ich dein Progrämchen gestartet um die Aktuelle Versionsnummer zu suchen, auf das ich sie dann vergleichen kann.

Nur ist diese nicht auffindbar gewesen ...

Kann es sein das du vergessen hast deinem Programm eine Versionsnummer zu verpassen ?


Und dann hab ich noch versucht Komplexe Zahlen zu testen, die gibt es anscheinend leider auch nicht, oder ich hab sie nur falshc geschrieben ?

also etwas der Form

5+ 4*i

Amateurprofi 3. Jun 2009 08:17

Re: Rechenprogramm
 
Zitat:

Zitat von Jakob Ullmann
[OT] [size] funktioniert nicht mit allen Größen, hehe. :mrgreen: [/OT]

Verstehe nicht, was du meinst. Könntest du bitte bitte etwas ausführlicher beschreiben, was nicht funktioniert ? Danke.

Amateurprofi 3. Jun 2009 08:26

Re: Rechenprogramm
 
Zitat:

Zitat von Corpsman
Also hab ich dein Progrämchen gestartet um die Aktuelle Versionsnummer zu suchen, auf das ich sie dann vergleichen kann.
Nur ist diese nicht auffindbar gewesen ...
Kann es sein das du vergessen hast deinem Programm eine Versionsnummer zu verpassen ?

Nein, das hab ich nicht vergessen, sondern ganz bewußt nicht gemacht. Brauch ich nicht, weil : Ich habe immer nur eine Version - die neueste.
Und die neueste Version hab ich noch nicht in die DP gestellt, weil ich auf Antwort vom Moderator warte, wie ich es anstellen kann, daß die neue Version im ersten Beitrag erscheint.

Zitat:

Zitat von Corpsman
Und dann hab ich noch versucht Komplexe Zahlen zu testen, die gibt es anscheinend leider auch nicht, oder ich hab sie nur falshc geschrieben ?
also etwas der Form 5+ 4*i

Komplex Zahlen werden nicht unterstützt.

mkinzler 3. Jun 2009 08:56

Re: Rechenprogramm
 
Zitat:

Und die neueste Version hab ich noch nicht in die DP gestellt, weil ich auf Antwort vom Moderator warte, wie ich es anstellen kann, daß die neue Version im ersten Beitrag erscheint.
Im Bereich Freeware kann der TE seinen ersten Beitrag auch nach mehr als 24 Stunden editieren. Du kannst die Version dort also problemlos austauschen.

Amateurprofi 3. Jun 2009 11:42

Re: Rechenprogramm
 
Ich habe eine neue Version des Programms in den ersten Beitrag dieses Threads gestellt.
@mkinzler : Danke für die Info, wie das geht.

Was ist neu?:

himitsu: Zeilennumerierung beginnt jetzt mit 1 (vorher 0).
coprsman: Linksbündige Ausgabe jetzt möglich.
Menu>Optionen>Ansicht>Ergebnissse linksbündig.

matze: Auf vorige Zeile zugreifen funktioniert jetzt.
himitsu: Auf alle vorherigen zugreifen funktioniert jetzt.
@ holt das Ergebnis der vorigen Zeile.
@x holt das Ergebnis von Zeile x, wobei x eine Zeile vor der aktuellen Zeile sein muß.
@-x holt das Ergebnis von Zeile (aktuelle Zeile - x), wobei (aktuelle Zeile - x) > 0 sein muß.
x steht hierbei für eine Ziffer bzw. eine Folge von Ziffern.

himitsu: Zahlen mit einer Basis 2 bis 36 können jetzt wie von dir vorgeschlagen aussehen.
bisher #8#123 (Basis 8, Zahl = 123)
jetzt auch 8#123
Prinzip : Wenn an einer Stelle, an der von der Syntax her eine Zahl stehen könnte
eine Integerzahl im Bereich 2 bis 36 steht, und direkt dahinter ein "#" steht,
dann wird diese Zahl als Basis angesehen und der hinter dem "#" stehende Teil als
Zahl mit dieser Basis aufgefaßt.
Steht vor einem "#" eine Zahl, die nicht integer, oder < 2 oder > 36 ist, dann
erwartet das Program die alte Schreibweise, also hinter dem '#' die Basis,
gefolgt von einem "#", dem die eigentliche Zahl folgt.

sLaSh11: Es kann jetzt festgelegt werden, ob der Inhalt des Eingabefensters beim Programmende
gespeichert wird, oder nicht. Für Variablen und ggfs. vom Anwender veränderte Prioritäten
der Rechenoperatoren gilt das Gleiche.
Menu > Optionen > Einstellungen

Corpsman 15. Jun 2009 10:38

Re: Rechenprogramm
 
Dein Parser Rechnet Falsch :(

(((5^16) mod 47)^9) mod 47 = 21
(((5^9) mod 47)^16) mod 47 = 0

behauptet dein Parser,

Laut Google ist das aber = 34, beides mal ...

kroimon 15. Jun 2009 10:46

Re: Rechenprogramm
 
Zitat:

Zitat von Corpsman
(((5^16) mod 47)^9) mod 47 = 21

Laut Google ist [google](((5^16) mod 47)^9) mod 47[/google] = 21

Zitat:

Zitat von Corpsman
(((5^9) mod 47)^16) mod 47 = 0

und [google](((5^9) mod 47)^16) mod 47[/google] rechnet Google (und wohl auch der Rechner hier) dank zu großer Zahlen (40^16) gar nicht.

Edit: Aber Wolfram|Alpha tut es und kommt auf 21!

Zitat:

Zitat von Corpsman
Laut Google ist das aber = 34, beides mal ...

:?:

himitsu 15. Jun 2009 10:52

Re: Rechenprogramm
 
hmmm, hab's grad mal damit versucht und da kommt das raus

(((5 ^ 16) mod 47) ^ 9) mod 47
((152.587.890.625 mod 47) ^ 9) mod 47
(17 ^ 9) mod 47
118.587.876.497 mod 47
= 21

(((5^9) mod 47) ^ 16) mod 47
((1.953.125 mod 47) ^ 16) mod 47
(40 ^ 16) mod 47
42.949.672.960.000.000.000.000.000 mod 47
= 21

[edit]
zu langsam ... ich brauch wohl auch noch 'nen Matheparser dazu :shock:

Corpsman 15. Jun 2009 10:54

Re: Rechenprogramm
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier kannst den Screeny sehen,

warum google bei mir was anderes gerechnet hat, kann ich nu leider auch nicht mehr nachvollziehen.

Jup es mus auch beides mal das Gleiche rauskommen, Pyton sagt das auch.

EVTL sollte man da anzeigen das zwischenergebnisse einen Überlauf erzeugten ..

himitsu 15. Jun 2009 11:00

Re: Rechenprogramm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von krassonkel
Edit: Aber Wolfram|Alpha tut es und kommt auf 21!

ist dir aufgefallen, daß Wolfram es falsch parst?

Corpsman 15. Jun 2009 11:05

Re: Rechenprogramm
 
es wird immer obskurer

(35 * ( 21 ^ ( 47 - 1 - 16 ) ) ) mod 47 = 9.4447E+0021

und das das Falsch ist sieht man sofort, wo doch nur eine Zahl im Bereich [0..46 ] rauskommen darf ...

kroimon 15. Jun 2009 11:05

Re: Rechenprogramm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu
ist dir aufgefallen, daß Wolfram es falsch parst?

Die Darstellung ist falsch, das Parsing richtig, das Ergebnis stimmt.
Mit einem Klick auf "Mathematica form" bekommt man es auch richtig geparst angezeigt (siehe Screenshot).


Edit:
Zitat:

Zitat von Corpsman
es wird immer obskurer
(35 * ( 21 ^ ( 47 - 1 - 16 ) ) ) mod 47 = 9.4447E+0021
und das das Falsch ist sieht man sofort, wo doch nur eine Zahl im Bereich [0..46 ] rauskommen darf ...

Und rauskommen sollte 26...
Auch hier ist 21^30 definitiv zu groß :-)

Corpsman 15. Jun 2009 11:12

Re: Rechenprogramm
 
Mir scheint das der Rechner die Teilergebnisse schon rausbringt,

nur der Mod operator hat eine extrem kleine obergrenze ...

himitsu 15. Jun 2009 11:19

Re: Rechenprogramm
 
zum Glück hat meine neue Lib kein Überlaufproblem ... sie kennt nur OutOfMemory und zu lange Berechnungszeiten :mrgreen:

[add]
also der Mathematica-Plaintext von 21^(47-1-16) ist für mich sehr verwirrend 21^47 - 1 - 16

wie kommt man denn bitte auf solche Namen? :shock:
4 duodecillion, 640 undecillion, 650 decillion, 289 nonillion, 117 octillion, 164 septillion, 100 sextillion, 520 quintillion, 51 quadrillion, 333 trillion, 566 billion, 36 million, 654 thousand and 601

und nein, es ist mehr eine rethorische Frage, obwohl ich grad in Wiki etwas durchdreh, da ich da keine einheitlichen Namen vorfinde, um eventuell selber soeine Konvertierung von Zahlen vorzunehmen[/add]





Nja, hier sollte mindestens eine Fehlerbehandlung für Überläufe eingebaut werden.

Amateurprofi 20. Jun 2009 19:13

Re: Rechenprogramm
 
Zitat:

Zitat von Corpsman
Dein Parser Rechnet Falsch :(

(((5^16) mod 47)^9) mod 47 = 21
(((5^9) mod 47)^16) mod 47 = 0

behauptet dein Parser,

Laut Google ist das aber = 34, beides mal ...

Hallo Corpsman,
ich war im Urlaub, dahei eine verspätete Antwort:

beide von dir genannten Rechnungen sollten 21 ergeben.
Daß mein Parser für die zweite Rechnung 0 als Resultat nennt, liegt, wie von krassonkel schon vermutet, an den hohen Zwischenergebnissen.
Der Parser arbeitet intern mit Extended-Zahlen und 40^16 / 47 läßt sich damit nicht exakt darstellen.

Aber : Warum verwendest du nicht die Funktion ExpMod ?

expmod(expmod(5,16,47),9,47) ergibt 21
expmod(expmod(5,9,47),16,47) ergibt 21

Ich hab übrigens das gesamte Innenleben des Parsers überarbeitet - er ist jetzt etwa 25 % schneller.
Außerdem möchte ich den Teil des Programmes der für die Auswertung von Ausdrücken zuständig ist, in Form von .dcu Dateien zur Verfügung stellen. Die können dann in eigene Programme eingebunden werden.
Aber ich werde noch einige Zeit brauchen um Fehler zu finden und zu beseitigen.

Amateurprofi 20. Jun 2009 19:49

Re: Rechenprogramm
 
Zitat:

Zitat von Corpsman
Mir scheint das der Rechner die Teilergebnisse schon rausbringt,

nur der Mod operator hat eine extrem kleine obergrenze ...

Das hängt davon ab, was du unter "extrem klein" verstehst.

Ich zum Beispiel bin 184 cm groß und empfinde mich nicht als exterm klein.

Die von dir gezeigte Teilrechnung (35 * ( 21 ^ ( 47 - 1 - 16 ) ) ) ergibt
162422760119100743518201796674811282911232
und ist ca. 883 Sextillionen mal so groß wie ich - und das empfindest du als "extrem klein" ?

Aber trotzdem danke für die Beispiele.
Sie zeigen, daß ich noch viel mehr Prüfungen einbauen muß, ob die eingegebenen Zahlen exakt verarbeitet werden können und daß es Fehlermeldungen hageln muß, wenn das nicht der Fall ist.

kroimon 20. Jun 2009 22:18

Re: Rechenprogramm
 
Zitat:

Zitat von Amateurprofi
Aber trotzdem danke für die Beispiele.
Sie zeigen, daß ich noch viel mehr Prüfungen einbauen muß, ob die eingegebenen Zahlen exakt verarbeitet werden können und daß es Fehlermeldungen hageln muß, wenn das nicht der Fall ist.

Oder du arbeitest, wie andere Libraries auch, mit unbegrenzten BigNumbers, die lediglich durch die Größe des RAM beschränkt werden ;-)

Amateurprofi 21. Jun 2009 11:14

Re: Rechenprogramm
 
Zitat:

Zitat von "krassonkel
Oder du arbeitest, wie andere Libraries auch, mit unbegrenzten BigNumbers, die lediglich durch die Größe des RAM beschränkt werden ;-)

Nein, das ist für dieses Programm keine Alternative. Dafür hab ich andere Programme, die mit (in der Theorie) unbegrenzt langen Realzahlen arbeiten.
Vielleicht ist es noch nicht bemerkt worden: Dieses Programm wertet nicht nur einen einzigen Ausdruck dann aus, wenn der Anwender nach Eingabe des Ausdruckes die Entertaste drückt, sondern alle Ausdrücke im Eingabefeld immer dann, wenn irgendeine Veränderung im Eingabefeld stattfindet.
Natürlich soll der Anwender auch dann flüssig tippen können wenn viele Ausdrücke auszuwerten sind.
Und genau diese (für mich) wichtige Eigenschaft ginge verloren, wenn ich mit solchen Zahlen arbeiten würde.
Das Problem ist bei diesen Zahlen weniger das Rechnen, sondern die Ausgabe der Ergebnisse; ich glaube himitsu hat damit schon seine Erfahrungen gemacht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.
Seite 1 von 3  1 23   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz