GANJIL
DATA
Disusun
oleh:
INFORMATIKA
UNIVERSITAS UDAYANA
JAWABAN
Implementasi dilakukan dengan menggunakan bahasa c.
#include <stdio.h>
#include <stdlib.h>
struct data {
int key;
int IP;
};
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"};
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 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().
struct data{int
key; int IP;
};
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
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