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

ilość wystąpień liczby w tablicy - optymalizacja
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
		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ę ;)

SI
  • Rejestracja: dni
  • Ostatnio: dni
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ść.

  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
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ą...

  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
		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!

AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

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

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.