Laden...

Lösung: Auslesen eines Arrays und anschließende Interpolation

Erstellt von RafaelVogt vor 4 Jahren Letzter Beitrag vor 4 Jahren 614 Views
R
RafaelVogt Themenstarter:in
27 Beiträge seit 2019
vor 4 Jahren
Lösung: Auslesen eines Arrays und anschließende Interpolation

Hallo Zusammen,

gestern hatte ich, zugegebenermaßen, eine unverständliche Frage gestellt. Dabei ging es um eine Lösung zum Auslesen eines Arrays und der anschließenden Interpolation.

Genauer kann man anhand des Gewichts eines Welpen in den ersten Monaten sagen, welches Endgewicht erreicht wird. Dies passiert unter Zurhilfenahme von Wachtumskurven. Diese Wachstumskurve habe ich für den ersten Monat in den Array geschrieben.

Nun ging es darum die Benutzeringabe des Gewichts und des Alters über den Array so zu interpolieren, dass auch Ergebnisse jenseits der fest vorgegebene Werte angezeigt werden.

Ich habe vor 1,5 Monaten angefangen C# zu lernen. Deswegen entschuldigt das eine oder das andere. Hier nun zu meiner Lösung. Kommentare sind gerne erwünscht.


class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Endgewichtberechnung eines Welpen");
            Console.WriteLine("---------------------------------\n");

            Console.Write("Name des Hundes: ");
            string name = Console.ReadLine();
            Console.Write("Aktuelles Gewicht von {0} [kg]: ",name);
            double weight = Convert.ToDouble(Console.ReadLine());
            Console.Write("Aktueller Lebensmonat von {0} [m]: ",name);
            int age = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine();

            double[,] bodymass_first_month = new double[2, 6]
            {   //0    1    2    3    4    5 
                {0.0, 0.5, 0.7, 1.1, 1.5, 2.1 }, // X-Wert aktuelles Gewicht 0
                {0.0, 5.0,  10,  20,  35,  60 }  // Y-Wert Endgewicht        1   
            };

            if (age == 1)
            {
                int count = 0;
                foreach (double element in bodymass_first_month)
                {
                    if (element <= weight)
                    {
                        //Console.WriteLine(element);
                        count++;
                    }
                }
                int index1 = count - 2;
                int index2 = count - 1;

                Console.WriteLine();
                
                //Console.WriteLine("Schleifendurchläufe: {0}",count); //2
                //Console.WriteLine("Index des Wertes:  {0}",index1);  //1

                //            (y2-y1)
                // y = y1  +  -------  * (x-x1)
                //            (x2-x1)

                double final_age = bodymass_first_month[1,index1] + ((bodymass_first_month[1,index2]-bodymass_first_month[1,index1]) / (bodymass_first_month[0,index2]-bodymass_first_month[0,index1]))*(weight-bodymass_first_month[0,index1]);

                Console.WriteLine("Dein Hund {0} wird ca. {1}kg Endgewicht erreichen.", name, final_age);

            }

            Console.ReadKey();
        }
    }

16.833 Beiträge seit 2008
vor 4 Jahren

Damit dieses Thema nicht unter den offenen Fragen bzw. unbeantworteten Themen auftaucht, hier eine Antwort.