Matematika dalam konsep array multi-dimensi

Java mendukung pembuatan array multidimensi maksudnya kita dapat menambahkan data array ke dalam sebuah array, cara pendeklarasian array multi dimensi ini pada dasarnya sama dengan array satu dimensi dimana cukup menambahkan [] sesuai dengan dimensi yang diinginkan.
Contoh :

  int[][] arr2;      //array 2 dimensi 
  int[][][] arr3;    //array 3 dimensi 
  int[][][][] arr4;  //array 4 dimensi 
  int[][] arr2 = new int[3][4];  

Kode diatasakan mengalokasikan memori untuk menampung nilai tipe data int sebanyak 3×4. Array multi-dimensi sebenarnya merupakan array dari array. Artinya terdapat sebuah array yang setiap elemennya juga bertipe array. Cara umum dalam java untuk mendeklarasikan array dua dimensi adalah :

Tipe namaArray[][];
int dimensiDua[][];

Atau

Tipe[][]namaArray;
int [][]dimensiDua;

Adapun untuk array array tiga-dimensi, bentuk umumnya sebagai berikut :

Tipe namaArray[][][];
int dimensiTiga[][][];

Atau

Tipe[][][] namaArray;
int [][][] dimensiTiga;

Berikut contoh2 penerapan konsep array multi-dimensi dalam matematika diskrit :
Array multi-dimensi bentuk sederhana hanya untuk menampilkan list data integer


package arrayduadimensi.andik.packages;

/**
 *
 * @author andik
 */
public class ArrayDimensiDua {
public static void main(String[] args) {
    int[][] data = new int[3][3];
    data[0][0] = 0;
    data[0][1] = 10;
    data[0][2] = 20;
    data[1][0] = 30;
    data[1][1] = 40;
    data[1][2] = 50;
    data[2][0] = 60;
    data[2][1] = 70;
    data[2][2] = 80;

    for (int x=0; x<3; x++){
        for (int i=0; i<3; i++){
            System.out.println("data["+x+"]["+i+"]="+data[x][i]);
            }
        }
    }
} 

Array multi-dimensi yang di dalamnya terdapat array dinamik untuk program searching sequential

package arrayduadimensi.andik.packages;
//Program Searching sequential
import java.io.*;
/**
 *
 * @author andik
 */
public class Arraydinamik {
public static void main(String[] args) throws Exception
	{ int[][] matrik=new int[10][];

	  //memasukkan data yang dicari ordo
      DataInputStream x=new DataInputStream(System.in);
	  System.out.print("baris =");
      int baris=Integer.parseInt(x.readLine());

	  //inisialisasi bintang
	  for(int i=0;i<baris;i++)
	  { int a=0;
		if (i%2==0)
	  	   a=i+baris;
	    else a=baris-i;
		matrik[i]=new int[a];
		for (int j=0;j<matrik[i].length;j++)
		{
			matrik[i][j]=7;
		}
      }

	  //display
	  for(int i=0;i<baris;i++)
	  { for (int j=0;j<matrik[i].length;j++)
			System.out.print(matrik[i][j]+"  ");
		System.out.println();
      }
 }

} 

Penerapan array multi-dimensi dalam konsep matrik, yang basic dasarnya adalah perhitungan antara baris kali kolom

package arrayduadimensi.andik.packages;
import java.io.*;
/**
 *
 * @author andik
 */
public class matrik {
public static void main(String[] args) throws Exception
	{

    DataInputStream dis = new DataInputStream(System.in);
	System.out.print("Baris =");
    int jumlahBaris = Integer.parseInt(dis.readLine());

	System.out.print("Kolom =");
    int jumlahKolom = Integer.parseInt(dis.readLine());

	try
	{
      int[][] matrikA=new int[jumlahBaris][jumlahKolom];

	  for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
			matrikA[i][j]=(int)( Math.random()*100);
	  }

	  //menampilkan bilangan
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
    	     System.out.print(matrikA[i][j]+"\t");
	    System.out.println();
	  }
	}
	catch (Exception e)
		{
    	  System.out.println("masukan nilai jumlah array>0");
		}



	}
} 

Program dibawah ini sebenarnya sama saja dengan konsep dasar program di atas, hanya saja program dibawah ini adalah matrik diagonal yang tentu cara dan pendefinisian serta out putnya pasti berbeda dengan matrik biasa.

package arrayduadimensi.andik.packages;
import java.io.*;
/**
 *
 * @author andik
 */
public class MatrikDiagonal {
public static void main(String[] args) throws Exception
	{

    DataInputStream dis = new DataInputStream(System.in);
	System.out.print("Baris/kolom =");
    int jumlahBaris = Integer.parseInt(dis.readLine());


	try
	{
      int[][] matrikA=new int[jumlahBaris][jumlahBaris];

	  for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
			matrikA[i][j]=(int)( Math.random()*100);
	  }

	  //Matrik Diagonal Utama
	  int[] matrikB=new int[jumlahBaris];
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
			if (i==j)
				matrikB[i]=matrikA[i][j];

		}


