Autor Beitrag
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: So 27.03.05 12:12 
Diesen Rechner habe ich erstellt, weil ich es hasse, wenn cih im WIndoofrechner ein Fehler hatte und die ganze Gleichung nochmal eingeben muss.
Dieser Rechner rechnet erst los, wenn der Anwender auf "=" drückt.

Ist noch nicht ausgereift.
Ich hoffe ich habe alle Bugs entdeckt und beseitigt.
der Link
(selbstentpackendes zip-Archiv)

Update


Im Archiv sind alle Dateien enthalten


Zuletzt bearbeitet von Tilo am Mo 28.03.05 20:49, insgesamt 1-mal bearbeitet
SandTarnFarbe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Win XP, Win 2003 Server
D7 Pers
BeitragVerfasst: So 27.03.05 12:26 
Respekt vor den Auswertungsregeln bzgl. Klammern, Punkt vor Strich etc. - kurze Frage: hast du sämtliche Prioritäten der einzelnen Funktionen abgefragt, habe nur für +,-,*,/,po,wu was gefunden, nur es könnte ja zu überschneidungen mit sin, cos etc. kommen!?
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 27.03.05 15:36 
Cooles Programm! 8) Hier noch einige Bugs und einige Schönheitsfehler (da ich selbst mal einen Parser geschrieben hab fällt mir das auf, z.T. sind es aber nur Details):

1.) Gleitkommazahlen funktionieren bei mir nicht (liegt wohl daran, dass ich keine Deutsche XP Installation hab. => Bei mir ist . das Dezimaltrennzeichen)
2.) Die Funktionen (z.B. sin(0)) werden nicht ausgewertet
3.) (1)1 ergibt 11
4.) Bei zu hohen Zahlen kommt die e-Notation (1e15), mit welcher der Taschenrechner aber nicht weiterrechnen kann
5.) Konstaten pi und e wären noch angenehm
6.) -2^2 müsste -4 ergeben
7.) -(-1) wird nicht erkannt
8.) 2^3^4 wird normalerweise als 2^(3^4) interpretiert (bei dir (2^3)^4)
schuetz10
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20



BeitragVerfasst: So 27.03.05 15:41 
user profile icondelfiphan hat folgendes geschrieben:

6.) -2^2 müsste -4 ergeben


Müsste es nicht :wink:
Rechne mal auf einem Taschenrechner folgendes: (-2)^2 kommt heraus 4

mfg
schuetz10
Kroni
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 720

Win 98, Win ME, Win2k, Win XP
D3 Pro
BeitragVerfasst: So 27.03.05 15:47 
-2^2 ist -4!
denn:
-2=-1*2
und da potzenzen nen höehren wert als punktrechnung hat gilt:
-1*2^2
also -4!
ist wirklcih so
(-2)^2 ist 4 ;-) denn da ist ja -2*(-2)=4
ansonsten konnte ich keine Komplette Löschtaste finden!
aber sonst, das Layout könnte etwas übersichtlicher sein....aber sonst ganz gut
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 27.03.05 15:49 
@schuetz10: Das ist eine Frage der Notation. Meiner Meinung nach ist der Graph der Funktion f(x) = -x^2 eine nach unten geöffnete Parabel.

Wenn du ein Polynom aufschreibst setztst du nicht ständig Klammern, right?
-x^2+x-1 = -(x^2)+x-1


Zuletzt bearbeitet von delfiphan am So 27.03.05 15:50, insgesamt 1-mal bearbeitet
schuetz10
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 20



BeitragVerfasst: So 27.03.05 15:50 
Oh, da habe ich wohl was verwechselt :oops:
Kroni
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 720

Win 98, Win ME, Win2k, Win XP
D3 Pro
BeitragVerfasst: So 27.03.05 16:13 
ausblenden Quelltext
1:
f(x) = -x^2 eine nach unten geöffnete Parabel.					

