Häufigkeiten in einem 100 Feld großen Array

VanHellsehn

Erfahrenes Mitglied
Hi,
Ich stehe gerade wieder vor einem kleinen Problem.
Und zwar habe ich ein internger Array mit 100 Feldern. Diese sind mit zufälligen wärten zwischen 1 und 1000 gefüllt.
Nun möchte die die 5 am häufigsten vorkommenden Zahlen zählen wie kann ich das am besten verwirklichen?

PS: Ich brauche garkein Code nur eine Idee ;) Danke im voraus
 
Hi

du könntest dir einen int Vektor erstellen, in den du jede Zahl einfügst, bzw wenn sie schon existiert den Wert des indexes (also der Zahl) inkremieren.
 
Hallo,
hier der Code:
Code:
#include <cstring> // oder string.h
#include <cstdlib> // oder stdlib.h
#include <ctime> // oder time.h
int arr[1000]; // Anzahl Zahlen (Zahlen selbst da drin)
int anzz[100]; // Bis 99 erlaubt (100-1)
int z=0;
srand(time(0)); //Zufallsgenerator initialisieren

for(z=0;z<100;z++) anzz[z]=0;
for(z=0;z<1000;z++) arr[z]=rand() % 100; // Fülle Array beliebig
int top[5]={0,0,0,0,0}; // Anzahl
int topz[5]={0,0,0,0,0}; // Zahlen 

for(z=0;z<1000;z++)
{
anzz[arr[z]]++;
}
for(z=0;z<100;z++)
{
if(anzz[z]>0)
{
if(anzz[z]>=top[4])
{
if(anzz[z]>=top[3])
{
if(anzz[z]>=top[2])
{
if(anzz[z]>=top[1])
{
if(anzz[z]>=top[0])
{
top[4]=top[3];
top[3]=top[2];
top[2]=top[1];
top[1]=top[0];
topz[4]=topz[3];
topz[3]=topz[2];
topz[2]=topz[1];
topz[1]=topz[0];

top[0]=anzz[z];
topz[0]=z;
continue;
}
else
{
top[4]=top[3];
top[3]=top[2];
top[2]=top[1];
topz[4]=topz[3];
topz[3]=topz[2];
topz[2]=topz[1];

top[1]=anzz[z];
topz[1]=z;
continue;
}
}
else
{
top[4]=top[3];
top[3]=top[2];
topz[4]=topz[3];
topz[3]=topz[2];

top[2]=anzz[z];
topz[2]=z;
continue;
}
}
else
{
top[4]=0;
topz[4]=0;
top[4]=top[3];
topz[4]=topz[3];

top[3]=anzz[z];
topz[3]=z;
continue;
}
}
else
{
top[4]=anzz[z];
topz[4]=z;
continue;
}
}}}
printf("1. %d\n2. %d\n3. %d\n4. %d\n5. %d\n",topz[0],topz[1],topz[2],topz[3],topz[4]);
Du kannst gerne noch ein bisschen feilschen, falls dir etwas nicht passt :D
Dieser Code sollte jetzt funktionieren (ist in C++ soviel ich weiss, kompatibel)
 
Zuletzt bearbeitet:
Zurück