Tablice dwuwymiarowe - problem z zadaniem

0

Hej!
Mam zadanie żeby zainicjować tablicę dwuwymiarową o wymiarach [5][5] losowymi liczbami i sprawdzić czy po przekątnych znajdują się takie same liczby. Do momentu kiedy musze sprawdzić wartości o tych samych indeksach (tj. 0,0 ; 1,1 ; 2,2...) wszystko działa jak należy. Kiedy jednak próbuję przejść do drugiej przekątnej cały czas coś mi nie gra. Chętnie przyjmę porady (nie koniecznie gotowe odpowiedzi) jak mogłabym do tego problemu podejść. Pod spodem umieszczam swój aktualny kod.

Ps. Proszę o wyrozumiałość dla mojego kodu oraz chętnie przyjmę wszelkie wskazówki. Dopiero zaczynam naukę.


int [][] tablicadwu = new int [5][5];

        for(int i=0; i<tablicadwu.length; i++) {
            for(int j = 0; j<tablicadwu[i].length; j++)
            tablicadwu[i][j] = (int)(Math.random()*100);
        }

        tablicadwu[1][1] = 4;
        tablicadwu[1][3] = 3;
        tablicadwu[2][2] = 4;
        tablicadwu[4][0] = 3;



        for(int i =0; i<tablicadwu.length; i++)
            for(int j = 0; j<tablicadwu.length; j++)
                System.out.println("[tab "+i+", "+j+"]= "+tablicadwu[i][j]);


        for(int i =0; i<tablicadwu.length; i++)
            for(int j = 1; j<tablicadwu.length; j++)
            if(tablicadwu[i][i]==tablicadwu[j][j] & i!=j)
                System.out.println("TAK indexy :["+i+"]["+i+"] oraz ["+j+"]["+j+"]");

        System.out.println();


       for(int i =4; i>0; i--)
            for(int j = 0; j<tablicadwu.length; j++)
                if(tablicadwu[i][j]==tablicadwu[j][i] & i!=j & i!=2 & j!=2)
                    System.out.println("TAK indexy :["+i+"]["+i+"] oraz ["+j+"]["+j+"]");

0

Jedna pętla for idzie w górę, druga pętla w dół.

3

Żeby Ci to ruszyło to przydałaby się dodatkowa zmienna

k=tablicadwu.length -1;

i potem ukladasz taki warunek

tablicadwu[i][k-i]==tablicadwu[k-j][j] && i != k-j

no i jeszcze i>=0 bo teraz jak masz napisany ten kod to pomineloby Ci pierwszy wiersz.

Co do poprawy kodu to się nie wypowiem bo nie piszę w Javie i nie wiem jakie tam są dostępne instrukcje.

Co do optymalizacji tego kodu to dla pierwszej przekątnej dla pętli j zrób coś takiego (w instrukcji for)

int j = i+1;

Natomiast dla drugiej przekątnej (z tą którą masz problem) taka inicjalizacja:

int j = k-i+1;

No i jeszcze bym mógł dodać że cały ten kod mógłby być wydzielony do 4 metod: jedna wypełnia tablice, druga wyświetla, trzecia sprawdza 1 przekatna, a 4 druga przekatna.

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