C# :: Aufgabe #218

5 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 (7090 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 (1020 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 (4260 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');
        }
    }
}
vote_ok
von Philipp (160 Punkte) - 06.12.2018 um 19:13 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TyP231BinäroNull
{
    class Program
        
    {
        static double[] value;
        static int anzahl;
        static void Main(string[] args)
        {
            Console.Title = "Messwertcheck";
            mainMenue();
        }

        public static void mainMenue()
        {
            int exit = 0;
            while (exit < 1)
            {

                Console.WriteLine("-----------Messerte----------");
                Console.WriteLine("1 = Messwert eigabe");
                Console.WriteLine("2 = Messwert ausgabe");
                Console.WriteLine("3 = Mittelwert ausgabe");
                Console.WriteLine("q = Exit");

                string eingabe = Console.ReadLine();

                switch (eingabe)
                {
                    case "1":

                        case1(out value, out anzahl);
                        
                        break;
                    case "2":
                        case2(value);
                        break;
                    case "3":
                        case3(value, anzahl);
                        break;
                    case "q":
                        exit++;
                        break;
                }
            }
        }
        public static void case1(out double[] druckWerte, out int flaschenAnzahlInt)
        {
            Console.WriteLine("Wie Viele Flaschen wurden gefertigt?");
            string flaschenAnzahl = Console.ReadLine();
            flaschenAnzahlInt = Convert.ToInt32(flaschenAnzahl);

            druckWerte = new double[flaschenAnzahlInt];

            int i = 0;
        
            while (i < flaschenAnzahlInt) 
            {
                Console.WriteLine("Bitte den Wert für die Flaschen eingeben");
                string druckeingabe = Console.ReadLine();
                double druckeingabeInt = Convert.ToDouble(druckeingabe);
                druckWerte[i] = druckeingabeInt;
                i++;
            }
           
          
        }

        public static void case2(double[] x)
        {
            Console.WriteLine("Die Werte Sind:");
            foreach (var wert in x)
            {
                Console.WriteLine(wert);
            }
            Console.ReadKey();
        
        }

        public static void case3(double[] x, int anzah)
        {
            double u = 0;
            double anzahlDouble = Convert.ToDouble(anzah);
            foreach (var wert in x)
            {
                u = u + wert;
            }

            double ergebnis = u / anzahlDouble;

            Console.WriteLine("Der durchschnittswerte ist:" + ergebnis);

        }

    }
}
vote_ok
von Benyam (20 Punkte) - 26.07.2021 um 13:02 Uhr
Quellcode ausblenden C#-Code
using System;

namespace Übung
{
    class Program
    {
        private static double[] produzier;
        public static void Menüpunkte1()
        {
            int n;
            Console.Write("Gaben Sie bitte Anzahl der Produzierten Flaschen ein: ");
            n= int.Parse(Console.ReadLine());
            produzier = new double[n];
            Console.WriteLine("Gaben Sie für jede Flasche zuvor gemessene Wert ein:");
            for(int i = 0; i < produzier.Length; i++)
            {
                Console.Write("die {0} te Flasche: ", i + 1);
                produzier[i] =Convert.ToDouble(Console.ReadLine());
                 
            }

        }
        public static void Ausgeben()
        {
            for (int i = 0; i < produzier.Length; i++)
            {
                Console.WriteLine("die {0}'te Flasche: {1} ", i + 1, produzier[i]);
            }
        }
        public static void Mittelwertes()
        {
            double mittelwet;
            double sum=0;
            for(int i=0; i < produzier.Length; i++)
            {
                sum += produzier[i];
            }
            mittelwet = sum / 2;
            Console.WriteLine(mittelwet);
        }

        static void Main(string[] args)
        {
            Console.Title = "Messewertecheck";
            // bool nochmal;
            Console.WriteLine("---------------Messwerte-------------");
            //Console.WriteLine("1 Eingabe der Messerte\n2 Ausgabe der MEsswerte\n3 Brechnung des Mittelwertes\n4 Ende");
            int auswahl;
            do
            {

                Console.WriteLine("1 Eingabe der Messerte\n2 Ausgabe der MEsswerte\n3 Brechnung des Mittelwertes\n4 Ende");
                auswahl = int.Parse(Console.ReadLine());

              

                switch (auswahl)
                {
                    case 1:
                        Console.Clear();
                        Menüpunkte1();
                        break;
                    case 2:
                        Console.Clear();
                        Ausgeben();
                        break;
                    case 3:
                        Console.Clear();
                        Mittelwertes();
                        
                        break;
                    case 4: Console.WriteLine("Ende");
                        break;
                    default: Console.WriteLine("Falsche Angabe. Versuchen Sie noch ein Mal: ");
                        break;
                }
               
            } while (auswahl!=4);
            Console.WriteLine("Wiedersehen");

        }
    }
}