	   //menampilkan bilangan
      System.out.println("matrik A");
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
    	     System.out.print(matrikA[i][j]+"\t");
	    System.out.println();
	  }


	  //menampilkan matrik diagonal utama
	  System.out.println("matrik Diagonal Utama");
      for(int i=0;i<matrikB.length;i++) {
	  	     System.out.print(matrikB[i]+" ");

	  }


	}
	catch (Exception e)
		{
    	  System.out.println("masukan nilai jumlah array>0");
		}



	}
}

Dibawah ini adalah contoh bentuk lain dari matrik diagonal, jika pada program diatas pembacaan diagonal utama dilakukan silang dari sisi kiri, maka program dibawah ini melakukan hal yang sebaliknya yakni pembacaan diagonal utama dilakukan dari samping atau sisi kanan

package arrayduadimensi.andik.packages;
import java.io.*;
/**
 *
 * @author andik
 */
public class MatrikDiagonal2 {
public static void main(String[] args) throws Exception
	{

    DataInputStream dis = new DataInputStream(System.in);
	System.out.print("Baris/kolom =");
    int jumlahBaris = Integer.parseInt(dis.readLine());


	try
	{
      int[][] matrikA=new int[jumlahBaris][jumlahBaris];

	  for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
			matrikA[i][j]=(int)( Math.random()*100);
	  }

	  //Matrik Diagonal Utama
	  int[] matrikB=new int[jumlahBaris];
	  int x=0;
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
			if(i+j == jumlahBaris-1)
				{matrikB[x]=matrikA[i][j];

				x++;}

		}


	   //menampilkan bilangan
      System.out.println("matrik A");
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
    	     System.out.print(matrikA[i][j]+"\t");
	    System.out.println();
	  }


	  //menampilkan matrik diagonal utama
	  System.out.println("matrik Diagonal Utama");
      for(int i=0;i<matrikB.length;i++) {
	  	     System.out.print(matrikB[i]+" ");

	  }


	}
	catch (Exception e)
		{
    	  System.out.println("masukan nilai jumlah array>0");
		}



	}
} 

Array multi-dimensi memang memberikan banyak kegunaan, selain bisa untuk menampilkan data dalam bentuk aray dinamik, juga bisa menampilkan out put program dalam bentuk matrik dinamik. Hasil output dari matrik dinamik ini adalah seperti sebuah segitiga sama sisi yang ekponen di dalamnya tersusun dari jumlah input data yang dimasukkan.

package arrayduadimensi.andik.packages;
//Program Searching sequential
import java.io.*;
/**
 *
 * @author andik
 */
public class matrikdinamik {
public static void main(String[] args) throws Exception
	{ int[][] matrik=new int[10][];

	  //memasukkan data yang dicari ordo
      DataInputStream x=new DataInputStream(System.in);
	  System.out.print("baris =");
      int baris=Integer.parseInt(x.readLine());


	  //inisialisasi bintang
	  for(int i=0;i<baris;i++)
	  { matrik[i]=new int[baris-i];
		for (int j=0;j<matrik[i].length;j++)
		{
			matrik[i][j]=7;
		}
      }

	  //display
	  for(int i=0;i<baris;i++)
	  { matrik[i]=new int[baris-i];
		for (int j=0;j<matrik[i].length;j++)
			System.out.print(matrik[i][j]+"  ");
		System.out.println();

      }


	}
} 

Program matrik masukan dibawah ini, sebenarnya sama saja dengan matrik biasa, hanya saja cara kerja program ini dengan memberikan step by step inputan yang inginkan user untuk di hitung dan ditampilkan sebagai nilai matrik

package arrayduadimensi.andik.packages;
import java.io.*;
/**
 *
 * @author andik
 */
public class matrikMasukan {

	public static void main(String[] args) throws Exception
	{

    DataInputStream dis = new DataInputStream(System.in);
	System.out.print("Baris =");
    int jumlahBaris = Integer.parseInt(dis.readLine());

	System.out.print("Kolom =");
    int jumlahKolom = Integer.parseInt(dis.readLine());

	try
	{
      int[][] matrikA=new int[jumlahBaris][jumlahKolom];

	  for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
		  {
     		System.out.print("matrik["+i+"]["+j+"] =");
			matrikA[i][j] = Integer.parseInt(dis.readLine());
          }
	  }

	  //menampilkan bilangan
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
    	     System.out.print(matrikA[i][j]+"  ");
	    System.out.println();
	  }
	}
	catch (Exception e)
		{
    	  System.out.println("masukan nilai jumlah array>0");
		}



	}
} 

Penerapan array multi-dimensi lainnya adalah untuk program pertambahan matrik atau MatrikTambah. Cara kerja matrik ini adalah dengan melakukan penambahan dari rumus fungsi matrik yang sebelumnya. Outputnya matriknya sendiri terdiri dari 3 buah, yaitu matrik A, matrik B, dan matrik C. nah, perlu saya beritahukan, kalo hasil matrik C didapat dari penambahan matrik A dan matrik B. dan matrik B didapat dari inisialisasi matrik A. berikut contoh scriptnya

