C# :: Aufgabe #218

3 Lösungen Lösungen öffentlich

Messwerte mit Array und Methoden

Anfänger - C# von syneex - 29.06.2018 um 16:20 Uhr
Hallo Zusammen,

mal angenommen, man arbeitet in einer Fabrik, die Druckflaschen herstellt. Es werden pro Tag beliebig viele Flaschen fertiggestellt (n), da die Mitarbeiter nicht jeden Tag identisch schnell arbeiten. Am Ende des Tages muss der Druck in den Flaschen jedoch geprüft werden.

Aufgabe:
Die Aufgabe besteht hier in der Erstellung einer Konsolenanwendung mit folgendem Menü:

-----------Messwerte-----------
1 Eingabe der Messwerte
2 Ausgabe der Messwerte
3 Berechnung des Mittelwertes
4 Ende


Menüpunkt 1 ruft eine Methode auf, die erst eine Eingabe der produzierten Flaschen erwartet. Danach wird für jede Flasche der zuvor gemessene Wert in ein Array (mit Gleitkommazahlen) eingegeben. Wenn man den letzten Wert eingegeben hat, wird wieder das Menü gezeigt.

Menüpunkt 2 ruft eine Methode auf, die für jede Flasche den Wert ausgibt. Nach der nächsten Eingabe wird wieder das Menü gezeigt.

Menüpunkt 3 errechnet den Mittelwert und gibt diesen aus. Anschließend wird wieder das Menü angezeigt.

Bei Wahl des Menüpunkts 4, schließt sich die Konsole.

Der Name der Konsole soll "Messwertecheck" sein.

Die Werte können frei erfunden werden. Es geht lediglich um die Funktionalität. :)


Grüße und viel Spaß beim Lösen ;)

Lösungen:

vote_ok
von Exception (3050 Punkte) - 03.07.2018 um 20:16 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Linq;

namespace Messwerte_mit_Array_und_Methoden_218
{
    class Program
    {
        private static double[] Measurements;

        static void Main(string[] args)
        {
            int selection = -1;

            Console.Title = "#218 Messwertecheck";

            do
            {
                printMenue();
                if (int.TryParse(Console.ReadLine(), out selection))
                {
                    selectAction(selection);
                }
            }
            while (selection != 4);

            Console.ReadKey();
        }

        private static void selectAction(int selection)
        {
            switch (selection)
            {
                case 1:
                    Console.Clear();
                    Console.WriteLine("1 Eingabe der Messwerte");
                    inputValues();
                    break;
                case 2:
                    Console.Clear();
                    Console.WriteLine("2 Ausgabe der Messwerte");
                    printMeasurements();
                    break;
                case 3:
                    Console.Clear();
                    Console.WriteLine("3 Berechnung des Mittelwertes");
                    Console.WriteLine("Mittelwert der {0} Messwerte: {1}", Measurements.Length, calcAverage());
                    Console.ReadKey();
                    break;
                case 4:
                    Console.Clear();
                    Console.WriteLine("Bis bald...");
                    break;
            }
        }

        private static double calcAverage()
        {
            return Measurements.Average();
        }

        private static void printMeasurements()
        {
            if(Measurements == null)
            {
                return;
            }

            for (int index = 0; index < Measurements.Length; index++)
            {
                Console.WriteLine("Messwert der {0}. Flasche: {1}", (index + 1), Measurements[index]);
            }

            Console.WriteLine("...");
            Console.ReadKey();
        }

        private static void inputValues()
        {
            double temp;
            bool acceptedInput  =  false;
            int currentAmount   =  0;
            int totalAmount     =  0;
            Measurements        =  null;
             
            do
            {
                Console.Clear();
                Console.Write("Anzahl der Messwerte: ");

                if(int.TryParse(Console.ReadLine(), out totalAmount))
                {
                    if(totalAmount > 0)
                    {
                        acceptedInput = true;
                    }
                }

            } while (!acceptedInput);


            Measurements = new double[totalAmount];

            do
            {
                Console.Clear();
                Console.Write("Eingabe Messwert ({0} / {1}): ", (currentAmount + 1), totalAmount);
                if(double.TryParse(Console.ReadLine(), out temp))
                {
                    Measurements[currentAmount] = temp;
                    currentAmount++;
                }
            } while (currentAmount < totalAmount);

            Console.WriteLine("...");
        }

        private static void printMenue()
        {
            Console.Clear();
            Console.WriteLine("--- Messwerte ---");
            Console.WriteLine("1 Eingabe der Messwerte");
            Console.WriteLine("2 Ausgabe der Messwerte");
            Console.WriteLine("3 Berechnung des Mittelwertes");
            Console.WriteLine("4 Ende");
            Console.Write("\n> ");
        }
    }
}

