Anda di halaman 1dari 7

TUGAS UTS ESAY

GANJIL

DATA

Disusun
oleh:

I PUTU TEDDY DHARMA WIJAYA (2108561077)

INFORMATIKA
UNIVERSITAS UDAYANA
JAWABAN
Implementasi dilakukan dengan menggunakan bahasa c.

#include <stdio.h>
#include <stdlib.h>

struct data {
int key;
int IP;
};

struct data *array;

int kapasitas = 10;


int size = 0;

char* nama[10] = {"Widya", "Anggi", "Nyoman", "Ayu", "Yuda", "Eka", "Kartika", "Mahendra",
"Putu", "Salsa"};

char* tempat[10] = {"Kelas AS", "Kelas BD", "Kelas CM", "Kelas DG", "Kelas EQ", "Gedung
Informatika", "Gedung Matematika", "Gedung Fisika", "Gedung Kimia", "Gedung Biologi"};

int fungsiHash(int key) {


return (key % kapasitas);
}

void init_array() {
array = (struct data *)malloc(kapasitas * sizeof(struct data));
for(int i = 0; i < kapasitas; i++) {
array[i].key = 0;
array[i].IP = 0;
}
}

void insert(int key, int IP) {


int index = fungsiHash(key);
if(array[index].IP == 0) {
array[index].key = key;
array[index].IP = IP;
size++;
printf("\n Key (%d) Sudah Dimasukkan \n", key);
} else if(array[index].key == key) {
array[index].IP = IP;
}
}

void remove_data(int key) {


int index = fungsiHash(key);
if(array[index].IP == 0) {
printf("\nKey ini tidak ada\n");
} else {
array[index].key = 0;
array[index].IP = 0;
size--;
printf("\n Key (%d) sudah dihapus\n", key);
}
}

void display() {
int i;
for(i = 0; i < kapasitas; i++) {
if(array[i].IP == 0) {
printf("\nIndex ke-[%d]: \n", i);
} else {
int p = rand()%10;
printf("Key: %d | IP: %d | Nama User: %s | Letak Komputer: %s\n", array[i].key, array[i].IP,
nama[p], tempat[p]);
}
}
}

int main() {
int pilihan, key, IP, n;
int c = 0;
int p = rand()%10;
init_array();
int ulang;

do {
system("cls");
printf("\t\t\t ================================================\n");
printf("\t\t\t|| NAMA : I Putu Teddy Dharma Wijaya ||\n");
printf("\t\t\t|| NIM : 2108561077 ||\n");
printf("\t\t\t|| KELAS : D ||\n");
printf("\t\t\t||\t Tugas UTS ESAY ||\n ");
printf("\t\t\t ================================================\n");
printf("\n");
printf("--PROGRAM HASH IP--\n");
printf("1. Tambahkan Item ke Hash Table\n");
printf("2. Hapus Item dari Hash Table\n");
printf("3. Tampilkan Hash Table\n");
printf("4. Keluar\n");
printf("ketik Pilihan Anda: ");
scanf("%d", &pilihan);
if(pilihan == 1){
printf("ketik Key: ");
scanf("%d", &key);
printf("Masukkan IP (Tanpa Titik): ");
scanf("%d", &IP);
insert(key, IP);
}else if(pilihan == 2){
printf("ketik Key Untuk Dihapus: ");
scanf("%d", &key);
remove_data(key);
}else if(pilihan == 3){
system("cls");
display();
}else if(pilihan == 4){
printf("program akan keluar dan selesai\n");
exit(1);
}
printf("\n\tKembali Ke Menu? [1.Ya, 2. Tidak]: ");
scanf("%d", &ulang);
} while(ulang == 1);
return 0;
}
Penjelasan Program:
Ketika dieksekusi, program akan memanggil fungsi main yang berfungsi sebagai entry point
program.kemudian memanggil fungsi init_array untuk melakukan inisialisasi ADT, program
menginisialisasikan array tersebut dengan data yang telah disiapkan sebelumnya, yang dimana
memuat key dan IP, yang kemudian diproses oleh fungsi insert().

Adapun ADT yang digunakan didefinisikan sebagai berikut:

struct data{int
key; int IP;
};

struct data *array;

program akan menemui perulangan do while dengan memproses program sebanyak


minimal 1 kali dan bila user menginput 4 maka program akan selesai. Eksekusi program
tergantung dari inputan user dalam memilih menu pilihan pada program. Kemudian inputan
tersebut akan dicocokan pada penyeleksian kondisi if, else if dan else.

Menu utama pada program

a. Bila user memasukan nilai 1 pada inputan, maka program akan meminta user untuk
memasukkan data berupa key dan IP address, kemudian hasilnya akan digunakan
dalam pemanggilan fungsi insert(key, IP addres) yang menerima argumen yaitu key
dan IP address. Semua data ini (key dan IP addres) akan disimpan l dalam variabel
penampung sementara bertipe data ADT. Program lalu menghitung nilai index dari
informasi tersebut dengan cara memasukkan key ke dalam fungsi Hash. Fungsi Hash
(Hash Function) selanjutnya program akan melakukan proses checking apakah index
dengan nomor urut hash tersebut telah terisi atau belum.
Tampilan program ketika user menginputkan pilihan 1

Input 2 (Hapus Item dari Hash Table)


Jika user memasukan nilai 2, maka program akan memanggil fungsi remove_data yang
berfungsi untuk menghapus data pada key tertentu. Program kemudian menghitung
kembali hash dari key yang dimaksud, lalu mengecek apakah array urutan ke hash, berisi
atau tidak, bila key yang tersimpan sama dengan yang dimasukkan, maka akan diubah
nilainya menjadi NULL. Bila tidak , maka program akan menampilkan “key tidak ada”.

Tampilan program ketika user memilih menu 2 dan data pada key tersebut ada

Tampilan program ketika user memilih menu 2 dan data pada key tersebut tidak ada
b. Jika user memasukan inputan 3, maka program akan memanggil fungsi display yang
berfungsi untuk menampilkan semua data yang sudah ada di dalam key.

Tampilan program ketika user memilih menu 3 (display) dan belum ada data pada
key

Tampilan program ketika user memilih menu 3 (display) dan sudah ada data pada
key tertentu

c. Bila user memasukan nilai 4 pada input pilihan maka program akan menampilkan
perintah printf("program akan keluar dan selesai\n"); kemudian dengan fungsi exit yang
bernilai 1 akan membuat program terhenti.
Tampilan program ketika user memasukan nilai 4 pada input pilihan

Anda mungkin juga menyukai