C# :: Aufgabe #328

3 Lösungen Lösungen öffentlich

Differenz(en) von Eingabewerten

Fortgeschrittener - C# von JKooP - 04.10.2020 um 12:26 Uhr
Schreibe eine Methode/Funktion, die die maximale bzw. minimale Differenz von Eingabewerten ermittelt.

z.B. f(3, -2, 18, -1, 50)

Min: 1, da Absolut(-2 - -1) = 1
Max: 52, da Absolut(50 - -2) = 52

Viel Spaß

Lösungen:

vote_ok
von Pascal (130 Punkte) - 10.10.2020 um 10:09 Uhr
Hallo JKooP
Sehr gute Aufgabe um Tupel auszuprobieren.

Schöne Grüsse
Pasal


Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;

namespace DifferenzVonZahlen
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Differenz(en) von Eingabewerten");
            var exampleNumbers = new List<int> {3, -2, 18, -1, 50};
            Console.WriteLine(MinMaxDifference(exampleNumbers));
        }

        private static (int min, int max) MinMaxDifference(List<int> exampleNumbers)
        {
            var differenceList = (
                from number1 in exampleNumbers 
                from number2 in exampleNumbers 
                where number1 != number2 
                select Math.Abs(number1 - number2)).ToList();

            var min = differenceList.Min(difference => difference);
            var max = differenceList.Max(difference => difference);
            return (min, max);
        }
    }
}


2 Kommentare
vote_ok
von Waldgeist (2310 Punkte) - 13.10.2020 um 13:10 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;

namespace Aufgabe_328_Differenzieren_von_Eingabewerten
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            //globale Variablen
            List<int> meineListe = new List<int>();
            int länge;
            int min;
            int max;

            Console.WriteLine("Dieses Programm ermittelt die minimale und maximale Differenz von eingegebenen Zahlen!\n\n");

            Eingabe();
            Verarbeiten();
            Ausgabe(länge);

            //Methoden

            void Eingabe()
            {
                int Eingabe;
                string weiter = "ja";
                do
                {
                    Console.Write("Bitte geben Sie eine Zahl ein: ");
                    try
                    {
                        Eingabe = Convert.ToInt32(Console.ReadLine());
                        meineListe.Add(Eingabe);
                    }
                    catch
                    {
                        weiter = "nein";
                    }
                } while (weiter != "nein");
            }

            void Verarbeiten()
            {
                meineListe.Sort();
                min = meineListe[1] - meineListe[0];
                länge = meineListe.Count;
                max = meineListe[länge - 1] - meineListe[0];
            }

            void Ausgabe(int n)
            {
                Console.WriteLine("\n");
                Console.WriteLine("Ihre eingegebenen Zahlen waren:");
                for (int i = 0; i < n; i++)
                {
                    Console.WriteLine("Zahl: " + meineListe[i]);
                }
                Console.WriteLine("\n");
                Console.WriteLine("Minimum beträgt: " + min);
                Console.WriteLine("Maximum beträgt: " + max);
            }
        }
    }
}
vote_ok
von JKooP (18090 Punkte) - 15.11.2020 um 11:15 Uhr
NET 5.x; C# 9.x
Neuerung in C# 9.x: Top-Level-Anweisung
https://docs.microsoft.com/de-de/dotnet/csharp/whats-new/csharp-9
Quellcode ausblenden C#-Code
using System;
using System.Linq;
using static System.Math;

var (max, min) = Difference(4, -2.1, 22.4, -1, 55);
Console.WriteLine($"Max: {max:F2} - Min: {min:F2}");

static (double max, double min) Difference(params double[] p)
{
    Array.Sort(p);
    double min = 0, max = 0;
    if (p.Length > 1) max = Abs(p.Max() - p.Min());
    if (p.Length > 2) min = Abs(p[1] - p.Min());
    return (max, min);
}