| Autor |
Beitrag |
Tilo
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: 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
      
Beiträge: 26
Win XP, Win 2003 Server
D7 Pers
|
Verfasst: 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
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: So 27.03.05 15:36
Cooles Programm!  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
      
Beiträge: 20
|
Verfasst: So 27.03.05 15:41
delfiphan hat folgendes geschrieben: |
6.) -2^2 müsste -4 ergeben |
Müsste es nicht
Rechne mal auf einem Taschenrechner folgendes: (-2)^2 kommt heraus 4
mfg
schuetz10
|
|
Kroni
      
Beiträge: 720
Win 98, Win ME, Win2k, Win XP
D3 Pro
|
Verfasst: 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
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: 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
      
Beiträge: 20
|
Verfasst: So 27.03.05 15:50
Oh, da habe ich wohl was verwechselt 
|
|
Kroni
      
Beiträge: 720
Win 98, Win ME, Win2k, Win XP
D3 Pro
|
Verfasst: So 27.03.05 16:13
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 
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: So 27.03.05 21:36
@SandTarnFarbe
Die Winkelfunktionen und Logarithmen werden durch die Funktion mystrtofloat abgefangen:
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,1) except raise eemptynumber.Create('Fehler, Leere Zahl'); end;
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; 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 raziel: Code- durch Delphi-Tags ersetzt.
|
|
thebe
      
Beiträge: 128
WinXP Home
D6 Enterprise
|
Verfasst: 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
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Mo 28.03.05 14:58
thebe 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
      
Beiträge: 128
WinXP Home
D6 Enterprise
|
Verfasst: 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
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Mo 28.03.05 15:27
thebe 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  ? ^ hat höhere Priorität als -, daher sollten alle deine Taschenrechner -x^2 als -(x^2) interpretieren und nicht als (-x)^2
AXMD
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Mo 28.03.05 15:28
thebe 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
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mo 28.03.05 18:24
| Zitat: |
und da potzenzen nen höehren wert als punktrechnung hat gilt:
|
potenzen sind punktrechnung !  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 ? 
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: Mo 28.03.05 18:35
F34r0fTh3D4rk hat folgendes geschrieben: | | Zitat: |
und da potzenzen nen höehren wert als punktrechnung hat gilt:
|
potenzen sind punktrechnung ! 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 ?  |
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
      
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Mo 28.03.05 18:36
ich habe -2 * -2 eingegeben
ich glaube kroni hat das so verstanden
-(2^2)
das wäre -4
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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mo 28.03.05 19:07
AXMD 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... 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
wulfskin
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: 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  !
Gruß hApe!
_________________ Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
|
|
Tilo 
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: 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.
|
|
|