Array: Doppelte Einträge löschen und Häufigkeit speichern.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Array: Doppelte Einträge löschen und Häufigkeit speichern.

    Hallo Leute,
    ich bin neu im Forum und habe da mal eine Frage an euch.
    Also ich bin schon ziemlich lange am überlegen wie man, doppelte Einträge aus einem Array löschen kann und gleichzeitig die Häufigkeit bekommen kann.

    Beispielsweise habe ich einen double Array namens quelle[]
    Diesen array habe ich bereits sortiert.
    Jetzt habe ich noch einen Array mit dem namen ziel [][]

    Zum Beispiel:
    In ziel [0][0] soll das aus quelle[0] stehen und in ziel [0][1] dann die absolute Häufigkeit.
    Und immer so weiter bis quelle[x]==0 ist.


    Würde mich freuen wenn ihr mir helfen könntet.
    Aber ich habe nur grundlegende C Erfahrungen, weshalb lieber nicht nach tricks gegriffen werden sollte die nur bei Java gehen.

    Gruß
  • Wenn du eine C Lösung haben willst, solltest du die Frage auch in dem Forum stellen. Java und C sind lediglich syntaktisch etwas ähnlich, ansonsten eigentlich gar nicht. In Java würde man das ganze auch nicht mit einem zweidimensionalen Array lösen wollen, sondern eher mit einer Map (z.B. Hashmap), was das ganze extrem einfach macht. Ansonsten ist das Problem auch nicht so schwierig. Du gehst die Quelle Item für Item durch, guckst ob es bereits ein entsprechendes Element in ziel gibt, wenn nein packst du das da rein wenn ja erhöst du den Zähler. Das einzig "schwierige" daran ist höchsten der Umgang mit den unzulänglichkeiten von C wie zum Beispiel reallozieren des Ziel-Arrays beim einfügen von neuen Elementen, sowie die Zeiger-Arithmethik falls in quelle ein komplexer Typ stehen sollte.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • hmmm, ok

    Leider sind wir noch nicht soweit in Java und ich kann mit meine Erfahrungen in C das Programm schreiben.
    Ich kann es leider nicht testen (weil der Debugger mir den Inhalt der Variable nicht anzeigen will, aber ich habe es so wie du es sagtest versucht zu lösen:

    Quellcode

    1. a=0;
    2. for(int i=0;i<(rows*lines);i++)
    3. {
    4. if(quelle[i]==data[a][0])
    5. {
    6. data[a][1]++;
    7. }
    8. else
    9. {
    10. a++;
    11. data[a][0]=quelle[i];
    12. data[a][1]++;
    13. }
    14. }
    Alles anzeigen


    Komischer weise gibt es ein fehler wenn ich versuche a was vorher schon initialisiert wurden ist in der schleife versuche zu nullen, aber geht ja auch so.
    Könnt ihr mir sagen ob das so okay ist?
  • ja, ich glaube da ist noch ein Fehler

    Wollte data[0][1] ausgeben und da war eine 0 drin.

    Das heißt das er den ersten bereich überspringt?

    edit: DasProblem ist das ich ja erstmal a hochzähle das heiß er überspringt die 0

    aber wenn ich bei -1 anfange dann geht das ja auch nicht weil das array kein -1 akzeptiert :D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ipermu ()