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ć?
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);
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);
}
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ć?
Musisz zainicjalizować tablicę zliczenia
przed takim jej wykorzystaniem
#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;
}
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
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.