示例#1
0
        private static int FindeErsteRechnungBinaer(decimal nettopreis, _Rechnung[] re, bool debugMode = false)
        {
            int firstIndex = 0,
                lastIndex  = re.Length - 1,
                steps      = 1;

            while (firstIndex <= lastIndex)
            {
                int       middleIndex = (lastIndex + firstIndex) / 2;
                _Rechnung r           = re[middleIndex];
                if (r.Nettopreis == nettopreis)
                {
                    if (debugMode)
                    {
                        Console.WriteLine($"Element nach {steps} Schritten gefunden");
                    }
                    return(middleIndex);
                }
                if (r.Nettopreis < nettopreis)
                {
                    firstIndex = middleIndex + 1;
                }
                else if (r.Nettopreis > nettopreis)
                {
                    lastIndex = middleIndex - 1;
                }
                steps++;
            }
            Console.WriteLine($"Nettopreis von {nettopreis} wurde nicht gefunden.");
            return(-1);
        }
示例#2
0
 private static void DruckeRechnung(_Rechnung r)
 {
     Console.WriteLine("--------------------");
     Console.WriteLine($"Bestelldatum:       {r.Bestelldatum}");
     Console.WriteLine($"Rechnungsnummer:    {r.Rechnungsnummer}");
     Console.WriteLine($"Kundennummer:       {r.Kundennummer}");
     Console.WriteLine($"Nettopreis:         {r.Nettopreis}");
     Console.WriteLine("--------------------\n");
 }
示例#3
0
        //Zusatzaufgabe 2 - nicht abgeschlossen
        public static void TaskC()
        {
            _Rechnung[] re = LinearSearch.ErzeugeZufallsRechnung2(),
                re2 = new _Rechnung[re.Length];

            //Array kopieren
            for (int i = 0; i < re.Length; ++i)
                re2[i] = re[1];

            BubbleSortRechnungen(re, true);

            Console.WriteLine("BubbleSort wurde erfolgreich ausgeführt");
        }
示例#4
0
        public static _Rechnung[] ErzeugeZufallsRechnung2()
        {
            _Rechnung[] re   = new _Rechnung[1000];
            Random      rand = new Random();

            for (int i = 0; i < re.Length; ++i)
            {
                _Rechnung r;
                r.Bestelldatum    = "15.02.2021";
                r.Kundennummer    = rand.Next();
                r.Nettopreis      = rand.Next();
                r.Rechnungsnummer = rand.Next(20000);
                re[i]             = r;
            }
            return(re);
        }
示例#5
0
        private static int RecursiveBinary(decimal nettopreis, _Rechnung[] re, int firstIndex, int lastIndex, int steps)
        {
            int       middleIndex = (lastIndex + firstIndex) / 2;
            _Rechnung r           = re[middleIndex];

            if (r.Nettopreis == nettopreis)
            {
                Console.WriteLine($"Element nach {steps} Schritten gefunden");
                return(middleIndex);
            }
            else if (r.Nettopreis < nettopreis)
            {
                return(RecursiveBinary(nettopreis, re, middleIndex + 1, lastIndex, steps + 1));
            }
            else // if (r.Nettopreis > nettopreis)
            {
                return(RecursiveBinary(nettopreis, re, firstIndex, middleIndex - 1, steps + 1));
            }
        }
示例#6
0
 //Sortiert nach Nettopreis
 //generische Implementierung möglich, dauert aber zu lange
 private static void BubbleSortRechnungen(_Rechnung[] arr, bool printSwaps = false)
 {
     int swaps = 0;
     for (int _ = 0; _ < arr.Length; _++)
     {
         for (int i = 0; i < arr.Length - 1; i++)
         {
             if (arr[i].Nettopreis > arr[i + 1].Nettopreis)
             {
                 _Rechnung temp = arr[i + 1];
                 arr[i + 1] = arr[i];
                 arr[i] = temp;
                 swaps++;
             }
         }
     }
     if (printSwaps)
     {
         Console.WriteLine($"Swaps durchgeführt: {swaps}");
     }
 }