Sabtu, 18 Januari 2014

LA MATIF PERT 4 (Fungsi Invers)

import java.util.*;

public class FungsiInvers {
       int[] HimpunanA;
       int[] HimpunanB;
       int[] HimpunanRelasi;
       int[] HimpunanAsal;
       int jmlHimpunanA, jmlHimpunanB, jmlRelasi;
       boolean satu2 ;
 
  Scanner input = new Scanner(System.in);

       public static void main(String args[]){
             FungsiInvers aaa = new FungsiInvers();
             aaa.inputAnggota();
             aaa.cetakHimpunan();
             aaa.inputRelasi();
             aaa.cekFungsi();
             aaa.cetakRelasi();
       }
       public void inputAnggota(){
              System.out.print("Masukkan Jumlah Himpunan A = ");
              jmlHimpunanA =Integer.parseInt(input.next());

              HimpunanA=new int[jmlHimpunanA];
              for(int i = 0;i<= (jmlHimpunanA-1);i++){
                      System.out.print("Himpunan A yang ke "+ (i+1)+" : ");
                      HimpunanA[i]=Integer.parseInt(input.next());
              }

              System.out.print("Masukkan Jumlah Himpunan B = ");
              jmlHimpunanB = Integer.parseInt(input.next());
              HimpunanB = new int[jmlHimpunanB];
              for(int i = 0;i<= (jmlHimpunanB-1);i++){
                      System.out.print("Himpunan B yang ke "+ (i+1) +" : ");
                      HimpunanB[i]=Integer.parseInt(input.next());
              }

       }
       public void cetakHimpunan(){
              System.out.print("Anggota Himpunan A = { ");
              for (int i = 0;i<=(jmlHimpunanA-1);i++){
                  System.out.print(HimpunanA[i]+ " ");
              }
              System.out.println("} ");

              System.out.print("Anggota Himpunan B = { ");
              for (int i = 0;i<=(jmlHimpunanB-1);i++){
                  System.out.print(HimpunanB[i]+ " ");
              }
              System.out.println("} ");
       }
       public void inputRelasi(){
              int jmlRelasiMaks = jmlHimpunanA * jmlHimpunanB;
              System.out.println("Relasi Maksimal Adalah "+jmlRelasiMaks);
              System.out.print(" ");

              do{
                  System.out.print("Masukan Jumlah Relasi yang Terjadi : ");
                  jmlRelasi = Integer.parseInt(input.next());
              }while(jmlRelasi>jmlRelasiMaks);

              HimpunanRelasi = new int[jmlRelasi];
              HimpunanAsal = new int[jmlRelasi];
              System.out.println("Masukkan Relasi yang Terjadi :");
              for(int i=0; i<=(jmlRelasi-1);i++){

                 int[] temp=new int[jmlRelasi];
                 int[] temp2 = new int[jmlRelasi];
                 boolean SamaA = false;
                 boolean SamaB = false;

                 System.out.println("Relasi ke "+(i+1)+" : ");
                 do{
                    System.out.print("Masukkan Asal A : ");
                    temp[i]=Integer.parseInt(input.next());
                    System.out.print("Masukkan Tujuan B: ");
                    temp2[i]=Integer.parseInt(input.next());

                    for (int j= 0; j<=(jmlHimpunanA-1);j++){
                        if(temp[i]==HimpunanA[j]){
                           SamaA=true;
                        }
                    }

                    for (int k= 0; k<=jmlHimpunanB-1;k++){
                        if(temp2[i]==HimpunanB[k]){
                           SamaB=true;
                        }
                    }
                    if(SamaA==false || SamaB==false){
                        System.out.println("Anggota Himpunan Tidak terdapat dihimpunan A atau B");
                    }

                   if(SamaA==true && SamaB==true){
                        HimpunanRelasi[i]=temp2[i];
                        HimpunanAsal[i]=temp[i];
                    }

                 }while(SamaA==false || SamaB==false);
                 }
        }
        public void cekFungsi(){
               satu2 = false;
               int jumlahAnggota = 0;
               boolean adaSama = false;

               for(int i =0;i<=(jmlHimpunanA-1);i++){
                       for(int j=0;j<=(jmlRelasi-1);j++){

                            if(HimpunanA[i]==HimpunanAsal[j]){
                                jumlahAnggota++;
                            }
                       }
               }


               for(int i = 0;i<=(jmlRelasi-1);i++){
                       for(int j=i+1;j<=(jmlRelasi-1);j++){
                        if(HimpunanAsal[i]==HimpunanAsal[j]){
                           adaSama=true;
                           }
                       }
               }

               if(jumlahAnggota==jmlHimpunanA && adaSama == false){
                System.out.println("Relasi yang diInput adalah Fungsi");
                    jumlahAnggota = 0;
                    for(int i =0;i<=(jmlHimpunanB-1);i++){
                       for(int j=0;j<=(jmlRelasi-1);j++){

                            if(HimpunanB[i]==HimpunanRelasi[j]){
                                jumlahAnggota++;
                            }
                       }
                    }

                    for(int i = 0;i<=(jmlRelasi-1);i++){
                       for(int j=i+1;j<=(jmlRelasi-1);j++){
                        if(HimpunanRelasi[i]==HimpunanRelasi[j]){
                           adaSama=true;
                           }
                       }
                    }
                     if(jumlahAnggota==jmlHimpunanB && adaSama == false){
                            System.out.println("Fungsi Yang Diinput Adalah Fungsi satu-satu");
                            satu2= true;
                     }

               }else {
                System.out.println("Relasi yang di input Bukan Fungsi hanya relasi biasa"+ jumlahAnggota);
               }
        }

        public void cetakRelasi(){
               System.out.print("Daerah Domain = { ");
              for(int i=0;i<=jmlHimpunanA-1;i++){
                System.out.print(HimpunanA[i]+" ");
              }
              System.out.println("}");

              System.out.print("Daerah Kodomain { ");
              for(int i=0;i<=jmlHimpunanB-1;i++){
                System.out.print(HimpunanB[i]+ " ");
              }
              System.out.println("}");
              System.out.print("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]==HimpunanRelasi[j])
                           adaSama=true;
                      }
                   if(adaSama==false)System.out.print(HimpunanRelasi[i]+" ");
              }
              System.out.println("}");

              if(satu2){
                  System.out.println("Fungsi Inversnya Adalah : ");
                  System.out.print("Daerah Domain = { ");
                  for(int i=0;i<=jmlHimpunanA-1;i++){
                          System.out.print(HimpunanB[i]+" ");
                  }
                  System.out.println("}");
                  System.out.print("Daerah Kodomain { ");
                  for(int i=0;i<=jmlHimpunanB-1;i++){
                          System.out.print(HimpunanA[i]+ " ");
                  }
                  System.out.println("}");
                  System.out.print("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]==HimpunanAsal[j])
                           adaSama=true;
                      }
                   if(adaSama==false)System.out.print(HimpunanAsal[i]+" ");
                   }
                   System.out.println("}");
              }
        }

}

Tidak ada komentar:

Posting Komentar