RSS

Program Fungsi Invers Sederhana dengan Java

25 Dec

LISTING PROGRAM :
import javax.swing.*;
public class FungsiInvers {
 String[] HimpunanA;
 String[] HimpunanB;
 String[] HimpunanRelasi;
 String[] HimpunanAsal;
 int jmlHimpunanA, jmlHimpunanB, jmlRelasi;
 boolean satu2 ;
public void inputAnggota(){
String strA = JOptionPane.showInputDialog(null, "Masukkan jumlah himpunan A !", "Fungsi"
 +" ", JOptionPane.QUESTION_MESSAGE);
 jmlHimpunanA = Integer.parseInt(strA);
//Menampilkan dialog untuk menginput himpunan A sebanyak jmlHimpunanA
 HimpunanA = new String[jmlHimpunanA];
 for(int i = 0; i<= (jmlHimpunanA-1); i++){
 HimpunanA[i] = JOptionPane.showInputDialog(null, "" +
 "Himpunan A yang ke "+(i+1)+"/"+jmlHimpunanA+" : ", "Fungsi", JOptionPane.QUESTION_MESSAGE);

 }
String strB = JOptionPane.showInputDialog(null, "Masukkan jumlah himpunan B !", "Fungsi"
 +"", JOptionPane.QUESTION_MESSAGE);
 jmlHimpunanB = Integer.parseInt(strB);
//menampilkan dialog untuk menginput himpunan B sebanyak jmlHimpunanB
 HimpunanB = new String[jmlHimpunanB];
 for(int i = 0; i<=(jmlHimpunanB-1); i++){
 HimpunanB[i] = JOptionPane.showInputDialog(null, ""+
 "Himpunan B yang ke "+(i+1)+"/"+jmlHimpunanB+" : ", "Fungsi", JOptionPane.QUESTION_MESSAGE);
}
}
 public String cetakHimpunan(){
 StringBuffer sbuff = new StringBuffer(); //menginisialisasi StringBuffer
 //fungsi append untuk menambahkan string ke dalam objek StringBuffer
 sbuff.append("Anggota Himpunan A = { ");
 for (int i = 0;i<=(jmlHimpunanA-1);i++){
 sbuff.append(HimpunanA[i]+ " ");
 }
 sbuff.append("} \n");
 sbuff.append("Anggota Himpunan B = { ");
 for (int i = 0;i<=(jmlHimpunanB-1);i++){
 sbuff.append(HimpunanB[i]+ " ");
 }
 sbuff.append("} \n");
 //menconversi dan mengembalikan objek String
 return sbuff.toString();
 }
public void inputRelasi(){
 int jmlRelasiMaks = jmlHimpunanA * jmlHimpunanB;
do{
 String relasi = JOptionPane.showInputDialog(null, "Relasi maksimal adalah "+jmlRelasiMaks+ ""+
 "\nMasukan Jumlah Relasi yang Terjadi : ", "Fungsi", JOptionPane.QUESTION_MESSAGE);
 jmlRelasi = Integer.parseInt(relasi);
 } while (jmlRelasi>jmlRelasiMaks);
HimpunanRelasi = new String[jmlRelasi];
 HimpunanAsal = new String[jmlRelasi];
 for(int i=0; i<=(jmlRelasi-1); i++){
String[] temp = new String[jmlRelasi]; //Menampung sementara inputan untuk daerah Asal
 String[] temp2 = new String[jmlRelasi]; //Menampung sementara Inputan untuk daerah Tujuan
 boolean SamaA = false; //Untuk menngecek apakah inputan untuk nilai Asal Ada di Himp A
 boolean SamaB = false; //Untuk mengecek apakah inputan untuk nilai Tujuan Ada di Himp B
do{
temp[i] = JOptionPane.showInputDialog(null, cetakHimpunan()+"Relasi ke "+(i+1)+"/"+jmlRelasi+
 "\nMasukkan Asal A : ", "Fungsi", JOptionPane.QUESTION_MESSAGE);
 temp2[i] = JOptionPane.showInputDialog(null, cetakHimpunan()+"Relasi ke "+(i+1)+"/"+jmlRelasi+
 "\nMasukkan Tujuan B : ", "Fungsi", JOptionPane.QUESTION_MESSAGE);
//cek apakah himpunan yang dimasukkan adalah anggota A
 for (int j= 0; j<=(jmlHimpunanA-1);j++){
 if(temp[i].equals(HimpunanA[j])){
 SamaA=true;
 }
 }
//cek apakah himpunan yang dimasukkan adalah anggota B
 for (int k= 0; k<=jmlHimpunanB-1;k++){
 if(temp2[i].equals(HimpunanB[k])){
 SamaB=true;
 }
 }
if(SamaA==false || SamaB==false){
 JOptionPane.showMessageDialog(null, "Anggota Himpunan Tidak terdapat dihimpunan "+
 "A atau B", "Fungsi", JOptionPane.ERROR_MESSAGE);
 }
if(SamaA==true && SamaB==true){
 HimpunanRelasi[i]=temp2[i];
 HimpunanAsal[i]=temp[i];
 }
 //jika input yang dimasukkan tidak ada dalam anggota A maupun B
 //maka perulangan dilakukan terus sampai input yang dimasukkan
 //ada dalam anggota A dan B
 }while(SamaA==false || SamaB==false);
 }
 }
public String cekFungsi(){
 satu2 = false;
 int jumlahAnggota = 0;
 boolean adaSama = false;
 StringBuffer tmp_buff = new StringBuffer();
 for(int i =0;i<=(jmlHimpunanA-1);i++){
 for(int j=0;j<=(jmlRelasi-1);j++){
if(HimpunanA[i].equals(HimpunanAsal[j])){
 jumlahAnggota++;
 }
 }
 }
for(int i = 0;i<=(jmlRelasi-1);i++){
 for(int j=i+1;j<=(jmlRelasi-1);j++){
 if(HimpunanAsal[i].equals(HimpunanAsal[j])){
 adaSama=true;
 }
 }
 }
if(jumlahAnggota==jmlHimpunanA && adaSama == false){
 tmp_buff.append("Relasi yang diInput adalah Fungsi\n");
 jumlahAnggota = 0;
 for(int i =0;i<=(jmlHimpunanB-1);i++){
 for(int j=0;j<=(jmlRelasi-1);j++){
if(HimpunanB[i].equals(HimpunanRelasi[j])){
 jumlahAnggota++;
 }
 }
 }
for(int i = 0;i<=(jmlRelasi-1);i++){
 for(int j=i+1;j<=(jmlRelasi-1);j++){
 if(HimpunanRelasi[i].equals(HimpunanRelasi[j])){
 adaSama=true;
 }
 }
 }
 if(jumlahAnggota==jmlHimpunanB && adaSama == false){
 tmp_buff.append("Fungsi Yang Diinput Adalah Fungsi satu-satu\n");
 satu2= true;
 }
 return tmp_buff.toString();
 }else {
 return "Relasi yang di input Bukan Fungsi hanya relasi biasa\n";
 }
 }
public String cekInvers(){
 StringBuffer strbuff = new StringBuffer();
 if(satu2){
 strbuff.append("Fungsi Inversnya Adalah : \n");
 strbuff.append("Daerah Domain = { ");
 for(int i=0;i<=jmlHimpunanA-1;i++){
 strbuff.append(HimpunanB[i]+" ");
 }
 strbuff.append("}\n");
 strbuff.append("Daerah Kodomain { ");
 for(int i=0;i<=jmlHimpunanB-1;i++){
 strbuff.append(HimpunanA[i]+ " ");
 }
 strbuff.append("}\n");
 strbuff.append("Daerah range adalah : { ");
 for(int i= 0;i<= jmlRelasi-1;i++){
 boolean adaSama=false;
 for (int j = i+1;j<=jmlRelasi-1;j++){
 if(HimpunanAsal[i].equals(HimpunanAsal[j]))
 adaSama=true;
 }
 if(adaSama==false){strbuff.append(HimpunanAsal[i]+" ");}
 }
 strbuff.append("}\n");
}
 return strbuff.toString();
 }
 public void cetakRelasi(){
 //fungsi ini berfungsi untuk menampilkan
 // hasil relasi pada kotak dialog
 StringBuffer strbuff = new StringBuffer();
 strbuff.append("Daerah Domain : { ");
 for(int i=0;i<=jmlHimpunanA-1;i++){
 strbuff.append(HimpunanA[i]+" ");
 }
 strbuff.append("}\n");
strbuff.append("Daerah Kodomain : { ");
 for(int i=0;i<=jmlHimpunanB-1;i++){
 strbuff.append(HimpunanB[i]+ " ");
 }
 strbuff.append("}\n");
 strbuff.append("Daerah range adalah : { ");
 for(int i= 0;i<= jmlRelasi-1;i++){
 boolean adaSama=false;
 for (int j = i+1;j<=jmlRelasi-1;j++){
 if(HimpunanRelasi[i].equals(HimpunanRelasi[j])){
 adaSama=true;
 }
 }
 if(adaSama==false){strbuff.append(HimpunanRelasi[i]+" ");}
 }
 strbuff.append("}\n");
JOptionPane.showMessageDialog(null, strbuff.toString()+cekFungsi()+cekInvers()+
 "", "Fungsi", JOptionPane.INFORMATION_MESSAGE);
 }
 public static void main(String args[]){
 FungsiInvers func = new FungsiInvers();
 func.inputAnggota();
 func.inputRelasi();
 func.cetakRelasi();
 }
 }

