Siemano! Mam za zadanie utworzenie tablicy jednowymiarowej typu int o rozmiarze 10. Następnie wypełnić ją losowymi liczbami, wyliczyć średnią i utworzyć dwie tablice, gdzie w pierwszej będą przechowywane wartości mniejsze od średniej a w drugiej większe lub równe średniej. Na chwilę obecną zrobiłem to tak:
int tab6[] = new int[10];
for (int i = 0; i < tab6.length; i++) {
tab6[i] = (int) (Math.random() * 101);
}
System.out.println("Wylosowane liczby: ");
for (int i = 0; i < tab6.length; i++) {
System.out.print(tab6[i] + " ");
}
int suma = 0;
for (int i = 0; i < tab6.length; i++) {
suma = tab6[i] + suma;
}
System.out.println();
System.out.println("Wynik sumowania: " + suma);
double avg = (double) suma / 10;
System.out.println("Srednia arytmetyczna: " + avg);
int sizeM = 0;
int sizeRW = 0;
for (int i = 0; i < tab6.length; i++) {
if (tab6[i] < avg)
sizeM++;
else sizeRW++;
}
System.out.println("Ilość liczb mniejszych od średniej: " + sizeM);
System.out.println("Ilość liczb równych, bądź większych od średniej: " + sizeRW);
int tabM [] = new int[10];
int tabRW [] = new int [10];
for(int i=0; i<tab6.length; i++){
if (tab6[i]<avg)
tabM[i]=tab6[i];
else tabRW[i]=tab6[i];
}
for (int i=0; i<tabM.length; i++){
System.out.print(tabM[i]+" ");
}
System.out.println();
for (int i=0; i<tabRW.length; i++){
System.out.print(tabRW[i]+" ");
}
}
Przykładowy wynik w konsoli:
Wylosowane liczby:
54 36 37 28 31 74 26 43 16 96
Wynik sumowania: 441
Srednia arytmetyczna: 44.1
Ilość liczb mniejszych od średniej: 7
Ilość liczb równych, bądź większych od średniej: 3
0 36 37 28 31 0 26 43 16 0
54 0 0 0 0 74 0 0 0 96
Czy ktoś mi podpowie jak wykorzystać znane rozmiary tablicy (tutaj 7 i 3), aby je całkowicie zapełnić bez domyślnych 0? Tutaj z góry założyłem, że rozmiar nowych tablic jest równy tablicy pierwotnej. Kombinowałem, ale za każdym razem wywala ArrayIndexOutOfBoundsException.