Hej, za zadanie miałam:
Napisac program, ktory czyta z klawiatury wierszami 2-wym. tablice licz(macerzy). W pierwszym wierszu sa podane wymiary macierzy - liczba wierszy i kolumn. Program wyznacza macierz transponowana wczytanej macierzy oraz oblicza i wyswietla iloczyn tych macierzy
w bólu zrodziłam coś takiego, ale prowadzący powiedział, że mamy użyć(?) wywoływania wpisywania macierzy. Byłabym wdzięczna, gdyby ktoś pomógł "przerobić" mój kod tak, żeby był prawidłowy i wytłumaczyć o co konkretnie chodzi.
public class Macierz {
private double[][] tablica;
Macierz(double[][] m1) {
this.tablica = m1;
}
public double[][] getTablice() {
return tablica;
}
public void pomnoz(Macierz macierz) {
double[][] macierzMnozona = macierz.getTablice();
double[][] macierzPomnozona = new double[this.tablica.length][macierzMnozona[0].length];
macierzPomnozona = this.wymnozTablice(this.tablica, macierzMnozona);
this.tablica = macierzPomnozona;
}
public String toString() {
String temp = "";
for (int i = 0; i < this.tablica.length; i++) {
temp += "|";
for (int j = 0; j < this.tablica[0].length; j++) {
temp += " " + this.tablica[i][j];
}
temp += " |\n";
}
return temp;
}
public void transponuj() {
this.tablica = this.transponujTablice(this.tablica);
}
private double[][] transponujTablice(double[][] tablica) {
double[][] macierzTransponowana = new double[tablica[0].length][tablica.length];
for (int i = 0; i < tablica.length; i++) {
for (int j = 0; j < tablica[0].length; j++) {
macierzTransponowana[j][i] = tablica[i][j];
}
}
return macierzTransponowana;
}
private double[][] wymnozTablice(double[][] tab1, double[][] tab2) {
double[][] macierzPomnozona = new double[tab1.length][tab2[0].length];
if (tab1[0].length == tab2.length) {
for (int i = 0; i < tab1.length; i++) {//ilosc wierszy tab1
for (int j = 0; j < tab2[0].length; j++) { //ilosc kolumn tab2
double temp = 0;
for (int w = 0; w < tab2.length; w++) { //ilosc wierszy tab2
temp += tab1[i][w] * tab2[w][j];
}
macierzPomnozona[i][j] = temp;
}
}
} else {
throw new RuntimeException("Podane tablice mają niewłasciwe wymiary");
}
return macierzPomnozona;
}
public void main()
{
Macierz macierz = new Macierz(tablica);
System.out.println("macierz:\n" + macierz.toString());
macierz.transponuj();
System.out.println("macierz transponowana:\n" + macierz.toString());
macierz.transponuj();
Macierz macierzTransponowana = new Macierz(transponujTablice(tablica));
macierz.pomnoz(macierzTransponowana);
System.out.println("iloczyn macierzy:\n" + macierz.toString());
}
}