Blogger Widgets

Wednesday, November 27, 2013

program fungsi

import javax.swing.*;
public class fungsi {
 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(){
 StringBuilder sbuff = new StringBuilder();
 //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]).append(" ");
 }
 sbuff.append("} \n");
 sbuff.append("Anggota Himpunan B = { ");
 for (int i = 0;i<=(jmlHimpunanB-1);i++){
 sbuff.append(HimpunanB[i]).append(" ");
 }
 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;
 StringBuilder tmp_buff = new StringBuilder();
 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(){
 StringBuilder strbuff = new StringBuilder();
 if(satu2){
 strbuff.append("Fungsi Inversnya Adalah : \n");
 strbuff.append("Daerah Domain = { ");
 for(int i=0;i<=jmlHimpunanA-1;i++){
 strbuff.append(HimpunanB[i]).append(" ");
 }
 strbuff.append("}\n");
 strbuff.append("Daerah Kodomain { ");
 for(int i=0;i<=jmlHimpunanB-1;i++){
 strbuff.append(HimpunanA[i]).append(" ");
 }
 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]).append(" ");}
 }
 strbuff.append("}\n");
}
 return strbuff.toString();
 }
 public void cetakRelasi(){
 StringBuilder strbuff = new StringBuilder();
 strbuff.append("Daerah Domain : { ");
 for(int i=0;i<=jmlHimpunanA-1;i++){
 strbuff.append(HimpunanA[i]).append(" ");
 }
 strbuff.append("}\n");
strbuff.append("Daerah Kodomain : { ");
 for(int i=0;i<=jmlHimpunanB-1;i++){
 strbuff.append(HimpunanB[i]).append(" ");
 }
 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]).append(" ");}
 }
 strbuff.append("}\n");
JOptionPane.showMessageDialog(null, strbuff.toString()+cekFungsi()+cekInvers()+
 "", "Fungsi", JOptionPane.INFORMATION_MESSAGE);
 }
 public static void main(String args[]){
 fungsi func = new fungsi();
 func.inputAnggota();
 func.inputRelasi();
 func.cetakRelasi();
 }
 }

0 comments:

Post a Comment