Entwickler-Ecke
C# - Die Sprache - int Array inthalt vergleichen
Daniel R. - Di 25.05.10 11:03
Titel: int Array inthalt vergleichen
Hallo Gemeinde,
ich bin neu im Forum,
ich mache schon eine weile ein kleines Projekt.
und bin auf ein problem gestoßen wo ich spontan keine lösung fand.
ich wär sehr dankbar wenn ihr mir zumindest einen denkanstoß geben könnt.
ich brauch auch nicht umbedingt code ..
also mein problem:
ich habe ein int array, bei dem ab und zu gleiche werte auftreten z.b
C#-Quelltext
1: 2: 3: 4: 5: 6:
| int[0] = 10; int[1] = 11; int[2] = 10; int[3] = 11; int[1] = 12; int[4] = 10; |
und so weiter...
ich möchte die gleich auftreten zahlen und ausgeben z.b:
Es kommt 2 mal die zahl 11 vor und 3 mal die zahl 10.
das wars schonmal.
vielen dank für vllt baldige hilfe.
mfg
daniel
Moderiert von
Christian S.: C#-Tags hinzugefügt
danielf - Di 25.05.10 11:20
Hallo und :welcome:,
wie würdest du es den machen, wenn du es selber machst? Also nicht über ein Programm? Ich denke das ist immer die erste Überlegung um einen Algorithmus zu finden.
Es ist klar, dass du dir jedes Element anschauen musst (Schleife). Dann musst du dir merken ob die Zahl schon vor kam. In der Realität würde ich eine Strichliste für jede Zahl machen und wenn die Zahl erneut vorkommt einen Strich dahinter.
Sprich du hast folgenden ABlauf:
Soweit zum Ablauf. Diesen gilt es nun zu implementieren.
Viel Erfolg,
Gruß
Daniel R. - Di 25.05.10 11:33
hallo und vielen dank für den denkanstoß,
das anschauen der elemente ist mir klar,
ich weiss aktuel grade nur nicht wie ich das am besten implementieren soll....
ich wuerde halt stelle fuer stelle durchgehn und schauen ob die aktuelle stelle der nächsten entspricht,
ich bin noch nicht ganz c# befreundet .. aber wie setz ich das ambesten um?
C#-Quelltext
1: 2: 3: 4: 5:
| arraystelle[0] in nen puffer schreiben
schauen ob stellen [1-arrayende] dem puffer entsprechen dann speichern.
dann für die anderen stellen auch! |
aber dies ist ja dann sicher extrem rechenlastig ..
hat jemand ein besseren vorschlag?
gruß
Th69 - Di 25.05.10 11:59
Verwende ein Dictionary<int, int> bei dem du für jede Zahl den Zähler erhöhst (d.h. bei ersten Einfügen den Zähler auf 1 setzen).
Daniel R. - Di 25.05.10 13:23
Th69 hat folgendes geschrieben : |
Verwende ein Dictionary<int, int> bei dem du für jede Zahl den Zähler erhöhst (d.h. bei ersten Einfügen den Zähler auf 1 setzen). |
hallo,
da ich ehrlich noch nie ein dicitonary verwendet habe,
wie bekomm ich ein array, desen werte gleich sind, in ein dictionary ohne das er mir schreit : "schlüssel bereits vorhanden"?
Gruss Daniel
P.S. fühl mich gerade doch nicht so bewandert in C# wie ich gedacht habe!
Kha - Di 25.05.10 14:24
Deswegen musst du zuerst einmal für jede Zahl i nachschauen, ob sie schon vorhanden ist - das machst du mit TryGetValue. Wird true zurückgeliefert, erhöhst du den Wert um eins und weist ihn dict[i] zu, ansonsten fügst du die Zahl mit dict.Add(i, 1) neu ein.
PS: Liegen die Werte in einem konstanten (engen) Bereich, kannst du statt eines Dictionarys auch ein zweites Array einsetzen. Und wenn du die Aufgabe einmal zu Fuß umgesetzt hast, gäb's da noch einen LINQ-Einzeiler ;) ...
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!