Saad (17.12.2011)
Thema: [C#] Taschenrechner-Konsole
-
17.12.2011, 01:16 #1
[C#] Taschenrechner-Konsole
Nabend, Saad hat mich gefragt ob ich ihm ein einfaches Beispiel für einen Taschenrechner als Konsolenanwendung schreiben kann.
Das habe ich gerade gemacht, vielleicht kann ja noch jemand diesen Code gebrauchen
Code:using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Taschenrechner { class Program { static void Main(string[] args) { // Taschenrechner-Konsole Beispiel für Saad //Der Konsole einen Titel zuweisen Console.Title = "Taschenrechner-Konsole für Saad"; //Dem Benutzer sagen, dass er die Rechenmethode wählen soll Console.WriteLine("Bitte wähle die Rechenmethode (+,-,*,/)"); //Die Rechenmethode auslesen und in einem String speichern string rechenmethode = Console.ReadLine(); //Nun erwarten wir von dem Benutzer der Eingaben der ersten Zahl Console.WriteLine("Bitte gib die erste Zahl an."); //Eingabe in einem String speichern string input = Console.ReadLine(); //und in einen Integer konvertieren //würde man Convert.ToInt64 benutzen, würde man die Zahl in einem Long speichern & //würde man Convert.ToInt16 benutzen, würde man die Zahl in einem Short speichern // dabei bin ich mir aber nicht ganz sicher //Convert.ToInt32 speichert die Zahl auf jeden Fall in einem Integer //Man müsste noch prüfen ob wirklich eine Zahl eingegeben wurde um mögliche auftretende Fehler zu behandeln //das lasse ich aber hier weg, weil es klar ist, dass man eine Zahl eingeben muss int zahl1 = Convert.ToInt32(input); //Nun die zweite Zahl eingeben lassen, ansonsten gilt das gleiche wie bei der ersten Zahl Console.WriteLine("Bitte gib die zweite Zahl an."); string inp = Console.ReadLine(); int zahl2 = Convert.ToInt32(inp); //Nun noch dem Benutzer ausgeben, was gerechnet wird. Muss man nicht machen, kann man aber Console.WriteLine("Rechnung: " + zahl1 + " " + rechenmethode + " " + zahl2); //Integer Ergebis erstmal auf 0 setzen, wir weisen später einen Wert zu int ergebnis = 0; //switch-Block um nun die ausgewählte Rechenmethode anzuwenden //Man KÖNNTE auch if-Abfragen benutzen, so ist es aber einfacher und schöner switch (rechenmethode) { //case(EN) = Fall(DE) //Sollte also der Fall eintreten, dass der Benutzer + als Rechenmethode angegeben hat //führen wir folgenden Code aus case "+": //Hier weisen wir dem Integer ergebnis einen Wert zu, nämlich zahl1 + zahl2 ergebnis = zahl1 + zahl2; //und schließen mit break; ab break; //Genau das gleiche gilt auch für die anderen Fälle case "-": ergebnis = zahl1 - zahl2; break; case "*": ergebnis = zahl1 * zahl2; break; case "/": ergebnis = zahl1 / zahl2; break; //zum Schluss benutze ich noch default //sollte der Benutzer als weder +, -, * oder / angegeben haben wird der nachfolgende Code aufgerufen default: Console.WriteLine("Falsche Rechenmethode ausgewählt."); break; } //Das Ergenis ausgeben Console.WriteLine("Ergenis: " + ergebnis); //Und auf das Drücken einer Warten Console.ReadKey(); } } }
-
The Following User Says Thank You to Snees For This Useful Post:
-
17.12.2011, 03:35 #2
- Registriert seit
- 09.11.2011
- Beiträge
- 122
Thanked 131 Times in 47 PostsAW: [C#] Taschenrechner-Konsole
Warum so umständlich für den Benutzer?
Es sollte eine Eingabe wie 2 - 4 + 9 - 12 + 7 möglich sein.
PHP-Code:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Minirechner {
class Program {
static int operation;
static void Main(string[] args) {
Console.Write("Aufgabe: ");
Console.WriteLine(Calculate(Console.ReadLine()));
Console.Write("<Drücke eine Taste, um die Konsole zu schließen..>");
Console.ReadKey(true);
}
static double Calculate(string input) {
operation = -1;
double res = 0;
int index;
while ((index = input.IndexOf(' ')) != -1) {
double num;
string p = input.Substring(0, index);
if (!double.TryParse(p, out num)) {
switch (p) {
case "+":
operation = 1;
break;
case "-":
operation = 2;
break;
case "*":
operation = 3;
break;
case "/":
operation = 4;
break;
}
}
else {
if (operation == -1) {
res = num;
}
else {
switch (operation) {
case 1: res += num; break;
case 2: res -= num; break;
case 3: res *= num; break;
case 4: res /= num; break;
}
}
}
input = input.Substring(index + 1);
}
double last = double.Parse(input);
switch (operation) {
case 1: return res + last;
case 2: return res - last;
case 3: return res * last;
case 4: return res / last;
default: return -1;
}
}
}
}
MfGGeändert von Brainy (08.12.2018 um 15:19 Uhr)
-
-
17.12.2011, 12:58 #3
- Registriert seit
- 19.11.2011
- Beiträge
- 496
Thanked 412 Times in 268 PostsAW: [C#] Taschenrechner-Konsole
https://u-img.net/img/5434Nc.png
Richtig wäre 35.
Ich habe mal einen Recursive Descent Parser für mathematische Ausdrücke in C++ geschrieben, der u.A die Regeln (Klammern, Punkt vor Strich) einhält und auch mit Konstanten zurecht kommt (PI, e, ...). Wenn ich Zeit finde, portiere ich das nach C# und poste es hier.Geändert von U-Labs (24.06.2024 um 14:50 Uhr) Grund: Abload.de Bilder wegen geplanter Abschaltung auf U-IMG übertragen
Ähnliche Themen
-
Anfänger Einfacher Taschenrechner
Von DMW007 im Forum AufgabenAntworten: 3Letzter Beitrag: 12.08.2013, 15:55 -
Taschenrechner
Von Sky.NET im Forum ShowroomAntworten: 0Letzter Beitrag: 18.02.2012, 01:26 -
[C++] Einfacher Taschenrechner
Von DMW007 im Forum C++Antworten: 2Letzter Beitrag: 11.01.2012, 01:56 -
ASCII-Buchstaben für Konsole
Von Snees im Forum HochsprachenAntworten: 0Letzter Beitrag: 01.12.2011, 21:14 -
[C#] WordMix Konsole
Von Brainy im Forum .NetAntworten: 0Letzter Beitrag: 20.11.2011, 12:35
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.