Vergleiche im Array
-
*nochmal meld* :>
Wie realisiert man das Zählen des gleichen Inhaltes in einem Array?
Wenn ich ein Int-Array habe:int test[5] = 1,2,2,3,4;
Soll ausgegeben werden: Es treten '2' gleiche Felder auf.
-
Wenn das Array wie in deinem Beispiel sortiert ist, ist's wohl sehr einfach... Wenn's unsortiert ist, sortierst du's halt und dann ist es wieder einfach

Bei sortiertem Array:
Für alle Einträge mache cur := aktueller_eintrag count := 0 Solange aktueller_eintrag == cur count := count + 1 aktueller_eintrag = nächster_eintrag Gebe aus: [count] " Anzahlen"Und du musst dir überlegen, was z.B. hierbei ausgegeben werden soll: {1,1,1,1,2,2,3,5,777}.
-
oh cool, ^^
nach da sortier ich dat ma flink 8P merci
-
int myArray[6] = { 5, 3, 5, 1, 1, 4 }; int myArrayLen = 6; // wert, anzahl std::map<int, int> statistics; for(int i = 0; i < myArrayLen; ++i) { int key = myArray[i]; ++statistics[key]; }
-
@ badestrand, dann soll er sagen *grübel* es gibt halt 3 Zahlen die gleich oft vorkommen... oder so^^
momentan endet das in einer Endloschleife:
for(int i = 25; i > 0; i--) if(count[i] != 0) cout << setw(3) << count[i]; for(int i = 0; i < 25; i--) { int pick = count[i]; int xcount = 0; while (count[i] == pick) { xcount++; pick = count[i+1]; } cout << count << endl; }
-
dein zweiter schleifenzähler zählt ins minus
-
life_drake schrieb:
dein zweiter schleifenzähler zählt ins minus
Und die innere Schleife überhaupt nicht.. Aber simon.gysi hat Recht, mit einer map ist's eine Ecke einfacher (obwohl es manuell eine bessere Übung für dich ist)

-
std::map ist eine Lösung, std::sort und dann durchzählen wäre die 2. die mir einfällt.
Beide sollten in O(N log N) laufen, aber die std::sort Variante wird ziemlich sicher linear schneller sein.