import java.util.Scanner;
public class Fungsi{
//Mendeklarasikan Attribut (variabel) yang digunakan dalam program
int[] HimpunanA;
int[] HimpunanB;
int[] HimpunanRelasi;
int[] HimpunanAsal;
int jmlHimpunanA, jmlHimpunanB, jmlRelasi;
Scanner input = new Scanner(System.in);
//Method utama dari kelas ini
//Method main akan dibaca pertama
public static void main (String args[]){
Fungsi madhun = new Fungsi();
madhun.inputAnggota();
madhun.cetakHimpunan();
madhun.inputRelasi();
madhun.cekFungsi();
madhun.cetakRelasi();
}
public void inputAnggota(){
System.out.print("Masukkan Jumlah Himpunan A = ");
jmlHimpunanA = input.nextInt();
/*
Integer.parseInt digunakan untuk mengubah inputan
yang kita input ke tipe data integer.
Kelas baca keyboard hanya mengembalikan nilai String.
Oleh karena itu harus dirubah kedalam tipe data Integer
catatan : file BacaKeyboard Buatan Sendiri
*/
HimpunanA = new int[jmlHimpunanA];
for(int i = 0; i<=(jmlHimpunanA-1);i++){
System.out.print("Himpunan A yang ke "+ (i+1)+" : ");
HimpunanA[i] = input.nextInt();
}
/*
Blok sintaks diatas digunakan untuk menginput angggota himpunan A
Anggota himpunan tersebut harus dirubah terlebih dahulu ke integer
karena saya menggunakan tipe data integer. Nilai dari anggota himpunan tersebut
disimpan pada attribut (variabel) HimpunanA secara array (berindeks)
*/
System.out.print("Masukkan Jumlah Himpunan B = ");
jmlHimpunanB = input.nextInt();
HimpunanB = new int [jmlHimpunanB];
for(int i = 0; i<=(jmlHimpunanB-1); i++){
System.out.print("Himpunan B yang ke "+ (i+1) +" : ");
HimpunanB[i] = input.nextInt();
}
}
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("} ");
/*
Blok sintaks diatas digunakan untuk mencetak anggota himpunan A
*/
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("Masukkan Jumlah Relasi yang Terjadi : ");
jmlRelasi = input.nextInt();
}while(jmlRelasi>jmlRelasiMaks);
/*
Blok sintak do dibuat untuk mengecek bahwa jumlah relasi harus
lebih kecil atau sama dengan jumlah relasi maksimalnya.
Jika lebih besar maka akan terus melakukan looping sampai
inputan lebih kecil dari 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]; //Menampung sementara inputan untuk daerah Asal
int[] temp2 = new int[jmlRelasi]; //Menampung sementara Inputan untuk daerah Tujuan
boolean SamaA = false; //Untuk mengecek apakah inputan untuk nilai Asal Ada di Himp A
boolean SamaB = false; // Untuk mengecek apakah inputan untuk nilai Tujuan ada di Himp B
System.out.println("Relasi ke "+(i+1)+" : ");
do{
System.out.print("Masukkan Asal A : ");
temp[i] = input.nextInt();
System.out.print("Masukkan Tujuan B : ");
temp2[i] = input.nextInt();
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(){
/*
Untuk mengecek suatu relasi atau tidak maka kita perlu memeriksa
apakah anggota himpunan A ada semua di himpunan temp(Asal)
caranya adalah di bawah ini :
*/
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++;
}
}
}
/*
Digunakan untuk mengecek apakah semua anggota Himpunan A ada di temp.
*/
for(int i=0; i<=(jmlRelasi-1); i++){
for(int j=i+1; j<=(jmlRelasi-1); j++){
if(HimpunanAsal[i]==HimpunanAsal[j]){
adaSama=true;
}
}
}
/*
Untuk mengecek apakah anggota himpunan asal atau temp ada yang sama atau tidak
jika ada yang sama maka variabel adaSama bernilai True.
*/
if(jumlahAnggota==jmlHimpunanA && adaSama == false){
System.out.println("Relasi yang di Input adalah Fungsi");
}else {
System.out.println("Relasi yang di Input Bukan Fungsi hanya relasi biasa" +jumlahAnggota+ adaSama);
}
}
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("}");
}
}
Like this:
Like Loading...
Related