Entwickler-Ecke
Basistechnologien - Kleinster und größter Wert Array mehrdimensionales Array
sebastian1234 - Mo 24.03.14 19:32
Titel: Kleinster und größter Wert Array mehrdimensionales Array
Noch eine kurze Frage...
Wie kann ich bei einem Mehrdimensionalen Array den kleinsten und größten Wert finden und zwar in der inneren Schleife (j=1)?
Folgender Ansatz für kleinsten Wert...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| int minimal; for (int i = 0; i < kunde.Length; i++) { for (int j = 1; j < kunde[0].Length; j++) { if(kunde[j] < minimal) { minimal = kunde[j]; } } } |
Vielen Dank!
Christian S. - Mo 24.03.14 19:52
Hi!
Der Wert kunde[j] ist ein Array, das kannst du weder mit einem Integer vergleichen, noch diesem zuweisen. Daher wird es wohl eher sowas wie kunde[i][j] sein.
Grüße
Christian
P.S.: minimal solltest Du noch intialisieren, z.B. mit int.MaxValue.
sebastian1234 - Di 25.03.14 12:46
Morgen!
Die Werte im Array sind 85, 2, 75, 1!
Mit dieser Schleife möchte ich den kleinsten Wert herausbekommen...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| int minimal = int.MinValue; for (int i = 0; i < kunde.Length; i++) { for (int j = 1; j < kunde[0].Length; j++) { if (kunde[i][j] < minimal) { minimal = (int)kunde[i][j]; } } }Console.WriteLine("Kleinster Wert: "+minimal) |
Ausgabe ist allerdings -2147483648
Eigentlich müsste hier 1 herauskommen...
Mit dieser Schleife möchte ich den größten Wert herausbekommen...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| int maximal = int.MaxValue; for (int i = 0; i < kunde.Length; i++) { for (int j = 1; j < kunde[0].Length; j++) { if (kunde[i][j] < maximal) { maximal = (int)kunde[i][j]; } } }Console.WriteLine("Größter Wert: "+maximal) |
Ausgabe hier ist 1...
Also der korrekte Wert für min!
Wo ist der Fehler?
FinnO - Di 25.03.14 12:49
Wenn du das Maximum herausfinden möchtest, sollte der Startwert der kleinstmögliche Wert sein und umgekehrt. ;)
C#-Quelltext
1:
| int minimal = int.MaxValue; |
sebastian1234 - Di 25.03.14 13:22
Ok danke! Es funktioniert!
Aber ein kleines weiteres Problem ist entstanden.
Am Ende der Methode wird die Berechnung
C#-Quelltext
1:
| double standardisierungKundeZwei = kunde[i][j] - minimal * (1 / (maximal - minimal)); |
durchgeführt.
Aber irgendwie wird an dieser Stelle nichts berechnet, sondern es werden einfach die Werte im Array ausgegeben!
Warum?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| public static void test(double[][] kunde) { double[][] kundeStandardisiert = new double[kunde.Length][]; for (int i = 0; i < kunde.Length; i++) { kundeStandardisiert[i] = (double[])kunde[i].Clone(); }
int maximal = int.MinValue; for (int i = 0; i < kunde.Length; i++) { for (int j = 1; j < kunde[0].Length; j++) { if (kunde[i][j] > maximal) { maximal = (int)kunde[i][j]; } } } Console.WriteLine("Grˆflter Wert: " + maximal);
int minimal = int.MaxValue;
for (int i = 0; i < kunde.Length; i++) { for (int j = 1; j < kunde[0].Length; j++) { if (kunde[i][j] < minimal) { minimal = (int)kunde[i][j]; }
} } Console.WriteLine("Kleinster Wert: " + minimal);
for (int i = 0; i < kunde.Length; i++) { double unternehmensBezeichnung = kunde[i][0]; Console.WriteLine("Unternehmen " + unternehmensBezeichnung);
for (int j = 1; j < kunde[i].Length; j++) { double standardisierungKundeZwei = kunde[i][j] - minimal * (1 / (maximal - minimal)); Console.WriteLine(standardisierungKundeZwei); } } } |
Moderiert von
Christian S.: C#-Tags hinzugefügt
Christian S. - Di 25.03.14 13:38
1 / (maximal - minimal) dürfte meistens 0 sein, weil Du eine Integer-Division durchführst. Versuchs mal mit 1.0 / (maximal - minimal)
sebastian1234 - Di 25.03.14 14:29
Ich musste um die 1.0 noch eine Klammer setzten dann hat es geklappt! Vielen Dank!
C# - So 30.03.14 00:12
C#-Quelltext
1: 2:
| maximal = kunde.Max(i => i.Max()); minimal = kunde.Min(i => i.Min()); |
Sollte auch funktionieren wenn ich mich nicht irre (habs nicht getestet). Dann sparst du dir die beiden Schleifen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!