Veröffentlicht 17. März 201015 j Hey weiß jemand von euch wie ich es am besten hinbekomme in meinem Array wo z.b. 123456 124567 123456 123456 123567 drin steht, wie ich da dann zählen kann wie öft die gleiche Zahl vorkommen. Meine Vorstellung war es das Array einfach mit sich selbst vergleichen und wenn die leiche Zahl vorkommt mir irgendwo eine 1 merken und den inhalt aber irgendwie bekomm ich es nicht gebacken. Ich hoffe ihr versteht mich was ich meine. Am Ende sollte dann in einem Array stehen Dim Profilnummer Profilnummer(0) = "Es werden 3 Profile von der Nummer 123456 benötigt" Profilnummer(1) = "Es werden 2 Profile von der Nummer 123567 benötigt" grüßle
17. März 201015 j Das Einfachste dürfte wohl sein einfach ein Dictionary mit der dem Array Item als Key und der Anzahl als Value zu verwenden. Dann läufst du einfach mit ner Schleife über das Array und aktualisierst dein Dictionary entsprechend.
17. März 201015 j Naja das hilft dir nur wenn du wissen möchstest wie oft ein bestimmtes Element in dem Array vorkommt, bzw. wie oft da Elemente drin vorkommen die den Kriterien entsprechen. Aber nicht wenn du wie hier quasi eine Gruppierung schaffen willst.
17. März 201015 j Das Einfachste dürfte wohl sein einfach ein Dictionary mit der dem Array Item als Key und der Anzahl als Value zu verwenden. Dann läufst du einfach mit ner Schleife über das Array und aktualisierst dein Dictionary entsprechend. Kannst du mir das ein bisschen genauer erklären??? ich versteh das Dictionary nicht... sorry
17. März 201015 j Ich habs jetzt so versucht For i = 0 To MerkenArray.length - 1 Step i + 1 For j = 1 To MerkenArray.length - 1 Step j + 1 If MerkenArray(i) = MerkenArray(j) Then k = k + 1 Point(i, i) = MerkenArray(i) Point(i, i + 1) = k End If Next Next dennoch kann ich ja von meinem blöde zweidiemensionalem array nicht die vordere dimension verändern das wäre nämlich perfekt dann hätte ich das ja -.-
17. März 201015 j Ein Dictionary Element besteht immer aus einem Schlüssel und einem Wert. Wenn jetzt dein Array Strings enthält ist der Schlüssel des Dictionarys auch ein String und der Wert eine Zahl um die Anzahl der Vorkomnisse im Array zu merken. Dictionary<string, int> dict = new Dictionary<string,int>(); Wenn du jetzt mit der Schleife über dein Array läufst schaust du für jedes Element ob sich das schon in deinem Dictionary befindet. Wenn nicht dann fügst du es hinzu und setzt die Anzahl auf 1. Wenn es sich schon im Dictionary befindet erhöhst du einfach nur die Anzhal um 1.
17. März 201015 j Ein Dictionary Element besteht immer aus einem Schlüssel und einem Wert. Wenn jetzt dein Array Strings enthält ist der Schlüssel des Dictionarys auch ein String und der Wert eine Zahl um die Anzahl der Vorkomnisse im Array zu merken. Dictionary<string, int> dict = new Dictionary<string,int>(); Wenn du jetzt mit der Schleife über dein Array läufst schaust du für jedes Element ob sich das schon in deinem Dictionary befindet. Wenn nicht dann fügst du es hinzu und setzt die Anzahl auf 1. Wenn es sich schon im Dictionary befindet erhöhst du einfach nur die Anzhal um 1. hey kannst du mir vielleicht noch kurz sagen wie ich des value abrufen kann? For i = 0 To MerkenArray.length - 1 Step i + 1 k = 1 For j = 1 To MerkenArray.length - 1 Step j + 1 If MerkenArray(i) = MerkenArray(j) Then k = k + 1 End If Next If openWith.Values(MerkenArray(i)) = MerkenArray.length Then Else openWith.Add(MerkenArray(i), k) End If Next der soll ja nicht nochmal eintragen wenn des array schon überprüft worden is und fertig=)
17. März 201015 j Damit ich endlich mal wieder was anderes als Java oder Flex (würg) machen kann hier das ganze als C# Beispiel: static void Main(string[] args) { List<string> list = new List<string>() { "1", "2", "3", "1", "2", "1", "2", "2", "3", "1", }; Dictionary<string, int> dict = new Dictionary<string, int>(); for (int i = 0; i < list.Count; ++i) { if (dict.ContainsKey(list[i])) { dict[list[i]]++; } else dict[list[i]] = 1; } foreach (KeyValuePair<string, int> p in dict) { Console.WriteLine("{0}: {1}", p.Key, p.Value); } Console.ReadKey(); }[/PHP]
18. März 201015 j Leider muss ich nochmal nerven, ich bekomm es einfach nicht in VB übersetzt. Hab es soweit hinbekommen: Dim dict As New Dictionary(Of String, String) For i = 0 To MerkenArray.length Step i + 1 If dict.ContainsKey(MerkenArray(i)) Then k = k + 1 dict.Add(MerkenArray(i), k) Else k = 1 dict.Add(MerkenArray(i), k) End If Next For Each KeyValuePair In dict Console.WriteLine("{0}: {1}", dict.Keys, dict.Values) Next Console.ReadKey Naja ganz stimmt das aber auch nicht. Genauer gesagt komm ich auf das hier nicht klar: if (dict.ContainsKey(list)) { dict[list]++; } else dict[list] = 1; } Sorry=(
18. März 201015 j Moin! Ich moechte noch eine neue Idee auf den Markt werfen, die sehr einfach zu implementieren ist: 1. Array sortieren 2. Alle Elemente durchlaufen und dabei a) einen Zaehler hochzaehlen merken, was das aktuelle Element ist zb: 123456 c) wenn der Wert des Elements wechselt, hast Du das aktuelle Element und die Anzahl der Elemente. Den Zaehler wieder zuruecksetzen.
18. März 201015 j Ich hab meine Idee mal umgesetzt: Dim elemente() As Integer = {1, 2, 3, 4, 2, 8, 2, 3, 8, 1, 1} Array.Sort(elemente) Dim zaehler As Integer = 0 Dim zuZaehlen As Integer = elemente(0) For index As Integer = 0 To elemente.Length - 1 If (elemente(index) <> zuZaehlen) Then Console.Out.WriteLine("Element " + zuZaehlen.ToString() + " kommt " + zaehler.ToString() + " mal vor.") zaehler = 1 zuZaehlen = elemente(index) Else zaehler = zaehler + 1 End If Next Console.Out.WriteLine("Element " + elemente(elemente.Length - 1).ToString() + " kommt " + zaehler.ToString() + " mal vor.") @Christina Wie hast Du es jetzt geloest? Poste doch Deine Loesung, damit auch andere etwas davon haben.
18. März 201015 j Meine Umsetzung: Mein Array -> MerkenArray wir etwas weiter oben beschrieben mit verschiedenen Zahlen. Dim dict As New Dictionary(Of String, String) For i = 0 To MerkenArray.length - 1 Step i + 1 If dict.ContainsKey(MerkenArray(i)) Then dict(MerkenArray(i)) = j + 1 Else j = 1 dict(MerkenArray(i)) = j End If Next Ausgeben tu ich es dann so: For i = 0 To dict.Count - 1 Step i + 1 Form1.TextBox3.Text &= dict.Values(i) & " mal " & dict.Keys(i) & " Profile" & System.Environment.NewLine Next Grüßle
18. März 201015 j Meine Umsetzung: Mein Array -> MerkenArray wir etwas weiter oben beschrieben mit verschiedenen Zahlen. Dim dict As New Dictionary(Of String, String) For i = 0 To MerkenArray.length - 1 Step i + 1 If dict.ContainsKey(MerkenArray(i)) Then dict(MerkenArray(i)) = j + 1 Else j = 1 dict(MerkenArray(i)) = j End If Next Ausgeben tu ich es dann so: For i = 0 To dict.Count - 1 Step i + 1 Form1.TextBox3.Text &= dict.Values(i) & " mal " & dict.Keys(i) & " Profile" & System.Environment.NewLine Next Grüßle Ich glaub aber das ich bei der oberen Schleife einen Denfehler habe, kann dass sein. nur irgendwie Funktioniert es bei mir=)^^
18. März 201015 j Nachdem ich mir gestern nochmal kurz Gedanken drüber gemacht habe ist mir auch die moderne Lösung eingefallen static void Main(string[] args) { List<string> list = new List<string>() { "1", "2", "3", "1", "2", "1", "2", "2", "3", "1", }; var groups = from l in list group l by l into g select new {Number = g.Key, Count = g.Count() }; foreach (var item in groups) { Console.WriteLine("{0}: {1}", item.Number, item.Count); } Console.ReadKey(); }[/PHP]
18. März 201015 j Dim dict As New Dictionary(Of String, String) For i = 0 To MerkenArray.length - 1 Step i + 1 If dict.ContainsKey(MerkenArray(i)) Then j = j +1 dict(MerkenArray(i)) = j Else j = 1 dict(MerkenArray(i)) = j End If Next So stimmts=)
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.