C# :: Aufgabe #249
3 Lösungen

Taschenrechner in einer Konsole
Fortgeschrittener - C#
von Gelöschte Person
- 30.03.2019 um 19:29 Uhr
Programmiere einen Taschenrechner der folgende Rechenarten kann:
Plus
Minus
Mal
Geteilt
Wurzel
Hoch
Prozent
Quersumme
Plus
Minus
Mal
Geteilt
Wurzel
Hoch
Prozent
Quersumme
Lösungen:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Traing { class Program { public static double Addieren(double a, double b) { return a + b; } public static double Subtrahieren(double a, double b) { return a - b; } public static double Multiplizieren(double a, double b) { return a * b; } public static double Dividieren(double a, double b) { return a / b; } public static double Wurzel(double a, double b) { return Math.Pow(a, (1/b)); } public static double Potenz(double a, double b) { return Math.Pow(a, b); } public static double Prozent(double a, double b) { return a / 100 * b; } public static string Quersumme(string a) { int zahl = Convert.ToInt32(a); int summe = 0; for(int i = 1; i <= a.Length; i++) { summe = summe + (zahl % 10); zahl = zahl / 10; } return summe.ToString(); } static void Main(string[] args) { List<string> oper = new List<string>(); oper.Add("1 Addieren"); oper.Add("2 Subtrahieren"); oper.Add("3 Multiplizieren"); oper.Add("4 Dividieren"); oper.Add("5 Wurzelziehen"); oper.Add("6 Petenzieren"); oper.Add("7 Prozent "); oper.Add("8 Quersumme"); foreach(string op in oper ) { Console.WriteLine(op); } Console.WriteLine("Wählen sie eine Operation aus indem sie eine Zahl von 1 - 8 eingeben"); int operation = int.Parse(Console.ReadLine()); if(operation == 1) { Console.WriteLine("Geben sie die erste Zahl ein"); double zahl1 = double.Parse(Console.ReadLine()); Console.WriteLine("Geben sie die zweite Zahl ein"); double zahl2 = double.Parse(Console.ReadLine()); Console.WriteLine(zahl1 + " + " + zahl2 + " = " + Addieren(zahl1, zahl2)); } if (operation == 2) { Console.WriteLine("Geben sie die erste Zahl ein"); double zahl1 = double.Parse(Console.ReadLine()); Console.WriteLine("Geben sie die zweite Zahl ein"); double zahl2 = double.Parse(Console.ReadLine()); Console.WriteLine(zahl1 + " - " + zahl2 + " = " + Subtrahieren(zahl1, zahl2)); } if (operation == 3) { Console.WriteLine("Geben sie die erste Zahl ein"); double zahl1 = double.Parse(Console.ReadLine()); Console.WriteLine("Geben sie die erste Zahl ein"); double zahl2 = double.Parse(Console.ReadLine()); Console.WriteLine(zahl1 + " * " + zahl2 + " = " + Multiplizieren(zahl1, zahl2)); } if (operation == 4) { Console.WriteLine("Geben sie dden Dividend ein"); double zahl1 = double.Parse(Console.ReadLine()); Console.WriteLine("Geben sie den Divisor ein"); double zahl2 = double.Parse(Console.ReadLine()); Console.WriteLine(zahl1 + " / " + zahl2 + " = " + Dividieren(zahl1, zahl2)); } if (operation == 5) { Console.WriteLine("Geben sie die Zahl ein von die Wurzel gezogen werden soll"); double zahl1 = double.Parse(Console.ReadLine()); Console.WriteLine("Die wievielte Wurzel soll es sein?"); double zahl2 = double.Parse(Console.ReadLine()); Console.WriteLine("Die " + zahl2 + ".te Wurzel von " + zahl1 + " = " + Wurzel(zahl1, zahl2)); } if (operation == 6) { Console.WriteLine("Geben sie die Basis ein"); double zahl1 = double.Parse(Console.ReadLine()); Console.WriteLine("Geben sie den Exponenten ein"); double zahl2 = double.Parse(Console.ReadLine()); Console.WriteLine(zahl1 + "^" + zahl2 + " = " + Potenz(zahl1, zahl2)); } if (operation == 7) { Console.WriteLine("Geben sie die gesuchte Prozent-Zahl ein"); double zahl1 = double.Parse(Console.ReadLine()); Console.WriteLine("Geben sie die Zahl ein welche 100% hat"); double zahl2 = double.Parse(Console.ReadLine()); Console.WriteLine(zahl1 + "% von " + zahl2 + " = " +Prozent(zahl1, zahl2)); } if (operation == 8) { Console.WriteLine("Geben sie die ganze Zahl ein"); string zahl = (Console.ReadLine()); Console.WriteLine("Die Quersumme von " + zahl + " = " + Quersumme(zahl)); } Console.ReadLine(); } } }

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TrainYourProgrammer___Taschenrechner { class Program { static void Main(string[] args) { try { #region Variablen anlegen double dWert1; double dWert2; string sRechenoperation; bool bEingabeOK = false; #endregion #region Einlesen do { Console.WriteLine("Wert 1 = "); bEingabeOK = double.TryParse(Console.ReadLine(), out dWert1); Console.WriteLine("Wert 2 = "); bEingabeOK = double.TryParse(Console.ReadLine(), out dWert2); Console.WriteLine("\nWelche Rechenoperation soll durchgeführt werden? "); Console.WriteLine("1 - Addition \n2 - Subtraktion \n3 - Multiplikation \n4 - Division \n5 - Wurzelziehen \n6 - Potenzieren \n7 - Prozentrechnung \n8 - Quersumme "); sRechenoperation = Console.ReadLine(); Console.WriteLine("\n"); switch (sRechenoperation) { #region Addition case "1": case "A": case "a": double dSumme = dWert1 + dWert2; Console.WriteLine("Summe = " + dSumme); break; #endregion #region Subtraktion case "2": case "S": case "s": double dDifferenz; if (dWert1 > dWert2) { dDifferenz = dWert1 - dWert2; } else { dDifferenz = dWert2 - dWert1; } Console.WriteLine("Differenz = " + dDifferenz); break; #endregion #region Multiplikation case "3": case "M": case "m": double dProdukt = dWert1 * dWert2; Console.WriteLine("Produkt = " + dProdukt); break; #endregion #region Division case "4": case "D": case "d": double dQuotient; if (dWert1 > dWert2) { dQuotient = dWert1 / dWert2; } else { dQuotient = dWert2 / dWert1; } Console.WriteLine("Quotient = " + dQuotient); break; #endregion #region Wurzelziehen case "5": case "W": case "w": double dWurzelZ1 = Math.Sqrt(dWert1); double dWurzelZ2 = Math.Sqrt(dWert2); Console.WriteLine("Wurzel Wert 1 = " + dWurzelZ1 + "\nWurzel Wert 2 = " + dWurzelZ2); break; #endregion #region Potenzieren case "6": case "P": case "p": double dPotenz; if (dWert1 > dWert2) { dPotenz = Math.Pow(dWert1, dWert2); } else { dPotenz = Math.Pow(dWert2, dWert1); } Console.WriteLine("Potenz = " + dPotenz); break; #endregion #region Prozentrechnen case "7": case "Pr": case "pr": double dProzent; if (dWert1 > dWert2) { dProzent = (dWert2 * 100) / dWert1; Console.WriteLine("Prozent = " + dProzent + " % von " + dWert1); } else { dProzent = (dWert1 * 100) / dWert2; Console.WriteLine("Prozent = " + dProzent + " % von " + dWert2); } break; #endregion #region Quersumme case "8": case "Q": case "q": double dErgebnis1 = Quersumme(dWert1); double dErgebnis2 = Quersumme(dWert2); Console.WriteLine("Quersumme von Wert 1 = " + dErgebnis1 + "\nQuersumme von Wert 2 = " + dErgebnis2); break; #endregion } } while (!bEingabeOK); #endregion } catch (Exception e) { Console.WriteLine("FEHLER!" + e.Message); } } static public double Quersumme (double dZahl) { string sNummern = dZahl.ToString(); dZahl = 0; List<double> ListeTeile = new List<double>(); foreach (char ch in sNummern) { ListeTeile.Add(Convert.ToInt32(ch.ToString())); } foreach (int i in ListeTeile) { dZahl = dZahl + i; } return dZahl; } } }
NET Core 3.x
C#-Code
C#-Code
C#-Code

using static System.Console; namespace CS_Aufgabe_249_Taschenrechner { class Program { static void Main(string[] args) { PrintInfo(); Write("Bitte Operation eingeben: "); // 144° (Wurzel aus 144) var calc = new Calculator(ReadLine()); WriteLine(calc); // 144° = 12 } static void PrintInfo() { WriteLine("Mögliche Operationen:"); WriteLine("(+) Addition\n(-) Subtraktion\n(*) Multiplikation\n(/) Division"); WriteLine("(^) Hoch\n(°) Wurzel\n(%) Prozent\n(#) Quersumme"); WriteLine("(&) Bitweises UND (nur INT)\n"); WriteLine("Nur 2 Operanden und ein Operator möglich!\n"); WriteLine("Beispiele: 2+2; -2 - -3; 4^2; 27°3; 20,4 % 84,5; 2&2; 123456789#\n"); WriteLine("Leerzeichen zwischen Zahlen und Operatoren möglich!\n"); } } }

using System; using System.Text.RegularExpressions; using System.Linq; namespace CS_Aufgabe_249_Taschenrechner { class Calculator { private readonly string _mathProblem; public Calculator(string mathProblem) => _mathProblem = mathProblem; private double GetResult(char op, (double a, double b) v) { var (s, d, p, q) = MyMath.Operation(v.a, v.b); return op switch { '+' => s, '&' => (int)v.a & (int)v.b, '-' => d, '*' => p, '/' => q, '°' => Math.Pow(v.a, 1 / Math.Abs(v.b)), '^' => Math.Pow(v.a, v.b), '%' => v.b * v.a / 100, '#' => MyMath.DigitSum((int)v.a), _ => 0 }; } private char GetOperator() { var r = new Regex(@"[+°*^/%#&\-]{1}"); var m = r.Matches(_mathProblem).Cast<Match>().Select(x => x.Value[0]).ToArray(); return m.Length switch { 0 => '0', 1 => m[0], _ => m[0] == '^' ? m[0] : m[1] }; } private (double v1, double v2) GetValues() { var v1 = 0.0; var v2 = 2.0; var r = new Regex(@"[\-]?[0-9,]+").Matches(_mathProblem); if (r.Count > 0) _ = double.TryParse(r[0].ToString(), out v1); if (r.Count > 1) _ = double.TryParse(r[1].ToString(), out v2); return (v1, v2); } public override string ToString() => $"{_mathProblem} = {GetResult(GetOperator(), GetValues())}"; } }

namespace CS_Aufgabe_249_Taschenrechner { static class MyMath { public static (double s, double d, double p, double q) Operation(double a, double b) => (a + b, a - b, a * b, a / (b == 0 ? 1 : b)); public static int DigitSum(int n) => n != 0 ? n % 10 + DigitSum(n / 10) : 0; } }