/*** INSTRUKCJI ***/
Polecenie#1
Zaprojektuj i zaimplementuj rozwiązanie dla następującego problemu:
A m x n = B m x k * C k x n
gdzie:
A, B, C należy do zbioru liczb całkowitych
według następującego algorytmu:
- Pobierz od użytkownika wymiary macierzy,
- Utwórz macierze,
- Pobierz od użytkownika wartości elementów macierzy,
- Wykonaj niezbędne operacje arytmetyczne,
- Wyświetl na konsoli wartości macierzy A, B i C.
UWAGI. W programie mnożenia macierzy należy:
- Wydzielić właściwe abstrakcje typów danych.
- Zdefiniować hermetyzowany w klasach zbiór atrybutów (zastosować tablicę
jako kontener przechowujący elementy macierzy). - Zdefiniować hermetyzowany w klasach zbiór operacji.
Polecenie#2
Dla opracowanego przez siebie rozwiązania narysuj diagramy UML:
- VOPC oraz
- diagram interakcji dla „happy day scenario”.
/*** END INSTRUKCJA ***/
Zrobiłem pierwsze 5 punktów, nie wiem dokładnie o co chodzi w Uwagach i Poleceniu 2
Proszę o wytłumaczenie bardziej opisowe. (Nie proszę o kod)
O to co udało mi się zrobić na ten moment:
import java.util.Scanner;
public class Matrix {
static int m;
static int n;
static int k;
int[][] tablica;
public static void main(String[] args){
System.out.println( "Podaj rozmiary macierzy:\n" );
Matrix A = new Matrix();
Matrix B = new Matrix();
Matrix C = new Matrix();
Scanner odczyt = new Scanner( System.in );
System.out.print( "k = " );
k = odczyt.nextInt();
System.out.print( "m = " );
m = odczyt.nextInt();
System.out.print( "n = " );
n = odczyt.nextInt();
if ( ( k <= 0 ) | ( m <= 0 ) | ( n <= 0 ) )
{
System.out.print( "\nPodano niedozwolony rozmiar macierzy.\nKoniec programu !" );
return;
}
A.tablica = new int[m][n];
B.tablica = new int[m][k];
C.tablica = new int[k][n];
System.out.println( "\nPodaj elementy macierzy B:\n" );
for(int i = 0; i < m; i++)
{
for(int j = 0; j < k; j++)
{
System.out.print( "Macierz B[" + i + "][" + j + "] = " );
B.tablica[i][j] = odczyt.nextInt();
}
}
System.out.println( "\nMacierz B" );
for(int i = 0; i < m; i++)
{
for(int j = 0; j < k; j++)
{
if ( j % k == 0 )
System.out.println();
System.out.print( B.tablica[i][j] + " " );
}
}
System.out.println( "\n\nPodaj elementy macierzy C:\n" );
for(int i = 0; i < k; i++)
{
for(int j = 0; j < n; j++)
{
System.out.print( "Macierz C[" + i + "][" + j + "] = " );
C.tablica[i][j] = odczyt.nextInt();
}
}
System.out.println( "\nMacierz C" );
for(int i = 0; i < k; i++)
{
for(int j = 0; j < n; j++)
{
if ( j % n == 0 )
System.out.println();
System.out.print( C.tablica[i][j] + " " );
}
}
int suma = 0;
for(int i = 0; i < m; i++)
{
for(int j = 0; j < m; j++)
{
for(int l = 0; l < k ; l++)
suma += B.tablica[i][l] * C.tablica[l][j];
A.tablica[i][j] = suma;
suma = 0;
}
}
System.out.println( "\n\nMacierz A" );
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
if ( j % n == 0 )
System.out.println();
System.out.print( A.tablica[i][j] + " " );
}
}
}
}