Gdzie jest błąd?

0

Program ma za zadanie wyświetlać największą liczbę na pierwszej przekątnej (max) i najmniejszą liczbę na drugiej przekątnej (min). Max wyświetla prawidłowo, natomiast w min cały czas wychodzi zero, chociaż nie ma zera w tablicy.


public static void main(String[] args) {
        // TODO code application logic here
        Random r = new Random();
        int[][] tab;
        int max;
        int min;
        tab = new int[5][5];
        max = tab[0][0];
        min = tab[0][tab.length-1];
        
        for (int i = 0; i < tab.length; i++){
            for (int j = 0; j < tab[i].length; j++){
                tab[i][j] = r.nextInt(9)+1;
                System.out.print(tab[i][j] + "  ");
                
                if (i == j){
                    if (tab[i][j] > max) {
                        max = tab[i][j];
                    }
                }
                if (i + j == (tab.length-1)){
                    if (tab[i][j] < min) {
                        min = tab[i][j];
                    }
                }
                    
            }
            System.out.println();
        }
        System.out.println(max);
        System.out.println(min);
       
    }

0

nie znam Javy, ale niezależnie od języka podejrzane jest sumowanie zmiennych iterujących w zagnieżdżonych pętlach i + j

1

Jak nie ma, jak jest? ;-)

tab = new int[5][5]; // tab = [[0,0,0,0,0], ...]
max = tab[0][0]; // max = 0
min = tab[0][tab.length-1]; // min = 0

Btw, podziel sobie ten algorytm na dwa etapy: wypełnianie tablicy oraz sprawdzanie przekątnych. Dzięki temu etap drugi będziesz w stanie uprościć (wykorzystując tylko jedną pętlę).

1

Tak jak napisał Patryk27, Wywal ta linijkę:
min = tab[0][tab.length-1];
Zainincjalizuj min, na przykład, maksymalna wartością integera i będzie śmigać.

0

@Patryk27:
jak po sumie indeksów określić czy element znajduje się na przekątnej ?
masz tablicę [0..4, 0..4]
elementy na przekątnej mają sumy indeksów z funkcji suma(x)=x *2, gdzie x to indeks (wiersza, kolumny) czyli np dla x=2 to suma= 4
ale dla wiersza o indeksie 1 i kolumny o indeksie 3 też dostaniemy suma:=x+y=4 , a element nie jest na przekątnej

1
grzegorz_so napisał(a):

@Patryk27:
jak po sumie indeksów określić czy element znajduje się na przekątnej ?
masz tablicę [0..4, 0..4]
elementy na przekątnej mają sumy indeksów z funkcji suma(x)=x *2, gdzie x to indeks (wiersza, kolumny) czyli np dla x=2 to suma= 4
ale dla wiersza o indeksie 1 i kolumny o indeksie 3 też dostaniemy suma:=x+y=4 , a element nie jest na przekątnej

Narysuj sobie kilka macierzy kwadratowych i sprawdź jakie są indeksy na przekątnej od prawego górnego rogu.

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