Kleiner Taschenrechner

    • Beta
    • Closed Source

    Es gibt 56 Antworten in diesem Thema. Der letzte Beitrag () ist von MircoTuor.

      Kleiner Taschenrechner

      Hatte letzte Zeit versucht einen Parser für einen Taschenrechner zu schreiben und wollte euch den deshalb mal vorstellen.

      Beschreibung:

      Der Taschenrechner hat derzeit einige Funktionen:
      -Sinus
      - Arkus Sinus
      -Cosinus
      - Arkus Cosinus
      -Tangens
      -Arkus Tangens
      -Fakultät
      -Logharitmus
      -Wurzel
      -eigene Funktionen
      -Modulo
      -ANS
      -Exponentialfunktion
      -Wechsel zwischen Gradmaß und Bogenmaß
      -PI und E Konstanten
      -Klammerhervorhebung
      -Funktionsgraphen zeichnen lassen (skalieren/zoomen/beim graphen punkte neu berechnen/graph aktualisieren möglich)
      -Rechenschritte werden ausführlich angezeigt

      und die Grundrechenarten (+,-,/,*) + ^

      Es werden die einzelnen Rechenschritte angezeigt (also man kann sich dann anschauen, wie der Taschenrechner arbeitet).
      Auserdem wird bei der Eingabe auf die Klammern geachtet, sodass man nicht immer zählen muss wieviele schliessende Klammern man noch benötigt - diese werden automatisch ergänzt.
      Es ist auch möglich bei dem Funktionsgraphen mit Linksklicks drücken herumzuschieben und mit dem Mausrad zu zoomen.

      Ausdrücke wie:
      (22*sin(sqrt(31^-(-+1*3)/5!)/88-23))/123
      oder
      sqrt(6 * 2^-(3! mod (4! mod 5!)) * 11 / (8,5-3,5)^2)
      sind kein Problem.

      Screenshot:
      Taschenrechner:


      Funktionsgraph:


      Verwendete Programmiersprache:

      Visual Basic .NET

      Systemanforderungen:

      .NET Framework 3.5

      Download:

      Im Anhang
      Dateien
      • VCalculator.zip

        (46,35 kB, 204 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 44 mal editiert, zuletzt von „RushDen“ ()

      Einfügen von Text weiterhin möglich.
      Also Shortcuts.Enabled = False setzen.

      Bei zu großen Zahlen hängt er sich auf, das solltest Du beheben.
      Die Ergebnisse für Sinus und Kosinus sind btw alle falsch. Da stimmt was mit der Formel nicht.
      Beispiel: cos(8) = 0,412118485241757, ist aber eigentlich 0,1564... Bei gleichen Angaben à la 45 Grad müssten Sinus und Cosinus eigentlich gleich sein, also sin(45) = cos(45), aber da kommt was anderes raus.
      Zudem vermisse ich die Funktion cos^-1(Angabe), ​sin^-1(Angabe) etc., dann tan und cot. Ansonsten wäre es ganz ok.
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      @RushDen Kann nicht sein, alleine von der Logik her. Wie gesagt, bei 45 Grad müssen ​sind und ​cos gleich sein. Und mein Taschenrechner lügt nicht ;)
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Teste einfach die neueste Version, kann sein dass beim ersten falsch war.

      Gib mal sin(45) und cos(45) bei google ein, der gibt auch 2 verschiedene Werte wieder.

      € Das liegt vermutlich an dem Modus Radient und degree, die beeinflussen das iwie

      @faxe1008
      Finde das ja nicht, die Dateianhänge akzeptieren keine exe dateien.

      Hm, also Log funzt, aber das andere ist immer noch nicht richtig.
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Hm, ginge das nicht auch anders? :D
      Wäre halt vorteilhafter, wenn die Berechnung so ist, wie ich es gewohnt bin, so wie beim Taschenrechner.
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Ah damn, habs bei meinem Taschenrechner auch oben so eingestellt, also jo, mach das doch wählbar.
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      OOP bedeutet nicht, so viele Klassen wie möglich reinzuquetschen, sondern genau so viele, wie für die Architektur notwendig sind. Bei nem Parser wäre das eigentlich nur der Parser selbst (statisch) und ne Expression-Klasse (oder wie dus auch immer nennen willst).
      Man sollte sich die Architektur übrigens überlegen, bevor man irgend welchen Code schreibt.
      Hab nun einige Sachen verbessert
      -Es ist nun egal wieviele Vorzeichen vor einer Zahl ist, bspweise:
      92394--+-++28834-+1-234+-123+4-2
      funktioniert nun auch
      oder Ausdrücke wie: 1,512,6345,293 + 5,2,3134.1234
      funktionieren auch. Die werden dann implizit zu:
      1,5126345293 + 5,231341234

      -Winkel und Bogenmaß hinzugefügt
      -Einige Rechenfehler behoben
      und man kann nicht mehr einfach so Text einfügen.


      Hab jetzt noch Modulo hinzugefügt und das Design etwas verändert.

      Tangens hinzugefügt und einige Rechenfehler behoben.
      Dazu ist jetzt sowas:
      18(93)-(3-2)4
      möglich, das wird dann zu:
      18*93-1*4.

      Edit by Manschula: 3 Beiträge zusammengefügt

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Manschula“ ()