Minggu, 07 Juli 2013

PROGRAM TOWER OF HANOI DAN PERKALIAN MATRIKS DENGAN JAVA

Hai sobat, kali ini saya akan memposting contoh program permainan menara Hanoi yang biasa disebut dengan istilah Tower of Hanoi dan program perkalian matriks dengan menggunakan bahasa pemrograman java.

Program ini merupakan program yang saya buat dalam rangka tugas ke 4 dari mata kuliah pemrograman java. Saya harap postingan saya ini dapat dijadikan bahan referensi bagi para mahasiswa/i TI yang mendapat tugas membuat program tersebut.

1. Tower of Hanoi


Source Code :
/**
 * Program Puzzle Tower of Hanoi
 */
import java.util.Scanner;
public class towerOfHanoi {

    public static void towerOfHanoi(int N, String towerAwal, String temp, String towerAkhir ) {
        if(N == 0)
                {
                    return ;
                }
                else
                {
                                towerOfHanoi(N-1, towerAwal, towerAkhir, temp);
                                System.out.println("Pindahkan disk " + N + " dari " + towerAwal + " ke " + towerAkhir + ".");
                                towerOfHanoi(N-1, temp, towerAwal, towerAkhir);
                }
    }
     public static void main(String[] args) {
      Scanner input = new Scanner(System.in);
        int jumlahDisk;
        int pilihan;

      do
      {       
        System.out.println("Program Puzzle Tower of Hanoi .");
        System.out.println("===============================");

        System.out.println("Masukkan jumlah disk :");
        System.out.print("Jumlah Disk : ");
        jumlahDisk = input.nextInt();

        towerOfHanoi(jumlahDisk,"Tower Pertama","Tower Tengah","Tower Akhir");

 System.out.print("\n");
        System.out.println("Apa anda ingin mengulanginya lagi? 1.ya 2.tidak");
        System.out.print("Jawabanmu : ");
        pilihan = input.nextInt();
        System.out.print("\n");

 }while(pilihan != 2);
    }
}



2. Perkalian Matriks



Source Code :
/**
 * Program perkalian matriks
 */
import java.util.Scanner;
import java.io.*;

public class matriks {

    public static int[][] multiply(int[][] A, int[][] B) {
                // Fungsi perkalian matriks
                int mA = A.length;
                int nA = A[0].length;
                int mB = B.length;
                int nB = B[0].length;
                if(nA != mB)
                {
                                throw new RuntimeException("Dimensi Matriks tersebut ilegal.");
                }
               
                int[][] C = new int[mA][nB];
               
                for(int i=0; i < mA; i++)
                                for(int j=0; j < nB; j++ )
                                                for(int k=0; k < nA; k++)
                                                                C[i][j] += (A[i][k] * B[k][j]);
                                                               
                return C;
    }

     public static void print(int[][] A) {
                // Fungsi untuk mencetak hasil perkalian matriks
        int M = A.length;
        int N = A[0].length;
        System.out.println("\nMatriks hasil berordo" + M + " x " + N);
        System.out.println("========================================");
        for(int i = 0; i < M; i++) {
                System.out.print("|");
            for(int j = 0; j < N; j++) {
                System.out.printf("%d", A[i][j]);
                System.out.print("|");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {

       Scanner input = new Scanner (System.in);

       int ordoMatriksM, ordoMatriksN ; // menentukan banyak baris dan kolom pada matriks pertama
       int ordoMatriks1M, ordoMatriks1N; // menentukan banyak baris dan kolom pada matriks kedua
       int x,y,nilai,nilai1,pilihan;
       int[][] matriks1;
       int[][] matriks2;

       System.out.println("Program Perkalian  Dua Buah Matriks.");
       System.out.println("============================");
       System.out.print("\n");

      do
      {

       System.out.println("Matriks Pertama ");
       System.out.print("Masukkan jumlah baris : ");
       ordoMatriksM = input.nextInt();
       System.out.print("Masukkan jumlah kolom : ");
       ordoMatriksN = input.nextInt();
       System.out.println("Merupakan matriks berordo " + ordoMatriksM + " x " + ordoMatriksN + ".");

       matriks1 = new int [ordoMatriksM][ordoMatriksN]; // Inisialisasi ukuran array dua dimensi.
       for(x=0; x<ordoMatriksM; x++)
       {
                                int indeksBaris1 = x + 1;
                                for(y=0; y<ordoMatriksN; y++)
                                {
                                                int indeksKolom1 = y + 1;
                                                System.out.print("Indeks ["+indeksBaris1+","+indeksKolom1+"] = ");
                                                nilai = input.nextInt();
                                                matriks1[x][y] = nilai;
                                }
       }

       System.out.print("\n");

       System.out.println("Matriks Kedua ");
       System.out.print("Masukkan jumlah baris : ");
       ordoMatriks1M = input.nextInt();
       System.out.print("Masukkan jumlah kolom : ");
       ordoMatriks1N = input.nextInt();
       System.out.println("Merupakan matriks berordo " + ordoMatriks1M + " x " + ordoMatriks1N + ".");

       matriks2 = new int[ordoMatriks1M][ordoMatriks1N];

       for(x=0; x<ordoMatriks1M; x++)
       {
                                int indeksBaris2 = x + 1;
                                for(y=0; y<ordoMatriks1N; y++)
                                {
                                                int indeksKolom2 = y + 1;
                                                System.out.print("Indeks ["+indeksBaris2+","+indeksKolom2+"] = ");
                                                nilai1 = input.nextInt();
                                                matriks2[x][y] = nilai1; // memasukkan nilai pada tiap-tiap elemen array
                                }
       }
       System.out.print("\n");
       System.out.println("Hasil perhitungan matriks pertama dan kedua.");
       int[][] matrixHasil = matriks.multiply(matriks1,matriks2); // memanggil fungsi perkalian
       matriks.print(matrixHasil); // memanggil fungsi cetak hasil perkalian
       System.out.println();

       System.out.println("Mau dilanjutkan lagi ? : 1.Ya 2.Tidak");
       System.out.print("Pilihan anda (1 atau 2) : ");
       pilihan = input.nextInt();
       System.out.println();

      }while(pilihan != 2);

     }
}