tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
929
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Sansiba007 Tutorials.de Gastzugang
    Hallo Leute,

    ich solle den Modalwert eines Arrays berechnen. Also also als Input wäre z.B. int a[] ={ 1,5,-4,1,1,1,-4,-4,5,5} Als Ergebnis soll logischerweise 1 erscheinen.

    Leider ist das ohne Importe, für mich ein bisschen schwierig. Hier ist mal ein Versuch von mir:

    static int breite(int[] a) {
    int count = 1;

    int x = 0;
    int mod = 0;
    for (int j = 1; j < a.length; j++) {
    count=0;
    for (int i = 1; i < a.length; i++) {
    if (a[x] == a[i]) {
    count += 1;
    System.out.println(count);
    }
    if (mod < count) {
    mod = count;
    }

    }

    a[x] = a[x + 1];

    }
    return mod;
    }

    public static void main(String[] args) {

    int a[] = {3, 12, 12, 5, 5, 0, -3, 0, 5, -5, 12};
    System.out.println(breite(a));
    }
    }


    Hat jemand, wie ich das Programm zum laufen bringe? Oder ist der gesamte Ansatz falsch?
     

  2. #2
    Avatar von Franz Degenhardt
    Franz Degenhardt Franz Degenhardt ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Köln
    Beiträge
    378
    Habe kurz Modalwert nachgeschlagen: http://de.wikipedia.org/wiki/Modus_%28Statistik%29
    Code :
    1
    
    Der Modus oder Modalwert ist der häufigste Wert einer Häufigkeitsverteilung.

    Um diesen für eine Menge an Werten zu berechnen müsste man die Häufigkeit jedes vorkommenden Wertes bestimmen. Du lieferst in der Funktion die Häufigkeit und nicht den den Wert, der die grösste Häuftigkeit hat, zurück.

    - über das Quellfeld iterieren und in einem temporären Feld die Häufigkeit des aktuellen Elementes ermitteln.
    Das Element mit der grössten Häufigkeit mit seiner Häufigkeit speichern.

    In deinem Beispiel müsste der Modalwert 12 sein und nicht 3 (12 und 5 kommen gleich oft vor, da kann man diskutieren ob es einen Modalwert gibt).
    Arrays in Java starten mit Index 0.

    Die Prüfung ob es einen neuen Höchstwert gibt kommt nach der inneren Schleife, nicht darin.

    vgl:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
        static int breite(int[] a) {
            int count = 0;
            int mod = 0;
            int modCount = 0;
            for (int j = 0; j < a.length; j++) {
                count = 0;
                for (int i = 0; i < a.length; i++) {
                    if (a[j] == a[i]) {
                        count += 1;
                    }
                }
                if (modCount < count) {
                    mod = a[j];
                    modCount = count;
                }
            }
            return mod;
        }
     
        public static void main(String[] args) {
            int a[] = { 3, 12, 12, 5, 5, 0, -3, 0, 5, -5, 12 };
            System.out.println(breite(a));
        }
     
    Denken gefärdet die Gewohnheit

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 08.01.11, 02:05
  2. Funktionsaufruf nach AJAX - ohne eval, ohne jQuery?
    Von ZodiacXP im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 02.11.10, 11:53
  3. Mudbox & 3dsMax-Importe?
    Von holzmcgyver im Forum 3D Studio Max
    Antworten: 1
    Letzter Beitrag: 29.05.10, 22:43
  4. Eclipse und Importe
    Von kirina im Forum Java
    Antworten: 9
    Letzter Beitrag: 12.03.08, 16:40
  5. Frame ohne Minimieren. Schließen, Maximieren und ohne Titel
    Von mrno im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 16.07.05, 00:08