Taschenrechnr mit Typescript erstellen?

2 Antworten

Genauso, wie die Grundrechenarten. Musst entsprechend weitere Buttons einbauen, womit die Rechenfunktionen ausgelöst werden können.

Rechteckumfang:
res = 2*a + 2*b;

Potentieren:
res = Math.pow(a,b);

Fakultät:
das ist eine Abteilung in einer Hochschule. Was willst du daran berechnen?? oO

Modulo:
res = a % b;

bin->dec:
res = parseInt(a.toString(10), 2);

dec->bin:
res = parseInt(a.toString(2), 10);

Nicht vergessen: Bevor gerechnet wird, die Eingabewerte auf Gültigkeit prüfen (es darf nicht durch 0 geteilt werden usw.).

Woher ich das weiß:Hobby

sibel96785 
Fragesteller
 16.06.2019, 13:55

hey danke!! wie soll ich aber a und b einzeln eintragen ? Ich habe in meinem Taschenrechner nur eine Eingabeleiste.

0
Franky12345678  17.06.2019, 01:20
@sibel96785

Dann baue eine zweite Leiste ein.

Ein Taschenrechner, der einen Rechteckumfang (oder eine sonstige fertige Formel) berechnet, ist kein Taschenrechner im klassischen Sinne mehr.

0

Bevor ich auf deine konkrete Frage eingehe, möchte ich dich darauf aufmerksam machen, dass du zum einen Attribute verwendest, die längst als deprecated gekennzeichet wurden (border, bgcolor, cellpadding). Du solltest stattdessen mit CSS arbeiten (border, background-color, ...).

Des Weiteren sind Tabellen dazu gedacht, sich zueinander verhaltende Werte vergleichend als Übersicht gegenüberzustellen. Das ist bei dir nicht der Fall, du missbrauchst die Tabelle eher zum Layouting. Positioniere deine Elemente stattdessen via CSS, bspw. mit dem neuen Grid-Layout.

Bezüglich der neuen Anforderungen:

Ich denke, du wirst dir für Flächeninhalt und Umfang erst Gedanken machen müssen, wie die Eingabe über das User Interface denn aussehen soll. Wie kann der Nutzer seine Werte so eingeben, sodass es intuitiv ist?

Die Berechnungen selbst, sind nicht schwierig. Die Formeln für Flächeninhalt und Umfang lassen sich schnell nachschlagen und fordern letzten Endes auch nur die Grundrechenarten, die du bereits implementiert hast. Für Modulo gibt es bereits einen eigenen Operator (%), für das Potenzieren eine eigene Funktion.

Bezüglich der Fakultät solltest du dir den Vorgang bei einer Berechnung genau anschauen.

Ein Beispiel:

5! = 1 * 2 * 3 * 4 * 5 = 120

Wie schnell auffällt, werden die Werte, beginnend bei 1 hochgezählt und miteinander multipliziert. Du kannst hier für das Hochzählen eine Zählschleife einsetzen.

Zuletzt bleibt nur noch die Umrechnung von Dezimalzahl in eine Darstellung im Dualsystem. Auch hier gilt wieder, sich erst einmal mit dem Verfahren vertraut zu machen. Daraus kannst du dir einen Algorithmus bilden.


sibel96785 
Fragesteller
 13.06.2019, 11:40

vielen dank für die Antwort sehr hilfreich:)) ich weiss wie die einzeln formeln aussehen, jedoch war ich mir nicht sicher wie ich es einfügen soll damit es funktioniert. Das hat bei mir nicht geklappt

0
regex9  13.06.2019, 18:20
@sibel96785

Da müsstest du genauer werden. Ich weiß nicht, was du konkret geschrieben hast, sodass es nicht geklappt hat.

0
sibel96785 
Fragesteller
 16.06.2019, 13:53
@regex9
hey sorry für die späte Antwrt. ich war krank.. arbeite gerade weiter dran und hab den Flächeninhalt und Umfang geschafft. (Kreis)
if (Funktion == "FlächeninhaltK")
{
    var x = 0;
    x = eval(window.document.Rechner.Display.value);
    window.document.Rechner.Display.value = 3.14 * x²;
}
if (Funktion == "UmfangK") {
    var x = 0;
    x = eval(window.document.Rechner.Display.value);
    window.document.Rechner.Display.value = 2 * 3.14 * x;
}

also es funktioniert so.
Wie aber soll ich es zum Beispiel bei der eulerscen Zahl machen? oder bei der fakultät? Ich kenne die Formeln dazu. 
0
regex9  16.06.2019, 14:53
@sibel96785

Zuerst eine Anmerkung zu deinem Code:

x = eval(window.document.Rechner.Display.value);

Mache das nicht so. Zum einen erfordert die eval-Methode mehr Rechenleistung als notwendig (es wird extra der JS-Interpreter dafür aufgerufen) und zum anderen bietest du dem Nutzer eine Möglichkeit, deine Anwendung zu manipulieren. Wenn man in das Eingabefeld JavaScript-Code hineinschreibt (z.B. ein

alert("hello")

) würde dies ebenso ausgeführt werden.

Um den Feldwert in eine Zahl umzuwandeln, gibt es folgende Funktionen in JavaScript:

Bezüglich Fakultät und eulerscher Zahl:

Wenn du dir die unterschiedliche Berechnungen der Fakultät anschaust, sollte dir etwas auffallen:

5! = 1 * 2 * 3 * 4 * 5
3! = 1 * 2 * 3
7! = 1 * 2 * 3 * 4 * 5 * 6 * 7 

Im Prinzip werden nur die Zahlen von 1 bis n hochgezählt und miteinander multipliziert. Dynamisch Hochzählen lässt sich per Schleife.

Für die eulersche Zahl gibt es bereits eine Konstante. Bei deiner Aufgabe geht es sicherlich um die Annäherung an die eulersche Zahl. Einmal wieder gibt die Formel Aufschluss über das Vorgehen.

(1 / 0!) + (1 / 1!) + (1 / 2!) + (1 / 3!) + ...

Schreibe dir die Formel mit Brüchen auf, ich habe hier leider nicht die Möglichkeit.

Erneut werden Zahlen hochgezählt, diesmal beginnend bei 0. Die Fakultät jeder Zahl wird als Divisor für die 1 gesetzt und zu einer Summe aufaddiert.

0