Cześć. Mam do napisania program na zaliczenie i wymyśliłam wyrównywanie kątów w trójkącie metodą parametryczną. Klasę wprowadzającą dowolne kąty mam i jest ok. Problem pojawia się przy mnożeniu macierzy AtPA, a właściwie AtA. Macierz A zawsze wygląda tak samo więc pozwoliłam sobie od razu uzupełnić macierz danymi. Ale przy pomnożeniu wychodzi mi macierz nie 2x2 tylko 3x2. Nie wiem, czy nie lepszym rozwiązaniem byłoby używanie tablic i uzupełnianie danymi przez odnoszenie się do konkretnego miejsca w tablicy. Działam w eclipse.
Proszę o wyrozumiałość to moje początki w Javie, a programista ze mnie żaden nie jest i nie będzie :)
Oto moje klasy Macierze - wywołująca i macierz- 'schowek' :
public class Macierze {
public Macierze() {
}
public static void main(String[] args){
macierz At = new macierz( new int[][] { {1,0,-1}, {0,1,-1} } );
macierz A = new macierz( new int[][] { {1,0}, {0,1}, {-1,-1} } );
macierz AtA = new macierz( new int[][] { {0,0}, {0,0} } );
AtA=A.mnoz(At);
System.out.println("Macierz At " +At.toString());
System.out.println("Macierz A " +A.toString());
System.out.println("Macierz AtPA " +AtA.toString());
}
}
public class macierz {
int tab[][];
int n;
int m;
int k;
public macierz mnoz(macierz AtA){
macierz ata= new macierz(m,n);
if(m==n){
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
for(int h=0;h<k;h++)
ata.tab[i][j]+=tab[i][h]*tab[h][j];
}
return (ata);
}
public macierz (int lw,int lk){ // konstruktor macierzy ata
m=lw;
n=lk;
tab= new int [m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
tab[i][j]=0;
}
public macierz (int a[][]){
m=a.length;
n=a[0].length;
tab= new int[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
tab[i][j]=a[i][j];
}
public String toString(){
String a="";
for(int i=0;i<m;i++){
a+="\n";
for(int j=0;j<n;j++)
a+=tab[i][j]+"\t";}
return(a);
}
}