• Tidak ada hasil yang ditemukan

PRAKTIKUM ALGORITMA & STRUKTUR DATA TIF - G

N/A
N/A
Rafi Ananta Nugraha

Academic year: 2024

Membagikan "PRAKTIKUM ALGORITMA & STRUKTUR DATA TIF - G"

Copied!
10
0
0

Teks penuh

(1)

PRAKTIKUM ALGORITMA & STRUKTUR DATA TIF - G

BAB NAMA

: :

1

Rafi Ananta Nugraha

NIM : 235150200111035

ASISTEN : RAKHA ALIF ATHALLAH

GRATIA YUDIKA MORADO SILALAHI TGL PRAKTIKUM

TGL PENGUMPULAN : :

Jumat, 8 Maret 2024 Kamis, 14 Maret 2024

1. Soal 3.9 Latihan

Terdapat array dengan data 30, 87, 90, 3, 1, 50, 23, 4, 25, 23, 40, 35, 47, 2, 33.

1. Buatlah Kodenya dalam bahasa Java.

2. Jalankan dan pastikan tidak ada errornya.

Kode

public class modulasd {

public static void main(String[] args) {

int [] rak = {30, 87, 90, 3, 1, 50, 23, 4, 25, 23, 40, 35, 47, 2, 33};

for (int i = 0; i < rak.length; i++) { System.out.print(rak[i]+" ");

} } }

Output

(2)

Penjelasan Kode

Dibuat array bertipe integer yang data didalamnya langsung diisikan didalam program sepeerti pada soal tanpa inputan user, lalu di tampilkan dengan looping untuk i dari 0 – 14(dari 0 sampai kurang dari Panjang array)

2. Soal 3.10

Berdasar latihan yang telah anda buat maka:

1. Urutkan data pada array tersebut.

2. Hitung rata-rata data tersebut.

3. Hitung nilai maksimal dan minimalnya.

4. Tampilkan data yang bilangan ganjil saja dan prima saja.

5. Dari data tersebut, buatlah array 2 dimensi dengan format 3 baris dan 5 kolom.

(ini buat per nomer 1 method aja) Kode

public class ModulASD {

public static void main(String[] args) {

int [] data = {30, 87, 90, 3, 1, 50, 23, 4, 25, 23, 40, 35, 47, 2, 33};

Array arr = new Array();

System.out.print("sebelum : ");

for (int i = 0; i < data.length; i++) { System.out.print(data[i]+" ");}

arr.sort(data);

System.out.println();

System.out.print("setelah : ");

for (int i = 0; i < data.length ; i++) { System.out.print(data[i]+ " ");

}

double rerata = arr.ratarata(data);

System.out.println();

System.out.printf("%s%.2f","Rata-rata : ", rerata);

System.out.println();

int []maxmin=arr.maxmin(data);

System.out.println("Bilangan terbesar : "+

maxmin[0]);

System.out.println("Bilangan terkecil : "+

maxmin[1]);

System.out.print("Bilangan ganjil : ");

for (int ganjil : data){

if(arr.Ganjil(ganjil)) {

System.out.print(ganjil + " ");

}

(3)

}

System.out.println();

System.out.print("Bilangan prima : ");

for (int prima : data) { if(arr.Prima(prima)){

System.out.print(prima + " ");

} }

System.out.println();

System.out.println("Array 2D dengan 3 baris 5 kolom : ");

int[][]result=arr.arrayBaru2D(data);

for ( int i = 0; i < 3; i++) { for (int j = 0; j <5 ; j++) {

System.out.printf("%-5d",result[i][j]);

}

System.out.println();

} } }

class Array {

public void sort(int[] rak) { int a = rak.length;

for (int i = 0; i <a-1 ; i++) {

for (int j = 0; j < a-i-1; j++) { if (rak[j]>rak[j+1]){

int ganti = rak[j];

rak[j]=rak[j+1];

rak[j+1]= ganti;

} } } }

public double ratarata(int[] rak) { double total = 0;

for (int i = 0; i < rak.length; i++) { total += rak[i];

}

return total / rak.length;

}

public int[] maxmin(int[] rak) {

int terbesar = rak[rak.length - 1];

int terkecil = rak[0];

int[] hasil = {terbesar, terkecil};

(4)

return hasil;

}

public static boolean Ganjil(int x) { for (int i = 0; i < x; i++) { if (x% 2 != 0) {

return true;

} }

return false;

}

public static boolean Prima(int y){

if(y<=1){

return false;

}

for (int i = 2; i*i<=y ; i++) { if(y%i==0){

return false;

} }

return true;

}

public static int[][] arrayBaru2D(int[] rak){

int [][]array2D = new int [3][5];

int index=0;

for (int i = 0; i <3 ; i++) { for (int j = 0; j <5 ; j++) { array2D[i][j]=rak[index];

index++;

} }

return array2D;

} }

Output

(5)

Penjelasan Kode

Dibuat array bertipe integer yang data didalamnya langsung diisikan didalam program sepeerti pada soal tanpa inputan user,

Didalam class array memiliki beberapa method anatara lain sort, ratarata,maxmin, ganjil, prima dan array 2D baru

