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