ilość wystąpień liczby w tablicy - optymalizacja

0

Witam
Mam tablicę 20 liczb np. od 1-5. Chciałbym policzyć ilość wystąpienia każdej liczby, więc robię tak:

		int licznik1=0;
		for(int i=0; i<20; i++){
			if(tablica[i]==1){
				licznik1++;
			}
		}
		int licznik2=0;
		for(int i=0; i<20; i++){
			if(tablica[i]==2){
				licznik2++;
			}
		}
		System.out.println("1 - "+licznik1);
		System.out.println("2 - "+licznik2);

i tak dalej... Na pewno istnieje jakiś sposób żeby zrobić to bardziej optymalnie, nie używając tylu zmiennych. Pomoże ktoś?
Pozdrawiam

PS. Dopiero zaczynam moją przygodę z programowaniem, więc proszę - nie śmiejcie się ;)

0

Nie prościej by było zrobić drugiej tablicy, wyzerować jej i potem tab2[tab[i]++; przy czym tab 2 miała by w tym przypadku 6 indeksów (od 0 do 5).

ps nie znam javy, więc nie wiem czy tak się da.

pps po kiego grzyba osobna pętla dla każdej zmiennej? przecież można

[code]
if(tablica[i]==2){
licznik2++;
[/code] do identycznego fora wyżej przenieść.

0

właśnie trochę uprościłem:

int licznik1=0, licznik2=0, licznik3=0, licznik4=0;
		for(int i=0; i<20; i++){
			if(tablica[i]==1)
				licznik1++;
			else if(tablica[i]==2)
				licznik2++;
			else if(tablica[i]==3)
				licznik3++;
			else if(tablica[i]==4)
				licznik4++;
		}

PS. O! widzę, pojawiła się odpowiedź. Zaraz spróbuję z tą drugą tablicą...

0
		for(int i=0; i<20; i++){
			if(tablica[i]==1)
				licznik[0]++;
			else if(tablica[i]==2)
				licznik[1]++;
			else if(tablica[i]==3)
				licznik[2]++;
			else if(tablica[i]==4)
				licznik[3]++;
	.
	.
	.
}

I tak jest to długie ale chyba nic już na to nie poradzę. Dzięki wielkie!
Pozdr!

0

Poradziłbyś gdyby czytałeś uważnie:
for(int i=0;i<20;++i) ++licznik[tablica[i]-1];

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