C# :: Aufgabe #249

3 Lösungen Lösungen öffentlich

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

Lösungen:

vote_ok
von bebbe80 (300 Punkte) - 24.06.2019 um 09:25 Uhr
Quellcode ausblenden C#-Code
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();




            
        }
    }
}
vote_ok
von PhiMo (90 Punkte) - 08.09.2019 um 12:30 Uhr
Quellcode ausblenden C#-Code
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;
        }
    }
}
vote_ok
von JKooP (18090 Punkte) - 02.04.2020 um 14:40 Uhr
NET Core 3.x

Quellcode ausblenden 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");
        }
    }
}


Quellcode ausblenden C#-Code
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())}";
    }
}



Quellcode ausblenden C#-Code
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;
    }
}
2090681

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.