Wie gesagt, ich bin echt ein Neuling hier und habe jetzt 2 Stunden versucht dem hier gegebenen Link etwas abzugewinnen. Leider hab ichs bis jetzt nicht hinbekommen.
Ein Workaround wäre sicherlich den 2-D Array in 2 1-D Arrays umzuklabustern. Ich denke jedoch, dass hier der einfache Weg nicht der bessere ist.
Man könnt eauch versuchen das Zählen durch
count
abzubrechen, wenn 12 Schleifendurchläufe erreicht sind.
Also wenn das 2D Array sich nicht verändert einfach mit einer for Schleife arbeiten. Wenn sich die Anzahl der Werte später ändern kann, dann würde ich mir das benötigte Array aus dem 2D Array holen und mit foreach ausgeben.
Wenn Du die Grundlagen nicht beherschst und Grundkonzepte nicht verstehst, wirst Du von Problem zu Problem stolpern.
Jeder halt mal klein angefangen. Wird schon werden.
Dein foreach scheint das komplette Array auszulesen. Du möchtest aber nur [0, i] auslesen.
Das ist verständlicher als eine Schleife die zunächst aussieht als würde sie das ganze Array durchlaufen, es dann aber doch nicht tut.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von chilic am .
int count = 0;
for (int i = 0; i < mass2ndm.Length / mass2ndm.Rank; i++)
{
if (mass2ndm[0, i] ≤ weight)
{
Console.WriteLine(mass2ndm[0, i].ToString());
count++;
}
}
Alle Daten die du benötigst um die gewünschte Anzahl an Dimensionen zu durchlaufen gibt dir dein Array selbst. Eine Sache die noch wichtig ist. Bekommst du einen Link zu einer Dokumentation ist diese nicht der einzige Link der im WWW existiert. Mit einer Suche über Google, wären vllt. für dich verständlichere Dokus oder Tutorials gefunden worden
Vielen Dank Dir. Ich bin etwas missmutig, weil es mir nicht gelungen ist meine Theoriestückchen sinnvoll aneinanderzureihen, aber auf der anderen Seite auch froh darüber, dass hier Fragen wirklich sehr intensiv behandelt werden und eben nicht gleich die Lösung kommt. Das hat mich heute auf jeden Fall weiter gebracht.
Hier nun das fertige Programmstückchen:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tab._2._9_Durchschnittl.Körpermasse_von_Welpen_und_Junghunden
{
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[,] mass_2nd_m = new double[2, 12]
{
// 0 1 2 3 4 5 6 7 8 9 10 11
{ 0.00, 0.65, 1.55, 2.85, 3.60, 4.33, 6.00, 7.00, 7.90, 8.30, 10.0, 11.0 }, // X-Wert aktuelles Gewicht 0
{ 0.00, 2.00, 5.00, 10.0, 15.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0 } // Y-Wert Endgewicht 1
};
if (age == 2)
{
int count = 0;
for (int i = 0; i < mass_2nd_m.Length / mass_2nd_m.Rank; i++)
{
if (mass_2nd_m[0, i] ≤ weight)
{
Console.WriteLine(mass_2nd_m[0, i].ToString());
count++;
}
}
Console.WriteLine("Count: {0}", count);
Console.ReadKey();
int index1 = count - 1;
int index2 = count;
Console.WriteLine();
// (y2-y1)
// y = y1 + ------- * (x-x1)
// (x2-x1)
double final_age = mass_2nd_m[1,index1] + ((mass_2nd_m[1,index2]- mass_2nd_m[1,index1]) / (mass_2nd_m[0,index2]- mass_2nd_m[0,index1]))*(weight- mass_2nd_m[0,index1]);
Console.WriteLine("Dein Hund {0} wird ca. {1}kg Endgewicht erreichen.", name, final_age);
}
Console.ReadKey();
}
}
}
Ich werde dies jetzt erstmal durchtesten. Danach ist der Rest eigentlich nicht weiter schlimm. Den Begriff
.Rank
kannte ich noch nicht. Er ruft wohl die Dimension des Arrays ab.
Vielen Dank bis hier her an Euch alle. Ihr werdet von mir hören (-: Bin ja noch im Tal vor dem Berg (-:
Moderationshinweis von Abt
(25.09.2019 - 16:36:05):
Das sind alles Infos, die du in der Doku finden kannst. Du mußt unbedingt in die Doku reinschauen, wenn du nach etwas suchst. Dazu ist sie da. Und es geht auch viel schneller, als jedesmal im Forum nachzufragen.