vote_ok
von Z3RP (900 Punkte) - 09.07.2018 um 13:14 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Messwertcheck
{
    class Program
    {
        static List<int> Bottles;
        static void Main(string[] args)
        {
            MainMenu("");
        }

        private static void MainMenu(string s)
        {
            string input = s;
            DrawMainMenu();
            while (input != "4")
            {
                switch (input)
                {
                    case "1":
                        GetBottlesValues();
                        break;
                    case "2":
                        DrawBottleValues();
                        break;
                    case "3":
                        GetBottlesAverage();
                        break;
                    case "4":
                        break;
                    default:
                        if(input!="")
                            DrawErrorMessage("Gib eine gültige Zahl an!");
                        break;
                }

                input = Console.ReadKey().KeyChar.ToString();
            }
        }

        private static void GetBottlesAverage()
        {
            if (Bottles != null)
            {
                Console.Clear();
                Console.WriteLine("-----------Berechnung des Mittelwertes-----------");
                Console.WriteLine("");

                float average = 0;
                for (int i = 0; i < Bottles.Count; i++)
                {
                    average += Bottles[i] / Bottles.Count;
                }
                Console.WriteLine("Der Mittelwert der Flaschen liegt bei: "+average);
                Console.ReadKey();
                MainMenu("");
            }
            else
            {
                DrawErrorMessage("Mach erst die Eingaben!");
            }
        }

        private static void GetBottlesValues()
        {
            Bottles = new List<int>();

            Console.Clear();
            Console.WriteLine("-----------Eingabe der Messwerte-----------");
            Console.Write("Anzahl der Flaschen: ");
            int count = GetNumberOfConsol();
            Console.WriteLine("");

            for (int i = 0; i < count; i++)
            {
                Console.Write("Flasche " + (i + 1) + ": ");
                int pressure = GetNumberOfConsol();
                Console.WriteLine();
                Bottles.Add(pressure);
            }
            MainMenu("");
        }

        private static void DrawErrorMessage(string message)
        {
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(message);
            Console.ResetColor();
            MainMenu(Console.ReadKey().KeyChar.ToString());
        }

        private static void DrawBottleValues()
        {
            if (Bottles != null)
            {
                Console.Clear();
                Console.WriteLine("-----------Ausgabe der Messwerte-----------");
                for (int i = 0; i < Bottles.Count; i++)
                {
                    Console.Write("Flasche " + (i + 1) + ": " + Bottles[i]);
                    Console.WriteLine();
                }
                Console.ReadKey();
                MainMenu("");
            }
            else
            {
                DrawErrorMessage("Mach erst die Eingaben!");
            }
        }

        private static void DrawMainMenu()
        {
            Console.Clear();
            Console.WriteLine("-----------Messwerte-----------");
            Console.WriteLine("1 Eingabe der Messwerte");
            Console.WriteLine("2 Ausgabe der Messwerte");
            Console.WriteLine("3 Berechnung des Mittelwertes");
            Console.WriteLine("4 Ende");
        }

        private static int GetNumberOfConsol()
        {
            string _val = "";
            ConsoleKeyInfo key;
            do
            {
                key = Console.ReadKey(true);
                if (key.Key != ConsoleKey.Backspace)
                {
                    double val = 0;
                    bool _x = double.TryParse(key.KeyChar.ToString(), out val);
                    if (_x)
                    {
                        _val += key.KeyChar;
                        Console.Write(key.KeyChar);
                    }
                }
                else
                {
                    if (key.Key == ConsoleKey.Backspace && _val.Length > 0)
                    {
                        _val = _val.Substring(0, (_val.Length - 1));
                        Console.Write("\b \b");
                    }
                }
            }
            // Stops Receving Keys Once Enter is Pressed
            while (key.Key != ConsoleKey.Enter || _val == "");

            return Convert.ToInt32(_val);
        }
    }
}
vote_ok
von daniel59 (3950 Punkte) - 03.08.2018 um 12:14 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Linq;

namespace ConsoleMesswerte
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "Messwertecheck";
            char key = '\0';
            double[] messwerte = new double[0];
            do
            {
                Console.WriteLine();
                switch (key)
                {
                    case '1':
                        Console.Write("Anzahl der Flaschen: ");
                        int n;
                        if (int.TryParse(Console.ReadLine(), out n) && n > 0)
                        {
                            messwerte = new double[n];
                            int pad = n.ToString().Length;
                            for (int i = 0; i < n; i++)
                            {
                                Console.Write($"Druck von Flasche {(i + 1).ToString().PadLeft(pad)}: ");
                                double d;
                                if (double.TryParse(Console.ReadLine(), out d))
                                {
                                    messwerte[i] = d;
                                }
                                else
                                {
                                    Console.WriteLine("Ungültige Eingabe!");
                                    goto default;
                                }
                            }

                            Console.WriteLine();
                        }
                        else
                        {
                            Console.WriteLine("Ungültige Eingabe!");
                            goto default;
                        }
                        break;

                    case '2':
                        for (int i = 0; i < messwerte.Length; i++)
                        {
                            Console.WriteLine($"Druck von Flasche {(i + 1).ToString().PadLeft(messwerte.Length)}: {messwerte[i]}");
                        }
                        Console.WriteLine();
                        break;

                    case '3':
                        Console.WriteLine($"Mitteler Druck der Flaschen: {messwerte.Average()}\r\n");
                        break;

                    default:
                        break;
                }

                Console.WriteLine("-----------Messwerte-----------");
                Console.WriteLine("1 Eingabe der Messwerte");
                Console.WriteLine("2 Ausgabe der Messwerte");
                Console.WriteLine("3 Berechnung des Mittelwertes");
                Console.WriteLine("4 Ende"); ;

            } while ((key = Console.ReadKey().KeyChar) != '4');
        }
    }
}