Perkalian Matriks dengan Elemen Acak

berikut ini ada sebuah soal UAS pemrograman JavaSmile

“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…Laughing 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…Wink

 

/*

 * 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);

        }

    }

}

 

hmmm… ternyata tak sesulit yang kita kira bukan…???
Math.random() akan menghasilkan bilangan acak antara 0.00 s/d 1.0 
jadi kita cuman perlu memanipulasi hasil acakannya supaya sesuai dengan yang kita inginkan.
Wink
Semoga bermanfaat… yah

 

About Administrator

2016-01-12 10:32:36 2016-01-12 14:33:42

Check Also

Create Simple Chat App with Google App Engine Backend and Google Cloud Messaging

Mari membuat aplikasi chat sederhana menggunakan backend Google App Engine (bagian dari Google Cloud Platform) dan …

Tinggalkan Balasan

Translate »
error: Konten dilindungi !!