das ist auch mathematisch so vollkommen richtig, da bei jedem y wert von x² den selben betrag hat wie von -x², eben nur mit dem umgekerten vorzeichen => x-achsen symetrisch
also....nach unten geöffnete normalparabel
(da erst x² und dann das ganze *(-1))
Tilo Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: So 27.03.05 21:36 
@SandTarnFarbe

Die Winkelfunktionen und Logarithmen werden durch die Funktion mystrtofloat abgefangen:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
function tcalculator.mystrtofloat(zahl:string):extended;
var
buffer1:string[3];
sinbuffer,cosbuffer,tanbuffer,cotbuffer,lgbuffer,lnbuffer:byte;
rbuf:byte;
firstob:(no,sin,cos,tan,cot,ln,lg);
begin

try buffer1:=midstr(zahl,1,1except raise eemptynumber.Create('Fehler, Leere Zahl'); end;

// Weclhe Operation zuerst?
sinbuffer:=pos('sin',zahl);
cosbuffer:=pos('cos',zahl);
tanbuffer:=pos('tan',zahl);
cotbuffer:=pos('cot',zahl);
lgbuffer:=pos('lg',zahl);
lnbuffer:=pos('ln',zahl);

firstob:=no;//fals keine existent ist

if sinbuffer>0 then firstob:=sin;
if cosbuffer>sinbuffer then firstob:=cos;
if tanbuffer>cosbuffer then firstob:=tan;
if cotbuffer>tanbuffer then firstob:=cot;
if lgbuffer>cotbuffer then firstob:=lg;
if lnbuffer>lgbuffer then firstob:=ln;

case firstob of
no:   result:=strtofloat(zahl);
sin:  begin
       rbuf:=pos('sin¯',zahl);
       if sinbuffer<rbuf then
       begin
        if sinbuffer=1 then
         result:=getsin(mystrtofloat(rightstr(zahl,length(zahl)-3)))
        else
         result:=strtofloat(leftstr(zahl,sinbuffer-1))*getsin(mystrtofloat(rightstr(zahl,length(zahl)-(2+sinbuffer))))
       end
       else
        if rbuf=1 then
         result:=getrsin(mystrtofloat(rightstr(zahl,length(zahl)-4)))
        else
         result:=strtofloat(leftstr(zahl,rbuf-1))*getrsin(mystrtofloat(rightstr(zahl,length(zahl)-(3+rbuf))))
      end;
cos:  begin
       rbuf:=pos('cos¯',zahl);
       if cosbuffer<rbuf then
       begin
        if cosbuffer=1 then
         result:=getcos(mystrtofloat(rightstr(zahl,length(zahl)-3)))
        else
         result:=strtofloat(leftstr(zahl,cosbuffer-1))*getcos(mystrtofloat(rightstr(zahl,length(zahl)-(2+cosbuffer))))
       end
       else
        if rbuf=1 then
         result:=getrcos(mystrtofloat(rightstr(zahl,length(zahl)-4)))
        else
         result:=strtofloat(leftstr(zahl,rbuf-1))*getrcos(mystrtofloat(rightstr(zahl,length(zahl)-(3+rbuf))))
      end;
tan: begin
       rbuf:=pos('tan¯',zahl);
       if tanbuffer<rbuf then
       begin
        if tanbuffer=1 then
         result:=gettan(mystrtofloat(rightstr(zahl,length(zahl)-3)))
        else
         result:=strtofloat(leftstr(zahl,tanbuffer-1))*gettan(mystrtofloat(rightstr(zahl,length(zahl)-(2+tanbuffer))))
       end
       else
        if rbuf=1 then
         result:=getrtan(mystrtofloat(rightstr(zahl,length(zahl)-4)))
        else
         result:=strtofloat(leftstr(zahl,rbuf-1))*getrtan(mystrtofloat(rightstr(zahl,length(zahl)-(3+rbuf))))
      end;
cot: begin
       rbuf:=pos('cot¯',zahl);
       if cotbuffer<rbuf then
       begin
        if cotbuffer=1 then
         result:=getcot(mystrtofloat(rightstr(zahl,length(zahl)-3)))
        else
         result:=strtofloat(leftstr(zahl,cotbuffer-1))*getcot(mystrtofloat(rightstr(zahl,length(zahl)-(2+cotbuffer))))
       end
       else
        if rbuf=1 then
         result:=getrcot(mystrtofloat(rightstr(zahl,length(zahl)-4)))
        else
         result:=strtofloat(leftstr(zahl,rbuf-1))*getrcot(mystrtofloat(rightstr(zahl,length(zahl)-(3+rbuf))))
      end;
ln:  begin
       if lnbuffer=1 then
        result:=getln(mystrtofloat(rightstr(zahl,length(zahl)-2)))
       else
        result:=strtofloat(leftstr(zahl,lnbuffer-1))*getln(mystrtofloat(rightstr(zahl,length(zahl)-(1+lnbuffer))))
      end;
lg:  begin
       if lgbuffer=1 then
        result:=getlg(mystrtofloat(rightstr(zahl,length(zahl)-2)))
       else
        result:=strtofloat(leftstr(zahl,lgbuffer-1))*getlg(mystrtofloat(rightstr(zahl,length(zahl)-(1+lgbuffer))))
      end;
end;

end;


Zusätzlich habe ich noch get(sin/cos..) Funktionen deklariert mit Rundung, da es sonst zu Fehlern kommen kann.


@delfiphan
Ich werde mich um die Bugs kümmern. der 4.bug deiner Liste geht schnell, habe vergessen "e" als gültiges Zeichen zuzu lassen.

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
thebe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP Home
D6 Enterprise
BeitragVerfasst: Mo 28.03.05 14:52 
Zitat:
2^2 ist -4!
denn:
-2=-1*2
und da potzenzen nen höehren wert als punktrechnung hat gilt:
-1*2^2
also -4!
ist wirklcih so
(-2)^2 ist 4 denn da ist ja -2*(-2)=4
ansonsten konnte ich keine Komplette Löschtaste finden!
aber sonst, das Layout könnte etwas übersichtlicher sein....aber sonst ganz gut


Nie hörte ich größeren Schwachfug.

Zitat:

-2^2 = (-1*2)^2 = -2^2
also 4!


Achte auf die Klammern, die hast Du in deinen Gedanken vergessen und somit aus einer Gleichung eine vollkommen andere gemacht. Du kannst nicht einfach aus einer Rechenoperation eine Zahl in mehrere Multiplikanten aufteilen und dann einfach einen davon aus der Potenzierung ausschließen, das ist keine Mathematik.

Zitat:
Wenn du ein Polynom aufschreibst setztst du nicht ständig Klammern, right?


Was ist denn DAS bitte für eine Mathematik ? Klammern sind ein MUSS und es kann nicht angehen das eine Gleichung zig verschiedene Ergebnisse haben kann weil alle möglichen Klammernkonstellationen die ihr mal einfach weglasst miteinkalkulieren muss.

-x^2+x-1 = (-1*x)^2+x-1 != (-1*(x^2))+x-1 = -(x^2)+x-1


Zuletzt bearbeitet von thebe am Mo 28.03.05 15:01, insgesamt 1-mal bearbeitet
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mo 28.03.05 14:58 
user profile iconthebe hat folgendes geschrieben:
Zitat:
2^2 ist -4!
denn:
-2=-1*2
und da potzenzen nen höehren wert als punktrechnung hat gilt:
-1*2^2
also -4!
ist wirklcih so
(-2)^2 ist 4 denn da ist ja -2*(-2)=4
ansonsten konnte ich keine Komplette Löschtaste finden!
aber sonst, das Layout könnte etwas übersichtlicher sein....aber sonst ganz gut


Nie hörte ich größeren Schwachfug.

Zitat:

-2^2 = (-1*2)^2 = -2^2
also 4!


Achte auf die Klammern, die hast Du in deinen Gedanken vergessen und somit aus einer Gleichung eine vollkommen andere gemacht. Du kannst nicht einfach aus einer Rechenoperation eine Zahl in mehrere Multiplikanten aufteilen und dann einfach einen davon aus der Potenzierung ausschließen, das ist keine Mathematik.


@thebe: Da hast du ihn wohl missverstanden. ^ hat höhere Priorität als -. Versuch mal, -2^2 in einen etwas besseren Taschenrechner einzugeben und er wird dir -4 ausspucken; ich hab drei Taschenrechner und alle drei liefern mir (wie erwartet) -4 ;). Wenn du minus zwei zum Quadrat nehmen willst, musst DU das minus zwei selbst in Klammern nehmen, da Klammern eine höhere Priorität haben als ^ ;)

