1. #1
    Avatar von Snees
    Registriert seit
    18.11.2011
    Beiträge
    1.001
    Thanked 590 Times in 319 Posts

    Standard [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();
            }
        }
    }

  2. The Following User Says Thank You to Snees For This Useful Post:

    Saad (17.12.2011)

  3. #2

    Registriert seit
    09.11.2011
    Beiträge
    121
    Thanked 129 Times in 46 Posts

    Standard AW: [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(0index);
                    if (!
    double.TryParse(pout 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 
    1res += num; break;
                                case 
    2res -= num; break;
                                case 
    3res *= num; break;
                                case 
    4res /= 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;
                }
            }
        }

    Hab ich mal eben geschrieben, ist aber meiner Meinung nach nicht die sauberste Lösung, aber es geht.

    MfG
    Geändert von Brainy (08.12.2018 um 15:19 Uhr)

  4. The Following 2 Users Say Thank You to Brainy For This Useful Post:

    DotNet (06.03.2016), Saad (17.12.2011)

  5. #3

    Registriert seit
    19.11.2011
    Beiträge
    496
    Thanked 412 Times in 268 Posts

    Standard AW: [C#] Taschenrechner-Konsole

    Zitat Zitat von Brainy Beitrag anzeigen
    Hab ich mal eben geschrieben, ist aber meiner Meinung nach nicht die sauberste Lösung, aber es geht.

    http://www.abload.de/img/unbenanntq5zml.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.

Ähnliche Themen

  1. Anfänger Einfacher Taschenrechner
    Von DMW007 im Forum Aufgaben
    Antworten: 3
    Letzter Beitrag: 12.08.2013, 15:55
  2. Taschenrechner
    Von Sky.NET im Forum Showroom
    Antworten: 0
    Letzter Beitrag: 18.02.2012, 01:26
  3. [C++] Einfacher Taschenrechner
    Von DMW007 im Forum C++
    Antworten: 2
    Letzter Beitrag: 11.01.2012, 01:56
  4. ASCII-Buchstaben für Konsole
    Von Snees im Forum Hochsprachen
    Antworten: 0
    Letzter Beitrag: 01.12.2011, 21:14
  5. [C#] WordMix Konsole
    Von Brainy im Forum .Net
    Antworten: 0
    Letzter Beitrag: 20.11.2011, 12:35
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.