C :: Aufgabe #84

1 Lösung Lösung öffentlich

Das Häufigste Element in einem Array

Anfänger - C von klhlubek19 - 16.07.2015 um 13:46 Uhr
Schreiben Sie ein Programm, das aus einem Array das häufigste Element findet. Sollte es mehrere gleicher Anzahl finden, so darf irgend ein Element dieser Häufigsten ausgegeben werden.

Lösungen:

vote_ok
von devnull (8870 Punkte) - 22.12.2015 um 19:40 Uhr

Konsolenausgabe:

./arraymax 
Häufigster Wert im Array ist 87 (19 mal).

Quellcode ausblenden C-Code
/************************************
 * arraymax.c      Häufigster Wert
 ************************************/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <time.h>
 
#define MAX_INDEX  1000
#define MAX_WERT   100
 
int array_max_haeuf(int *a, int imax, int *anzahl) {
    int ah[MAX_WERT+1];
    int hmax=0, i, ih;

    // ermittle Haeufigkeiten aller Elemente
	memset(ah, 0, sizeof(int)*(MAX_WERT+1));
    for (i=0; i<=imax; i++)
		++ah[ a[i] ];
	
	// suche maximale Haeufigkeit	
    for (i=0; i<=MAX_WERT; i++)
		if (ah[i] > hmax)
			hmax = ah[ih=i];
	*anzahl = hmax;
	return ih;
}

int main(void) {
	int werte[MAX_INDEX];
	int c, h, i;
	
	// fill array with random values
	srandom(time(NULL));
	for (i=0; i<=MAX_INDEX; i++)
		werte[i] = random() * MAX_WERT / RAND_MAX;

	h = array_max_haeuf(werte, MAX_INDEX, &c);
	
	printf("Häufigster Wert im Array ist %d (%d mal).\n", h, c); 
	return 0;
}