AXMD
thebe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP Home
D6 Enterprise
BeitragVerfasst: Mo 28.03.05 15:10 
Dann frage ich Dich, wieso die Gleichung f(x)=x^2 für x aus R eine nach oben gerichtete Parabel ergibt, deren Scheitelpunkt beim Nullpunkt liegt. Etwa GANZ zufälligerweise weil für weil alle negativen x auch einen positiven Wert lieferen ? Klar hängt es an der Notation, nur die Klammern dürft ihr euch nicht dazudenken sondern müßt sie dazu schreiben. Wenn ihr f(x) = -(x^2) haben wollt, dann viel Spaß, aber schreibt es hin und erwartet nicht das andere Leute diesem Gedankengang folgen.

BTW AXMD, ich hab drei Taschenrechner hier, 2 wissenschaftliche und 1 wissenschaftlicher mit Gleichungsauflösung und die liefern mir alle 4 als Ergebnis für -x^2, weil sie selbstverständlich das Minus zum X assozieren, denn -x^2 = (-1*x)^2.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mo 28.03.05 15:27 
user profile iconthebe hat folgendes geschrieben:
Dann frage ich Dich, wieso die Gleichung f(x)=x^2 für x aus R eine nach oben gerichtete Parabel ergibt, deren Scheitelpunkt beim Nullpunkt liegt. Etwa GANZ zufälligerweise weil für weil alle negativen x auch einen positiven Wert lieferen ? Klar hängt es an der Notation, nur die Klammern dürft ihr euch nicht dazudenken sondern müßt sie dazu schreiben. Wenn ihr f(x) = -(x^2) haben wollt, dann viel Spaß, aber schreibt es hin und erwartet nicht das andere Leute diesem Gedankengang folgen.