OUTPUT PROGRAM :

Masukkan Jumlah Anggota

Anggota-Anggota Himpunan A

Masukkan anggota-anggota untuk himpunan A

Anggota Himpunan B

Masukkan anggota-anggota untuk himpunan B

Relasi yang diinginkan

Masukkan jumlah relasi yang diinginkan

Hasil Fungsi dan Fungsi Invers

 
4 Comments

Posted by on 25 December 2010 in Program-Program Java

 

4 responses to “Program Fungsi Invers Sederhana dengan Java

  1. Chil

    19 January 2012 at 10:49 pm

    kok yg pnggir kpotong? jd g kbca,,

     
    • damaisubimawanto

      21 January 2012 at 12:21 am

      iya, soalnya kolom page nya terlalu sempit.. nnti akan saya perbaiki..

      coba coding nya dicopas ke notepad, nnti akan kelihatan semuanya tanpa terpotong..😀

      ::EDITED::

      sekarang sudah diperbaiki, sudah bisa discroll ke kanan-kiri dan atas-bawah, jadi bisa terlihat semua..😀

       
  2. fazeri

    14 March 2012 at 10:25 pm

    kalau code contoh dan penjelasan algoritma apriori dengan java?🙂

     
    • damaisubimawanto

      19 March 2012 at 6:04 pm

      saya blom mempelajari algoritma apriori, jadi saya kurang tau dgn algoritma tsb..😀

       

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

 
%d bloggers like this: