Procentowy udział liczb w tablicy

0

Witam, szukam jakiegoś sposobu aby policzyć udział procentowy liczb w tablicy:
Mam tablicę z 1000 elementów wypełnioną losowymi liczbami od -10 do 10. Teraz chciałbym aby przy każdej z tych wartości pokazał się jej udział procentowy. Coś w stylu
-10 14%
-9 7,45%
...
9 1%
10 6%
Jak takie coś zrobić?

1
unsigned proc[21]={0};
for(unsigned i=0;i<Rozmiar;++i) ++proc[tab[i]+10];
for(unsigned i=0;i<21;++i) printf("%3d: %f\n",i-10,100.*proc[i]/Rozmiar);
2

Za pomocą zliczania? Jeśli zakres to [-10,10] to robisz tablicę na 21 elementów a następnie przelatujesz przez swoją 1000 elementową tablice i zliczasz:

int zliczenia[21] = {};
for(int i=0;i<1000;i++){
  int liczba = tablica[i];
  zliczenia[liczba+10]++;
}

I voila, w tablicy zliczenia masz liczbę wystąpień każdej z liczb ;] Teraz wystarczy że zrobisz:

for(int i=0;i<21;i++){
    printf("Liczba %d obejmuje %f procent liczb z tablicy", i-10, 100*zliczenia[i]/1000.0);
}
0

Dzięki za odpowiedzi, to mój program:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define rozmiar 1000
int main()
{
    int i,t[rozmiar], n, zliczenia[21];
    srand(time(NULL));

    for(i=0;i<rozmiar;i++) {
        n = -10 + (10 - -10 + 1) * rand()/RAND_MAX + 1.0;
        t[i] = n;
        zliczenia[t[i]+10]++;
    }

    printf("%d", zliczenia[10]);

    return 0;
}

I jest coś nie tak bo zliczenia[10] zwraca wartość np. 196665. O co może chodzić?

0

Musisz zainicjalizować tablicę zliczenia przed takim jej wykorzystaniem

0
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define rozmiar 1000

int main()
  {
   unsigned zliczenia[21]={0};
   srand(time(NULL)); 
   for(i=0;i<rozmiar;++i)
     {
      unsigned n=(int)(21.*rand()/RAND_MAX)-10;
      ++zliczenia[n+10];
     }
   printf("%d",zliczenia[10]);
   return 0;
  }
1

No i z tym randomem cos chyba jest zle.
Bo po zainicjowaniu tablicy zwraca ciagle 0.

Nie znam za dobrze c++ ale sprobuj

t[i]= rand() % 21 - 10

1 użytkowników online, w tym zalogowanych: 0, gości: 1