BTW AXMD, ich hab drei Taschenrechner hier, 2 wissenschaftliche und 1 wissenschaftlicher mit Gleichungsauflösung und die liefern mir alle 4 als Ergebnis für -x^2, weil sie selbstverständlich das Minus zum X assozieren, denn -x^2 = (-1*x)^2.


Was hast du denn für Taschenrechner :shock: ? ^ hat höhere Priorität als -, daher sollten alle deine Taschenrechner -x^2 als -(x^2) interpretieren und nicht als (-x)^2

AXMD
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mo 28.03.05 15:28 
user profile iconthebe hat folgendes geschrieben:
Dann frage ich Dich, wieso die Gleichung f(x)=x^2 für x aus R eine nach oben gerichtete Parabel ergibt, deren Scheitelpunkt beim Nullpunkt liegt. Etwa GANZ zufälligerweise weil für weil alle negativen x auch einen positiven Wert lieferen ? Klar hängt es an der Notation, nur die Klammern dürft ihr euch nicht dazudenken sondern müßt sie dazu schreiben. Wenn ihr f(x) = -(x^2) haben wollt, dann viel Spaß, aber schreibt es hin und erwartet nicht das andere Leute diesem Gedankengang folgen.
Hallo Thebe,

die Funktion liegt deshalb im positiven Bereich, weil der Rechner automatisch eine Klammer um das X macht. Ansonsten wurde doch schon genannt, dass Potenzen vor Vorzeichen kommen und man deshalb Klammern setzen muss.

Achja, ich weiss ja nicht welchen Rechner du hast, aber meiner rechnet wie folgt: -2^2 = = -(2^2) = -4.

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 28.03.05 18:24 
Zitat:

