berikut ini ada sebuah soal UAS pemrograman Java,
“Buatlah Program Perkalian dua matriks dengan ordo masing-masing matriks diinputkan,
dan elemen tiap matriks merupakan bilangan acak antara 25-75,
setelah itu simpan hasil outputnya ke sebuah file “.
hmmm ternyata gampang-gampang sussah… hehehehehe…
kebanyakan bingung bagaimana menentukan bilangan acak antara 25-75,
kebanyakan contoh program hanya menyebut angka 0-100 sebagai hasil random.
oke mari kita simak contoh source code berikut ini…
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package UAS;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author xp
*/
public class SoalUAS {
public static void main(String[] args) {
int A[][];
int B[][];
int BA = 1, KA = 1, BB = 1, KB = 1;
DataInputStream dis = new DataInputStream(System.in);
try {
System.out.println(“PROGRAM PERKALIAN DUA MATRIKS”);
System.out.println(“MATRIKS A”);
System.out.print(“Masukkan Jumlah Baris : “);
BA = Integer.parseInt(dis.readLine());
System.out.print(“Masukkan Jumlah Kolom : “);
KA = Integer.parseInt(dis.readLine());
System.out.println(“Matriks B”);
System.out.print(“Masukkan Jumlah Baris : “);
BB = Integer.parseInt(dis.readLine());
System.out.print(“Masukkan jumlah Kolom : “);
KB = Integer.parseInt(dis.readLine());
if (KA != BB) {
System.out.println(“MAAF, KOLOM MATRIKS A DAN BARIS MATRIKS B HARUS SAMA”);
System.exit(0);
}
A = new int[BA][KA];
B = new int[BB][KB];
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < A[i].length; j++) {
A[i][j] = (int) Math.round(Math.random() * 50 + 25);
}
}
for (int i = 0; i < B.length; i++) {
for (int j = 0; j < B[i].length; j++) {
B[i][j] = (int) Math.round(Math.random() * 50 + 25);
}
}
//String yang menjadi output disimpan dalam satu variable
String hasil = “HASIL DARI PERKALIAN MATRIKS n” + toPrintMatriks(A)
+ “Xn” + toPrintMatriks(B) + “=n” + toPrintMatriks(perkalianMatriks(A, B));
System.out.println(hasil);
String FileName = “”;
System.out.print(“nMasukkan Nama File : “);
FileName = dis.readLine();
saveToFile(FileName, hasil);
System.out.println(“DATA SAVED”);
} catch (IOException e) {
}
}
/**
* Fungsi untuk menghitung perkalian dua matriks yang dilewatkan melalui
* parameter fungsi.
*
* @param A Matriks A (berupa Array 2 Dimensi)
* @param B Matriks B (berupa Array 2 Dimensi)
* @return Matriks hasil perkalian A dan B
*/
private static int[][] perkalianMatriks(int[][] A, int[][] B) {
int C[][] = new int[A.length][B[0].length];
for (int i = 0; i < A.length; i++) {
for (int j = 0; j < B[0].length; j++) {
C[i][j] = 0;
for (int k = 0; k < B.length; k++) {
C[i][j] += A[i][k] * B[k][j];
}
}
}
return C;
}
/**
* Fungsi untuk mengembalikan String berupa tampilan matriks yang siap cetak
* @param M Matriks yang ingin dicetak (berupa Array 2 Dimensi)
*/
private static String toPrintMatriks(int[][] M) {
String h = “”;
for (int i = 0; i < M.length; i++) {
h += “[t”;
for (int j = 0; j < M[i].length; j++) {
h += M[i][j] + “t”;
}
h += “]n”;
}
return h;
}
/**
* Fungsi untuk menyimpan String ke sebuah File
* Nama file dijadikan sebuag parameter supaya kita bisa
* merubah nama file yang akan disimpan sesuai dengan keinginan kita
*
* @param FileName nama File yang diinginkan
* @param data Data String yang akan disimpan
*/
private static void saveToFile(String FileName, String data) {
try {
FileOutputStream fos = null;
File f = new File(“C:/folder coba/” + FileName + “.uas”);
fos = new FileOutputStream(f);
fos.write(data.getBytes());
fos.close();
} catch (IOException ex) {
Logger.getLogger(SoalUAS.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
