Nama : Zaenal Arifin
NPM : 58410812
Kelas : 2ia13
Link Kelompok : http://adji-dcc.blogspot.com/
Script :
package java
aplication4;
import javax.swing.*;
public class Main {
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[]){
Main func = new Main();
func.inputAnggota();
func.inputRelasi();
func.cetakRelasi();
}
}import javax.swing.*;
public class Main {
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[]){
Main func = new Main();
func.inputAnggota();
func.inputRelasi();
func.cetakRelasi();
}
Output :
Penjelasan Program :
Sebelumnya
saya akan menjelaskan program yang saya
buat saya akan menjelaskan apa yang di maksud dengan fungsi invers.? Misalkan f
adalah suatu fungsi dari himpunanA ke him- punanB yang dinyatakan dalam bentuk
pasangan berurutan {(a,b) |aA, b B}. Suatu relasi dari himpunan B ke himpunan
A yang anggota-anggotanya adalah pasangan berurutan (b, a)
denganb B,a A dinamakan invers (kebalikan) fungsi f . Invers darif dinyatakan denganf–1. Dengan kata lain, invers suatu fungsif didefinisikan sebagai berikut.
Jika fungsif :AB dinyatakan dengan pasangan berurutan
f = {(a, b)| a A, b B} maka invers dari fungsi fadalah
f–1 :B A yang ditentukan dengan pasangan berurutan
f–1 = {(b,a) |b B,a A}..
A yang anggota-anggotanya adalah pasangan berurutan (b, a)
denganb B,a A dinamakan invers (kebalikan) fungsi f . Invers darif dinyatakan denganf–1. Dengan kata lain, invers suatu fungsif didefinisikan sebagai berikut.
Jika fungsif :AB dinyatakan dengan pasangan berurutan
f = {(a, b)| a A, b B} maka invers dari fungsi fadalah
f–1 :B A yang ditentukan dengan pasangan berurutan
f–1 = {(b,a) |b B,a A}..
pada
program kali ini saya akan membuat program fungsi invers .
Pertama
kita buat codingan program seperti yang ada di listing.Jika program yang kita
buat sudah benar saat di run akan muncul out put seperti yang ada di bawah
yaitu masukan jumlah himpunan A,saya memasukan 3 lalu kita isi satu persatu
yaitu yang saya masukan 1,2,3
Setelah
itu muncul output untuk B,saya juga memasukan jumlah himpunan 3 dan saya isi
dengan 4,5,6.Setelah itu muncul output relasi maksimal yaitu 9.Dan saya
memasukan jumlah relasi yang terjadi yaitu 3.
Setelah semua data saya
masukkan akhir nya muncul lah out put fungsi yang terletak paling bawah yang
berisikan daerah domain daerah kodomain,daerah range lalu relasi yang di
input,fungsi yang di input dan fungsi invers nya