und da potzenzen nen höehren wert als punktrechnung hat gilt:

potenzen sind punktrechnung ! :twisted: 2^2 = 2*2 <- also gleichwertig !


habs mit dem windoof rechner probiert, da kommt -4 raus

4 ist aber richtig, weil minus * minus = plus oder net ?

-2^2 = -2 * -2 = -(-1*(2*2)) = -(-1 * 4) = 1 * 4 = 4


wer hat jetzt recht, der rechner oder ich ? :D
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mo 28.03.05 18:35 
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
Zitat:

und da potzenzen nen höehren wert als punktrechnung hat gilt:

potenzen sind punktrechnung ! :twisted: 2^2 = 2*2 <- also gleichwertig !


habs mit dem windoof rechner probiert, da kommt -4 raus

4 ist aber richtig, weil minus * minus = plus oder net ?

-2^2 = -2 * -2 = -(-1*(2*2)) = -(-1 * 4) = 1 * 4 = 4


wer hat jetzt recht, der rechner oder ich ? :D
Na, mit dem Windowsrechner darfst du das nicht testen, da er ja nur Ausdrücke nacheinander errechnet und nicht an einem Stück. Also setzt er jedesmal eine Klammer um die Werte. Nimm mal eine normalen Taschenrechner wo du die ganze Rechnung eingeben kannst!

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mo 28.03.05 18:36 
ich habe -2 * -2 eingegeben :lol:

ich glaube kroni hat das so verstanden

-(2^2)

das wäre -4 :D

aber das - ist ja nur ein vorzeichen, wer sagt denn, das das -2 * -2 ist, und net -(2*2), wo steht das geschrieben ?

was ist denn jetzt korrekt und was ist -2^2 ?

ist es -(2^2) oder (-2)^2 ?

ich würde sagen zweiteres, weil:

beim potenzieren immer was positives rauskommt, wenn wir uns darauf einigen, dass die basis negativ ist, ist die lösung 4 ansonsten -4, aber das wäre nur der fall bei -(2^2) und das ist net -2 zum quadrat, sondern - (2 zum quadrat) !
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mo 28.03.05 19:07 
user profile iconAXMD hat folgendes geschrieben:
^ hat höhere Priorität als -.


Öööhhm.. nö. - ist ein Vorzeichen (in dem fall) was also zur zahl gehört. aber gut, ich bin nur ein armer 11.klässler, hab irgentwie (bei unserem schwachmaten von lehrer) gelernt, dass Vorzeichen irgentwie zur zahl gehören und desshalb mitgerechnet werden... folglich sollte -x^2=-(x^2) sein... :D

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mo 28.03.05 19:46 
Lassen wir die Diskussion. Probiert es einfach mit dem Taschenrechner aus. Ich glaub nicht, dass bei jedem etwas andere rauskommt :roll:!

Gruß hApe!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Tilo Threadstarter
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Mo 28.03.05 21:03 
Update

Mein Kommentar zur Pririotäten bei -2^2:
Es kommt drauf an, wie euer Taschenrechner zu bedienen ist.
Mathematisch korrekt ergibt die obere gleichung -4(fakt).
Ich nutze einen Sharp EL-531RH
Dieser hatt 2 Anzeigefelder: 1 Für die zahl und 1 für die gesamte Gleichung.
Gebe ich als Zahl "-2" ein und drücke dann x², so erscheint im oberen Feld (-2)^2, welches dann 4 ist. Fehlen die Klammern, oder das Minus ist vor den Klammern so kommt korrekterweise -4 als Ergebnis.


In der Hilfedatei habe ich einige Hinweise reingeschrieben(zb Verwendung des "E")

Die Bugs, die delfiphan aufgelistet hat müssten behoben sein, außer Nummer8.
Bei gleichen Pririotäten wird von Links nach rechts gerechnet. (2^3^4=4096, (2^3)^4=4096, 2^(3^4)=2^81 ca 2,4*1024)

@Kroni
es sind jetzt 2 Löschtasten vorhanden.