import javax.swing.*;
public class Relasi {
String [] HimpunanA;
String [] HimpunanB;
String [] HimpunanRelasi;
String [] HimpunanAsal;
int jmlHimpunanA, jmlHimpunanB, jmlRelasi;
public void inputAnggota(){
String strA = JOptionPane.showInputDialog(null, "Masukkan Jumlah Himpunan A !", "Fungsi"
+" ", JOptionPane.QUESTION_MESSAGE);
jmlHimpunanA = Integer.parseInt(strA);
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);
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();
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");
return sbuff.toString();
}
public void inputRelasi(){
int jmlRelasiMaks = jmlHimpunanA * jmlHimpunanB;
do{
String relasi = JOptionPane.showInputDialog(null, "Relasi Maksimal adalah "+jmlRelasiMaks+ ""+
"\nMasukkan 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];
String[] temp2 = new String[jmlRelasi];
boolean SamaA = false;
boolean SamaB = false;
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);
for(int j=0; j<=(jmlHimpunanA-1); j++){
if(temp[i].equals(HimpunanA[j])){
SamaA=true;
}
}
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 di Himpunan"+
"A atau B", "Fungsi", JOptionPane.ERROR_MESSAGE);
}
if(SamaA==true && SamaB==true){
HimpunanRelasi[i]=temp2[i];
HimpunanAsal[i]=temp[i];
}
}while(SamaA==false || SamaB==false);
}
}
public String cekFungsi(){
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].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){
return "Relasi yang Diinput adalah Fungsi\n";
}else {
return "Relasi yang Diinput Bukan Fungsi namun hanya Relasi Biasa\n";
}
}
public void cetakRelasi(){
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 : { ");
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()+
"", "Fungsi", JOptionPane.INFORMATION_MESSAGE);
}
public static void main(String args[]){
Relasi test = new Relasi();
test.inputAnggota();
test.inputRelasi();
test.cetakRelasi();
}
}
0 komentar:
Posting Komentar