Transponowanie macierzy

Transponowanie macierzy
K0
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:29
0

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

Kopiuj
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.

edytowany 1x, ostatnio: kategoria000
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 9 godzin
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)?


λλλ
K0
Tak mi kazali :) przy okazji - co to znaczy? : "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?
stivens
A no wlasnie mialem cos na ten temat powiedziec. Nawaliles wszystko ciurkiem w jednej metodzie. To co mowi polecenie z dalszej czesci pytania to w skrocie "wez to podziel na mniejsze czesci i niech kazda wykonuje tylko jedna role". https://www.geeksforgeeks.org/object-oriented-programming-oops-concept-in-java/
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 9 godzin
1
Kopiuj
                            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"?


λλλ
edytowany 2x, ostatnio: stivens
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4924
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...

Kopiuj
class Matrix {
  private double [][] matrix;

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

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.