Modyfikacja rozmiaru tablicy przez funkcję

0

Mam taką treść zadania:

Napisać funkcję void mirror(int[][] tab), która odwróci tablicę tab najpierw względem pionowej osi tablicy, a następnie względem jej osi pionowej.

Chciałem to zrobić, ale nie wiem jak zmienić rozmiar tablicy w funkcji. Napisałem tak:

package pl.java.mirror;

import java.util.Random;

public class Mirror {

    public static void main(String[] args) {
        int tab[][] = new int [5][5];

        Mirror g = new Mirror();
        g.Wypelnij(tab);
        g.Wyswietl(tab);
        g.mirror(tab);
        System.out.println();
        g.Wyswietl(tab);

    }

    public void Wypelnij(int t[][])
    {
        int n = t.length;
        int m = t[0].length;
        Random rn = new Random();

        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                t[i][j] = rn.nextInt() % 10;
    }

    public void Wyswietl(int t[][])
    {
        int n = t.length;
        int m = t[0].length;

        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
                System.out.print(t[i][j] + "\t");

            System.out.println();
        }
    }

    public void mirror(int t[][])
    {
        int n = t.length;
        int m = t[0].length;
        int t2[][] = new int [m][n];

        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                t2[j][i] = t[i][j];

        t = t2;

    }

}

Jednak to nie działa. Jest jakiś inny sposób?

0

Zrób int[][] mirror i zamiast t = t2 daj return t2. Funkcje i metody raczej nie powinny modyfikować parametrów.

0

@autor, to rozumiesz to zdanie?

która odwróci tablicę tab najpierw względem pionowej osi tablicy, a następnie względem jej osi pionowej.

Po mojemu końcowa tablica jest identyczna z wyjściową, o ile tablica w ogóle ma oś pionową (tzn. ma nieparzystą ilość kolumn).

0

Fakt, na stronie jest napisane, żeby odwrócić 2 razy tablicę po pionie, ale uznałem to za błąd. Dla wprawki robię zadanie bardziej ambitne.

Po modyfikacji program wygląda tak:

package pl.java.mirror;

import java.util.Random;

public class Mirror {

    public static void main(String[] args) {
        int tab[][] = new int [5][5];

        Mirror g = new Mirror();
        g.Wypelnij(tab);
        g.Wyswietl(tab);
        tab = g.mirror(tab);
        System.out.println();
        g.Wyswietl(tab);

    }

    public void Wypelnij(int t[][])
    {
        int n = t.length;
        int m = t[0].length;
        Random rn = new Random();

        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                t[i][j] = rn.nextInt() % 10;
    }

    public void Wyswietl(int t[][])
    {
        int n = t.length;
        int m = t[0].length;

        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
                System.out.print(t[i][j] + "\t");

            System.out.println();
        }
    }

    public int [][] mirror(int t[][])
    {
        int n = t.length;
        int m = t[0].length;
        int t2[][] = new int [m][n];

        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                t2[j][i] = t[i][j];

        return t2;
    }

}

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