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;
}
}