Didalam method sort disini digunakan algoritma bubble sort menggunakan looping, jadi jika data setelahnya lebih besar maka posisi akan ditukar.

Didalam method rata rata, data dari index 0 sampai index terakhir akan dijumlahkan lalu dibagi dengan Panjang array

Didalam method max min akan mengembalikan nilai didalam index terakhir untuk nilai terbesar karena sudah di sorting sebelumnya, dan sebaliknya untuk nilai min

Untuk method ganjil akan memerika apakah data ganjil atau tidak dengan modulus 2 jika tidak bersisa 0 maka akan mengembalikan true(ganjil)

Untuk method prima juga akan diperiksa dengan cara looping dan membagi data (y) dengan 2 sampai deengan akar y. dan jika angka diantara 2-akar y dapat membagi maka akan direturn false (bukan prima). Looping dilakukan dari 2- akar y dikakeranakan factor terbesar dari (Y) adalah akar y itu sendiri maka dilakukan pengecekan sampai akar y untuk meringankan penghitungan

Dalam method array2d akan dibuat array2d baru yang nantinya akan dimasukkan data satu persatu dari array awal dengan nested loop.

lalu di tampilkan dengan looping untuk i dari 0 - 14

3. Soal 4.10 Tugas 1

Modifikasilah program Latihan di atas sehingga SLL dapat menampung sembarang object. Untuk itu anda perlu membuat class baru bernama Mahasiswa dengan data dan method sebagai berikut :

Mahasiswa

(6)

String nim String nama double ipk

Constructor Mahasiswa double getIpk

String getNim String getNama

Kode

package modulasd;

class Node {

private Mahasiswa data;

private Node next;

public Node(Mahasiswa data) { this.data = data;

this.next = null;

}

public Mahasiswa getData() { return data;

}

public Node getNext() { return next;

}

public void setNext(Node next) { this.next = next;

} }

class SLL {

private Node head, tail;

int size = 0;

void inisialisasi() { head = null;

tail = null;

}

boolean isEmpty() { return (size == 0);

}

int size() { return size;

}

(7)

void addFirst(Node input) { if (isEmpty()) {

head = input;

tail = input;

} else {

input.setNext(head);

head = input;

}

size++;

}

void addLast(Node input) { if (isEmpty()) {

head = input;

tail = input;

} else {

tail.setNext(input);

tail = input;

}

size++;

}

public static void main(String[] args) { SLL linkedlist = new SLL();

Mahasiswa m1 = new Mahasiswa("235150200111035",

"Rafi", 3.8);

Mahasiswa m2 = new Mahasiswa("235150210202000",

"huda", 2.8);

Mahasiswa m3 = new Mahasiswa("231481884999288",

"rizky", 5.0);

Node node1 = new Node(m1);

Node node2 = new Node(m2);

Node node3 = new Node(m3);

linkedlist.addFirst(node1);

linkedlist.addLast(node2);

linkedlist.addLast(node3);

Node current = linkedlist.head;

while (current != null) {

Mahasiswa dataMahasiswa = current.getData();

System.out.println("NIM: " + dataMahasiswa.getNim() + " Nama: " + dataMahasiswa.getNama() + " IPK: " + dataMahasiswa.getIpk());

current = current.getNext();

} } }

(8)

class Mahasiswa {

private String nim;

private String nama;

private double ipk;

public Mahasiswa(String nim, String nama, double ipk) { this.nim=nim;

this.nama=nama;

this.ipk=ipk;

}

public double getIpk(){

return this.ipk;

}

public String getNim(){

return this.nim;

}

public String getNama(){

return this.nama;

} }

Output

(9)

Penjelasan Kode

Program bertujuan untuk membuat singlelinkedlist dengan node yang dapat menerima data berupa nama mahasiswa, Nim dan ipk. Dengan algoritma yang sama dengan singlelinkedlist, dalam program ini hanya terletak perbedaan pada node saja.

Jadi didalam program dibuat class mahasiswa.

didalam class mahasiswa terdapat variable nim nama dan ipk, kemudian terdapat constructor untuk class mahasiswa dengan parameter nim nama dan ipk, dan getter.

Dalam pembuatan node terdapat constructor node dengan parameter Mahasiswa data(Mahasiswa merujuk pada class mahasiswa). Selain hal tersebut pembuatan node sama seperti linkedlist pada umumnya.

Dalam class singlelinkedist terdapat beberapa method seperti addlast addfisrt dan isempty

Didalam main Membuat 3 objek baru dengan menggunakan konstruktor yang menerima tiga parameter: NIM, nama, dan IPK. Informasi dari setiap objek

Mahasiswa dicetak diambil menggunakan metode getNim(), getNama(), dan getIpk().

Mendeklarasi melalui setiap node dalam linked list SLL, dimulai dari kepala hingga node terakhir, dan mencetak informasi mahasiswa yang disimpan dalam setiap node.

Setiap iterasi mengambil objek Mahasiswa dari node saat ini dan mencetak NIM, nama, dan IPK menggunakan metode getNim(), getNama(), dan getIpk().

(10)

Referensi

Dokumen terkait

Deklarasi method bernama sisipDataUrut yang tidak mengembalikan nilai dan bersifat public serta memiliki parameter data bertipe integer. Instansiasi objek bernama x dari kelas Node