for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
		  {	matrikA[i][j]=(int)( Math.random()*10);
			matrikB[i][j]=(int)( Math.random()*10);
		  }

	  } 

Dan dibawah ini adalah script perhitungan dari matrik C

	  //penambahan matrik
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
    	     matrikC[i][j]=matrikA[i][j]+matrikB[i][j];
	  } 

Program lengkapnya akan seperti ini :

package arrayduadimensi.andik.packages;
import java.io.*;
/**
 *
 * @author andik
 */
public class matrikTambah {
public static void main(String[] args) throws Exception
	{

    DataInputStream dis = new DataInputStream(System.in);
	System.out.print("Baris =");
    int jumlahBaris = Integer.parseInt(dis.readLine());

	System.out.print("Kolom =");
    int jumlahKolom = Integer.parseInt(dis.readLine());

	try
	{
      int[][] matrikA=new int[jumlahBaris][jumlahKolom];
      int[][] matrikB=new int[jumlahBaris][jumlahKolom];
      int[][] matrikC=new int[jumlahBaris][jumlahKolom];

	  for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
		  {	matrikA[i][j]=(int)( Math.random()*10);
			matrikB[i][j]=(int)( Math.random()*10);
		  }

	  }

      System.out.println("matrik A");
	  //menampilkan matrikA
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
    	     System.out.print(matrikA[i][j]+"\t");
	    System.out.println();
	  }

      System.out.println("\nmatrik B");
	  //menampilkan matrukB
      for(int i=0;i<matrikB.length;i++) {
	    for(int j=0;j<matrikB[i].length;j++)
    	     System.out.print(matrikB[i][j]+"\t");
	    System.out.println();
	  }

	  //penambahan matrik
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
    	     matrikC[i][j]=matrikA[i][j]+matrikB[i][j];
	  }

	  System.out.println("\nmatrik C");
	  //menampilkan matrikB
      for(int i=0;i<matrikC.length;i++) {
	    for(int j=0;j<matrikC[i].length;j++)
    	     System.out.print(matrikC[i][j]+"\t");
	    System.out.println();
	  }
	}
	catch (Exception e)
		{
    	  System.out.println("masukan nilai jumlah array>0");
		}



	}
}

Program TransposeMatrik

package arrayduadimensi.andik.packages;
import java.io.*;
/**
 *
 * @author andik
 */
public class TransposeMatrik {

	public static void main(String[] args) throws Exception
	{

    DataInputStream dis = new DataInputStream(System.in);
	System.out.print("Baris =");
    int jumlahBaris = Integer.parseInt(dis.readLine());

	System.out.print("Kolom =");
    int jumlahKolom = Integer.parseInt(dis.readLine());

	try
	{
      int[][] matrikA=new int[jumlahBaris][jumlahKolom];

	  for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
			matrikA[i][j]=(int)( Math.random()*100);
	  }
	  //Transpose matrik
	  int[][] matrikB=new int[jumlahKolom][jumlahBaris];
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
			matrikB[j][i]=matrikA[i][j];
	  }
	  	  
	   //menampilkan bilangan
      System.out.println("matrik A");
      for(int i=0;i<matrikA.length;i++) {
	    for(int j=0;j<matrikA[i].length;j++)
    	     System.out.print(matrikA[i][j]+"\t");
	    System.out.println();
	  }
	  //Menampilakn transpose matrik
	  System.out.println("matrik Transpose A");
	  for(int i=0;i<matrikB.length;i++) {
	    for(int j=0;j<matrikB[i].length;j++)
    	     System.out.print(matrikB[i][j]+"\t");
	    System.out.println();
	  }
	}
	catch (Exception e)
		{
    	  System.out.println("masukan nilai jumlah array>0");
	}
 }
} 

Program Segitiga Pascal

package arrayduadimensi.andik.packages;
import java.io.*;
/**
 *
 * @author andik
 */
public class segitigaPascal {
public static void main(String[] args) throws Exception
	{

    DataInputStream dis = new DataInputStream(System.in);
	System.out.print("N =");
    int n = Integer.parseInt(dis.readLine());

   int[][] pascal=new int[n][n];

	//Menghitung nilai elemen
	for(int i=0;i<pascal.length;i++) {
	    for(int j=0;j<=i;j++)
		  {	if (j==0 || j==i)
        		pascal[i][j]=1;
			else
				pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j];
		  }
	  }
  //menampilkan bilangan
  for(int i=0;i<pascal.length;i++)
   {
		int v =0 ;
		for(;v<n-(i+1);v++)
		{
			System.out.print(" ");
		}
	    for(int j=0;j<=i;j++)System.out.print(pascal[i][j]+" ");
    	System.out.println();
  }
}
} 
About these ads
This entry was posted in Java. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s