Transponowanie macierzy

0

Cześć. Problem dotyczy tego, że nie jestem w stanie zapisać wyników transponowania macierzy :

import java.util.Scanner;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        int m = 0, n = 0, l = 0, k = 0, x = 0, y = 0;
        int A[][] = new int [m][n];
        int B[][] = new int [l][k];
        int R[][] = new int [x][y];
        do {
            System.out.println("\nMenu:\n1.Wprowadz macierze wejsciowe\n2.Operacje arytmetyczne\n3.Wyswietl macierze");
            Scanner s = new Scanner(System.in);
            int menu = s.nextInt();
            switch (menu) {
                case 1:
                    System.out.println("Podaj wymiary macierzy A podajac dwie liczby oddzielone spacja: ");
                    m = s.nextInt();
                    n = s.nextInt();
                    A = new int [m][n];
                    System.out.println("Podaj element macierzy A zatwierdzajac enterem: ");
                    for (int i = 0; i < m; i++) {
                        for (int j = 0; j < n; j++) {
                            A[i][j] = s.nextInt();
                        }
                    }
                    System.out.println("Podaj wymiary macierzy B podajac dwie liczby oddzielone spacja: ");
                    l = s.nextInt();
                    k = s.nextInt();
                    System.out.println("Podaj element macierzy B zatwierdzajac enterem: ");
                    B = new int[l][k];
                    for (int i = 0; i < l; i++) {
                        for (int j = 0; j < k; j++) {
                            B[i][j] = s.nextInt();
                        }
                    }
                    break;
                case 2:
                    System.out.println("1.Transponuj macierze wejsciowe\n2.Pomnoz macierze wejsciowe\n3.Transponuj macierz wejsciową");
                    int menu2 = s.nextInt();
                    switch(menu2){
                        case 1:
                            int temp[][] = new int [m][n];
                            int temp2[][] = new int [l][k];
                            for(int i = 0; i < x ; i++)
                                for(int j = 0 ; j < y ; j++) {
                                    int element = A[j][i];
                                    temp[i][j] = element;
                                    element = B[j][i];
                                    temp2[i][j] = element;
                                }
                            System.out.print("{");
                            for (int i = 0; i < m; i++) {
                                for (int j = 0; j < n; j++) {
                                    if (i != 0 && j == 0)
                                        System.out.print("\n ");
                                    System.out.print(" " + temp[i][j] + "");
                                }
                            }
                            System.out.print(" }");
                            System.out.print("\n{");
                            for (int i = 0; i < l; i++) {
                                for (int j = 0; j < k; j++) {
                                    if (i != 0 && j == 0)
                                        System.out.print("\n ");
                                    System.out.print(" " + temp2[i][j] + "");
                                }
                            }
                            System.out.print(" }");
                            break;
                        case 2:

                            break;
                        case 3:
                            int temp3[][] = new int [x][y];
                            for(int i = 0; i < x ; i++)
                                for(int j = 0 ; j < y ; j++)
                                    temp3[i][j] = R[j][i];
                            for(int i = 0; i < x ; i++)
                                for(int j = 0 ; j < y ; j++)
                                    R[i][j] = temp3[i][j];
                            break;
                    }

                    break;
                case 3:
                    System.out.println("1.Wyswietl macierze wejsciowe\n2.Wyswietl macierz wynikowa");
                    int menu3 = s.nextInt();
                    switch(menu3) {
                        case 1:
                            System.out.print("A: \n{");
                            for (int i = 0; i < m; i++) {
                                for (int j = 0; j < n; j++) {
                                    if (i != 0 && j == 0)
                                        System.out.print("\n ");
                                    System.out.print(" " + A[i][j] + "");
                                }
                            }
                            System.out.print(" }");
                            System.out.print("\nB: \n{");
                            for (int i = 0; i < l; i++) {
                                for (int j = 0; j < k; j++) {
                                    if (i != 0 && j == 0)
                                        System.out.print("\n ");
                                    System.out.print(" " + B[i][j] + "");
                                }
                            }
                            System.out.print(" }");
                            break;
                        case 2:
                            System.out.print(" }");
                            System.out.print("\nResult: \n{");
                            for (int i = 0; i < x; i++) {
                                for (int j = 0; j < y; j++) {
                                    if (i != 0 && j == 0)
                                        System.out.print("\n ");
                                    System.out.print(" " + R[i][j] + "");
                                }
                            }
                            System.out.print(" }");
                            break;
                        }
            }
        } while (true);
    }
}

Po transponowaniu pętle które w zamyśle miały wyświetlać temp oraz temp2, wychodzą same zera. Wyświetlając w menu 3 - 1 macierze są takie same jak na początku zadeklarowane, nawet bez tych zer z 2 - 1.

1

Po pierwsze i najwazniejsze: sam implementujesz macierze bo Ci tak np na studiach kazali czy dlatego, ze nie wiesz ze sa gotowe biblioteki (ktore robia to lepiej)?

1
                            for(int i = 0; i < x ; i++)
                                for(int j = 0 ; j < y ; j++) {

Nie wiem czy to sedno problemu ale przeciez nigdy te x, y (wez to jakos "meaningful" nazwij!) nie sa zmieniane (zawsze sa zerami).

No i jesli macierz jest "n na m" to macierz transponowana jest chyba "m na n"?

1

Wydzielić właściwe abstrakcje typów danych (w tym abstrakcję macierzy).", "Zdefiniować hermetyzowany w klasach zbiór atrybutów" oraz "Zdefiniować hermetyzowany w klasach zbiór operacji.". Mam stworzyć coś na wzór struct{} z c

Masz stworzyć typ danych macierz i ma on miec pola i metody, które będą realizowac na nim operacje, (jak na przykład transpozycja). Taki mniej więcej szkielecik, coś tam jeszcze dodasz, drukowanie macierzy, przeładowanie konstruktora,innne operacje, itd...

class Matrix {
  private double [][] matrix;

  public Matrix(double m[][]){
    matrix = m;
  }

  public transpose() {
    // TODO - transpose
  }
}

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