You are on page 1of 25

TUGAS 04

PRAKTIKUM STRUKTUR DATA

DOSEN PENGAMPU:

Agariadne Dwinggo Samala, S.Kom., M.Pd.T

OLEH:

Nama : Ulfi Latifah


NIM : 19076075

PROGRAM STUDI PENDIDIKAN TEKNIK INFORMATIKA

JURUSAN TEKNIK ELEKTRONIKA

FAKULTAS TEKNIK

UNIVERSITAS NEGERI PADANG

2020
1. Prog1_Perpustakaan.cpp
a. SOURCE CODE
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>

//Latihan
//19076075-Ulfi Latifah
//Prak. Struktur Data #001 - TGS04
//tgl 19 Febuari 2020
//Program.cpp

struct databuku{
char judul[50], pengarang[50], penerbit[30],
tahun[10];
struct databuku *next;
struct databuku *prev;
};

void biodata(){
printf("\t\t\t\t==================================="
);
printf("\n\t\t\t\tNama \t\t : Ulfi Latifah");
printf("\n\t\t\t\tNIM \t\t : 19076075");
printf("\n\t\t\t\tNama Program \t : Data
Perpustakaan");
printf("\n\t\t\t\t==================================
=\n");
}

struct databuku *head, *tail;


int inputdata(){
struct databuku *tampung,*awal;
int a=0; char answer[2];
while(1){
awal= (struct databuku*)malloc(sizeof(struct
databuku));
fflush(stdin);
puts("Input Data Buku Baru\t: ");
printf("Masukkan Judul Buku\t: "); gets(awal-
>judul);
printf("Masukkan Pengarang\t: "); gets(awal-
>pengarang);
printf("Masukkan Penerbit\t: "); gets(awal-
>penerbit);
printf("Tahun Input Data\t: "); gets(awal-
>tahun);
puts(" ");
if(a==0){
awal->next=NULL;
awal->prev=NULL;
head=awal;
tampung=awal;
tail=awal;
}
else{
tampung->next=awal;
awal->next=NULL;
awal->prev=tampung;
tail=awal;
tampung=awal;
}
printf("Ada data lagi (Y/N): ");
scanf("%s",&answer);
if((strcmp(answer,"Y")==0)||(strcmp(answer,"y")==0))
{
a++;continue;
}
else if
((strcmp(answer,"N")==0)||(strcmp(answer,"n")==0))
break;
}
}

int hapusdata(){
struct databuku *hapus, *sebelum, *setelah;
char search[50];
if(head==NULL)
puts("List Belum Ada. Silahkan buat data!");
else{
fflush(stdin);
printf("Data yang akan dihapus? (judul): ");
gets(search);
hapus=head;
if(strcmp(hapus->judul,search)==0){
head=head->next;
free(hapus);
}
}
}

int tambahdata(){
struct databuku *baru;
int a=0; char answer[2];
while(1){
baru=(struct
databuku*)malloc(sizeof(databuku));
fflush(stdin);
puts("Input Data Buku Baru\t: ");
printf("Masukkan Judul Buku\t: "); gets(baru-
>judul);
printf("Masukkan Pengarang\t: "); gets(baru-
>pengarang);
printf("Masukkan Penerbit\t: "); gets(baru-
>penerbit);
printf("Tahun Input Data\t: "); gets(baru-
>tahun);
puts(" ");
if(a==0||a!=0){
baru->next=NULL;
tail->next=baru;
baru->prev=tail;
tail=baru;
}
printf("Ada data lagi (Y/N): ");
scanf("%s",&answer);

if((strcmp(answer,"Y")==0)||(strcmp(answer,"y")==0))
{
a++;continue;
}
else if
((strcmp(answer,"N")==0)||(strcmp(answer,"n")==0))
break;
}
}

int tampildata(){
struct databuku *tampil;
printf("\n======================================Mena
mpilkan
Perpustakaan======================================\n\n"
);
printf("============================================
=======================================================
=\n");
printf("|| \tJudul
Buku\t||\tPengarang\t||\tPenerbit\t||\tTahun\t||\n");
tampil=head;
while(tampil!=NULL){

printf("============================================
=======================================================
=\n");

printf("||\t%s\t||\t%s\t||\t%s\t||\t%s\t||\n",tampil
->judul,tampil->pengarang,tampil->penerbit,tampil-
>tahun);
tampil=tampil->next;
}
getch();
return 0;
}

int main(){
int pilih;
char z;
biodata();
printf("\n\n========================================
====== PROGRAM DATA PERPUSTAKAAN
============================================");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t
PROGRAM BY ULFI LATIFAH\t\t\t\t\t");
printf("\n\t\t\t\t\t\t~ ASSALAMUALAIKUM WR.WB
~\t\t\t\t\t");
printf("\n\t\t\t\t\t\t ~ WELCOME
~\t\t\t\t\t\t\t\t\t");
getch(); system("cls");

start:
system("cls");
printf("\n==========================================
========= PILIHAN MENU
====================================================");
printf("\n1. Input Data");
printf("\n2. Tambah Data");
printf("\n3. Hapus Data");
printf("\n4. Tampil List");
printf("\n5. Keluar");
printf("\n\nMasukkan pilihan anda : "); scanf("%i",
&pilih);

switch(pilih){
case 1: system("cls");inputdata();
tampildata(); puts(" "); break;
case 2: system("cls");tambahdata(); puts(" ");
break;
case 3: system("cls");goto hapus; break;
case 4: system("cls");tampildata(); break;
case 5: system("cls");goto exit; break;
}
goto start;
hapus:
tampildata();
puts("Apakah Anda ingin menghapus buku?
(Y/N)");fflush(stdin);scanf("%c",&z);
if(z=='Y'||z=='y'){
hapusdata();
tampildata();
}
else goto start;

exit:
puts("Anda akan keluar dari program");
puts("Silahkan klik tomblol enter pada
keyboard");
getch();
return 0;
}
b. SCREENSHOT PROGRAM
c. SCREENSHOT OUTPUT
d. PENJELASAN PROGRAM
 Baris 1-5 mendeklarasikan pemanggilan package dalam bahasa c
 Baris 7-11 mendeklarasikan keterangan data mahasiswa yang membuat
program
 Baris 13-17 mendeklarasikan struct bernama data buku berisikan tipe data
char array dengan variabel judul, pengarang, penerbit, dan tahun dan struct
data buku dengan pinter next dan prev untuk menyimpan link ke node
selanjutnya dan sebelumnya
 Baris 19-25 mendeklarasikan fungsi bernama biodata yang berisikan
biodata pembuat program dan nama program yang dibuat
 Baris 27 mendeklarasikan struct databuku untuk alokasi pointer
 Baris 29-62 mendeklarasikan fungsi untuk menginput data
 Baris 30 mendeklarasikan pointer pada fungsi inputdata()
 Baris 31 mendeklarasikan variabel a bernilai 0 bertipe data integer dan
variabel answer bertipe data char array
 Baris 32-61 mendeklarasikan fungsi while yang terdapat fungsi inputan
dari user lalu disimpan pada pointer awal. Serta fungsi if else yang akan
mengeksekusi sesuai dengan kondisi pada program yang sedang berjalan
 Baris 64-78 mendeklarasikan fungsi untuk menghapus data yang sudah
tersimpan
 Baris 65 mendeklarasikan pointer pada fungsi hapusdata()
 Baris 66 mendeklarasikan variabel search bertipe data char array
 Baris 67-77 mendeklarasikan fungsi if else yang akan mengeksekusi sesuai
dengan kondisi pada program yang sedang berjalan
 Baris 80-105 mendeklarasikan fungsi untuk menambah data yang telah di
input oleh user pada fungsi inputdata() sebelumnya
 Baris 81 mendeklarasikan pointer pada fungsi tambahdata()
 Baris 82 mendeklarasikan variabel a bernilai 0 bertipe data integer dan
variabel answer bertipe data char array
 Baris 83-104 mendeklarasikan fungsi while yang terdapat fungsi inputan
dari user lalu disimpan pada pointer baru. Serta fungsi if else yang akan
mengeksekusi sesuai dengan kondisi pada program yang sedang berjalan
 Baris 107-120 mendeklarasikan fungsi untuk menampilkan data yang
sudah tersimpat pada fungsi inputdata() dan tambahdata()
 Baris 108 mendeklarasikan pointer pada fungsi tampildata()
 Baris 109-117 mendeklarasikan tampilan atau output menyerupai tabel
 Baris 122-164 mendeklarasikan fungsi main merupakan fungsi pertama
yang di eksekusi oleh program
 Baris 123-124 mendeklarasikan variabel pilih bertipe data integer dan
variabel z bertipe data char
 Baris 125 mendeklarasikan pemanggilan fungsi biodata()
 Baris 126-129 mendeklarasikan kalimat dalam petik pada printf untuk
ditampilkan
 Baris 130 mendeklarasikan getch() untuk menghentikan program yang
sedang berjalan. Kemudian system(“cls”) untuk membersihkan layar
program yang telah dijalankan sebelumnya sehingga yang selanjutnya
tampil hanya program pada baris selanjutnya
 Baris 132 mendeklarasikan start untuk tempat pengeksekusian kembali
oleh fungsi goto.
 Baris 134-139 mendeklarasikan tampilan menu pada program
 Baris 140 mendeklarasikan inputan dari user lalu disimpan pada variabel
pilih
 Baris 142-148 mendeklarasikan fungsi switch case untuk mengeksekusi
fungsi sesuai dengan nilai inputan user yang disimpan pada variabel pilih
 Baris 150-157 mendeklarasikan hapus untuk tempat pengeksekusian
kembali oleh fungsi goto.
 Baris 159-161 mendeklarasikan exit untuk tempat pengeksekusian kembali
oleh fungsi goto.
 Baris 162 mendeklarasikan getch() untuk menghentikan program yang
sedang berjalan
 Baris 163 mendeklarasikan return untuk mengembalikan nilai int main ke
nilai 0
2. Prog2_Antrian.cpp
a. SOURCE CODE
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>

//Latihan
//19076075-Ulfi Latifah
//Prak. Struktur Data #002 - TGS04
//tgl 19 Febuari 2020
//Program.cpp

struct parkir{
char plat[50], merk[50], pemilik[30];
struct parkir *next;
struct parkir *prev;
}p;

void biodata(){
printf("\t\t\t\t====================================
=====");
printf("\n\t\t\t\tNama \t\t : Ulfi Latifah");
printf("\n\t\t\t\tNIM \t\t : 19076075");
printf("\n\t\t\t\tNama Program \t : Data Antrian
Kendaraan");
printf("\n\t\t\t\t==================================
=======\n");
}

struct parkir *head, *tail;

int inputdata(){
struct parkir *tampung,*awal;
int a=0; char answer[2];
while(1){
awal= (struct parkir*)malloc(sizeof(struct
parkir));
fflush(stdin);
puts("Input Data Kendaraan Masuk\t: ");
printf("Masukkan Plat Nomor Kendaraan\t: ");
gets(awal->plat);
printf("Masukkan Merk Kendaraan\t\t: ");
gets(awal->merk);
printf("Masukkan Nama Pemilik\t\t: ");
gets(awal->pemilik);
puts(" ");
if(a==0){
awal->next=NULL;
awal->prev=NULL;
head=awal;
tampung=awal;
tail=awal;
}
else{
tampung->next=awal;
awal->next=NULL;
awal->prev=tampung;
tail=awal;
tampung=awal;
}
printf("Ada data lagi (Y/N): ");
scanf("%s",&answer);

if((strcmp(answer,"Y")==0)||(strcmp(answer,"y")==0))
{
a++;continue;
}
else if
((strcmp(answer,"N")==0)||(strcmp(answer,"n")==0))
break;
}
}

int tampildata(){
struct parkir *tampil;
printf("\n======================================Mena
mpilkan Antrian
Mobil======================================\n\n");
printf("============================================
=======================================================
=\n");
printf("|| \tPlat Kendaraan\t||\tMerk
Kendaraan\t||\tNama Pemilik\t\t||\n");
tampil=head;
while(tampil!=NULL){

printf("============================================
=======================================================
=\n");

printf("||\t%s\t||\t%s\t\t||\t%s\t\t||\n",tampil-
>plat,tampil->merk,tampil->pemilik);
tampil=tampil->next;
}
getch();
return 0;
}

int hapusdata(){
struct parkir *hapus, *sebelum, *setelah;
char search[50];
if(head==NULL)
puts("List Belum Ada. Silahkan buat data!");
else{
fflush(stdin);
printf("Data yang akan dihapus? (plat nomor):
"); gets(search);
hapus=head;
if(strcmp(hapus->plat,search)==0){
head=head->next;
head->prev=NULL;
free(hapus);
}
else{
do{
sebelum=hapus;
hapus=hapus->next;
}
while(strcmp(hapus->plat,search)==0);
if (hapus->next=NULL){
sebelum->next=NULL;
tail=sebelum;
free(hapus);
}
else{
setelah=hapus->next;
sebelum->next=setelah;
setelah->prev=sebelum;
free(hapus);
}
}
}
}
int main (){
int pilih;
char z;
biodata();
printf("\n\n========================================
PROGRAM DATA ANTRIAN KENDARAAN
=======================================");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t
PROGRAM BY ULFI LATIFAH\t\t\t\t\t");
printf("\n\t\t\t\t\t\t~ ASSALAMUALAIKUM WR.WB
~\t\t\t\t\t");
printf("\n\t\t\t\t\t\t ~ WELCOME
~\t\t\t\t\t\t\t\t\t");
getch(); system("cls");

start:
system("cls");
printf("\n==========================================
========= PILIHAN MENU
====================================================");
printf("\n1. Input Data");
printf("\n2. Hapus Data");
printf("\n3. Tampil List");
printf("\n4. Keluar");
printf("\n\nMasukkan pilihan anda : "); scanf("%i",
&pilih);

switch(pilih){
case 1: system("cls");inputdata();
tampildata(); puts(" "); break;
case 2: system("cls");goto hapus; break;
case 3: system("cls");tampildata(); break;
case 4: system("cls");goto exit; break;
}
goto start;
hapus:
tampildata();
puts("Apakah Anda ingin menghapus data?
(Y/N)");fflush(stdin);scanf("%c",&z);
if(z=='Y'||z=='y'){
hapusdata();
tampildata();
}
else goto start;

exit:
puts("Anda akan keluar dari program");
puts("Silahkan klik tomblol enter pada
keyboard");
getch();
return 0;
}

b. SCREENSHOT PROGRAM
c. SCREENSHOT OUTPUT
d. PENJELASAN PROGRAM
 Baris 1-5 mendeklarasikan pemanggilan package dalam bahasa c
 Baris 7-11 mendeklarasikan keterangan data mahasiswa yang membuat
program
 Baris 13-17 mendeklarasikan struct bernama data buku berisikan tipe data
char array dengan variabel plat, merk, dan pemilik dan struct parkir
dengan pinter next dan prev untuk menyimpan link ke node selanjutnya
dan sebelumnya
 Baris 19-25 mendeklarasikan fungsi bernama biodata yang berisikan
biodata pembuat program dan nama program yang dibuat
 Baris 27 mendeklarasikan struct parkir untuk alokasi pointer
 Baris 29-61 mendeklarasikan fungsi untuk menginput data
 Baris 30 mendeklarasikan pointer pada fungsi inputdata()
 Baris 31 mendeklarasikan variabel a bernilai 0 bertipe data integer dan
variabel answer bertipe data char array
 Baris 32-60 mendeklarasikan fungsi while yang terdapat fungsi inputan
dari user lalu disimpan pada pointer awal. Serta fungsi if else yang akan
mengeksekusi sesuai dengan kondisi pada program yang sedang berjalan
 Baris 63-76 mendeklarasikan fungsi untuk menampilkan data yang sudah
tersimpat pada fungsi inputdata()
 Baris 64 mendeklarasikan pointer pada fungsi tampildata()
 Baris 65-73 mendeklarasikan tampilan atau output menyerupai tabel
 Baris 78-111 mendeklarasikan fungsi untuk menghapus data yang sudah
tersimpan
 Baris 79 mendeklarasikan pointer pada fungsi hapusdata()
 Baris 80 mendeklarasikan variabel search bertipe data char array
 Baris 81-109 mendeklarasikan fungsi if else yang akan mengeksekusi
sesuai dengan kondisi pada program yang sedang berjalan
 Baris 113-153 mendeklarasikan fungsi main merupakan fungsi pertama
yang di eksekusi oleh program
 Baris 114-115 mendeklarasikan variabel pilih bertipe data integer dan
variabel z bertipe data char
 Baris 116 mendeklarasikan pemanggilan fungsi biodata()
 Baris 117-120 mendeklarasikan kalimat dalam petik pada printf untuk
ditampilkan
 Baris 121 mendeklarasikan getch() untuk menghentikan program yang
sedang berjalan. Kemudian system(“cls”) untuk membersihkan layar
program yang telah dijalankan sebelumnya sehingga yang selanjutnya
tampil hanya program pada baris selanjutnya
 Baris 123 mendeklarasikan start untuk tempat pengeksekusian kembali
oleh fungsi goto.
 Baris 125-129 mendeklarasikan tampilan menu pada program
 Baris 130 mendeklarasikan inputan dari user lalu disimpan pada variabel
pilih
 Baris 132-137 mendeklarasikan fungsi switch case untuk mengeksekusi
fungsi sesuai dengan nilai inputan user yang disimpan pada variabel pilih
 Baris 139-146 mendeklarasikan hapus untuk tempat pengeksekusian
kembali oleh fungsi goto.
 Baris 148-150 mendeklarasikan exit untuk tempat pengeksekusian kembali
oleh fungsi goto.
 Baris 151 mendeklarasikan getch() untuk menghentikan program yang
sedang berjalan
 Baris 152 mendeklarasikan return untuk mengembalikan nilai int main ke
nilai

You might also like