APPENDIX. my_bin_khs.c. #include <string.h> #include <stdlib.h> char fname[]="transkrip.txt"; int loop = 1; int ukuran_htable = 100;

dokumen-dokumen yang mirip
Struct Lanjutan: Studi Kasus

printf (" ======== Program untuk memilih nama bulan dalam setahun ======== \n \n");

Praktikum Algoritma dan Struktur Data

DIKTAT MATA KULIAH PEMROGRAMAN I BAB IX STRUCT. tipe_data_1 variabel_1 ; tipe_data_2 variabel_2 ; tipe_data_n variabel_n ;

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

Pointer. Yuliana Setiowati

05. Double Linked List

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

// Created by Andri Andriyan // Linked List. #include <stdlib.h> #include <conio2.h> #include <stdio.h>

KONSEP POINTER DAN LINKED LIST

UJIAN AKHIR SEMESTER GANJIL 2008/2009 ALGORITME DAN PEMROGRAMAN Sabtu, 31 Januari 2009; Pukul 13:30 16:00; CATATAN TERTUTUP

Manage Sort STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 4 : 30 Juni 2015

Algoritma dan Struktur Data. Ramos Somya

MODUL PRAKTIKUM STRUKTUR DATA

IT234 - Algoritma dan Struktur Data. Ramos Somya

FUNCTION (FUNGSI) LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

01. Review Array, Pointer dan Struktur

IT234 - Algoritma dan Struktur Data. Ramos Somya

Tipe Data, Variabel, Input/Output

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

DISUSUN OLEH BAB IX. Structt. //untuk. long. int nip; char. nama[31]; char } HAL 1

Algoritma Pemrograman. Fery Updi,M.Kom

KONSEP POINTER DAN LINKED LIST

Hari : Rabu Pertemuan : 3 Tanggal Praktikum : Oktober 2001 Shift : 4

Struktur Data. Stack STMIK AMIKOM YOGYAKARTA. Bayu Setiaji, S.Kom

//membuat sebuah tipe data baru yang terdiri dari. //field data bertipe integer //field next merupakan pointer dari list

Menginisialisasi array sama dengan memberikan nilai awal array pada saat didefinisikan. int nilai[6] = {8,7,5,6,4,3};

PERULANGAN 2 DASAR PEMROGRAMAN

MI, KA-D3, SIA, SIB. ADI, S.Kom.

BAB 12 MANIPULATION FILE

ALGORITMA (2) Mengupas Kentang

Struktur Program Bahasa C

Fungsi : Dasar Fungsi

MODUL 10 PERNYATAAN KONTROL: FOR DAN SWITCH - CASE. Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

UNIVERSITAS WIDYATAMA JURUSAN TEKNIK INFORMATIKA - FAKULTAS TEKNIK Jl. Cikutra No.204 A BAndung UJIAN TENGAH SEMESTER TA.

PRAKTIK MATA PELAJARAN

SINGLE LINKED LIST (NON CIRCULAR)

BAB V, VI ARRAY, STRING

DOUBLE LINKED LIST. Danang Wahyu Utomo Danang Wahyu Utomo, M.Kom, M.CS

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

GISKA ARIYA SANGGITA TI

KONSEP POINTER DAN LINKED LIST

Algoritma Pemrograman & Struktur Data

STRING DASAR PEMROGRAMAN

STRUCTURE. Structure

FILE INPUT/OUTPUT. Overview

Binary Search Tree (BST)

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Review Latihan Slide 10. Review Latihan Slide 10

Perulangan, Percabangan, dan Studi Kasus

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

PRAKTIK MATA PELAJARAN

Algoritma dan Struktur Data. Linked List

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

UJIAN TENGAH SEMESTER GANJIL TAHUN STMIK AMIKOM YOGYAKARTA

STACK DAN QUEUE. Pengertian Stack Dan Queue. stack & queue. Last saved by KENKEINA Created by KENKEINA

12/29/2011. Algoritme dan Pemrograman. Bit. Bitwise operator

STACK atau TUMPUKAN. Pertemuan 5 STACK (TUMPUKAN)

PRAKTIKUM 07 DECISION SWITCH DWI SETIYA NINGSIH // PJJ D3 TI

Perulangan 2 DASAR PEMROGRAMAN

Laporan Praktikum TMD02 Algoritma dan Struktur Data dengan C. Coding 1. NIM/ No. Reg. : : Mhd. Syarif : : Blog

Konsep Pemrograman. Bab 7. Fungsi1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Struktur Data II. Single Linked List - Non circular

Algoritme dan Pemrograman

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DOUBLE LINKED LIST CIRCULAR

Algoritma Pemrograman. Fery Updi,M.Kom

PERTEMUAN XI OPERASI FILE

Kisi-Kisi Ujian Tengah Semester Algoritma dan Pemrograman Lanjut

Minggu ke-11 Fungsi (Function)

Implementasi Struktur Data Stack (Tumpukan) dalam Tower of Hanoi Game

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

P 4 Bab 3 : Dasar Pemrograman C

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

MODUL 4 PERULANGAN A. TUJUAN

# FOUR LOOPING. JAWABAN 1. #include <stdio.h> #include <conio.h> #define pi void main(){

STRUKTUR DATA POKOK BAHASAN - 8 QUEUE ( ANTRIAN)

BAB III. Stack. ( Tumpukan )

Proses Perulangan (Looping) DASAR PROGRAMMING 1

Pengantar Bahasa C. Tim Pengajar ASD Semester I 2017/ /7/2017 FN/ASD/Sem /2018 1

1. Menciptakan dan mengisi file dengan data karakter dari keyboard /* File program: fputc.c */ #include <stdio.h> #include <stdlib.

Pemrograman I Bab III Tipe Data, Variabel, dan Operasi Perhitungan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

BAB VIII POINTER. Tujuan :

Percabangan. Agus Priyanto, M.Kom

Penambahan Simpul (Node)

04. Single Linked List

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

VARIABEL & TIPE DATA PEMROGRAMAN C++

Algoritma Pemrograman & Struktur Data

MODUL IV ARRAY DAN STRUCTURE

//Kalkulator yang Dapat melakukan perkalian, pengurangan, pertambahan,

Pengulangan for. Konstruksi for. keberadaan exp1, exp2, dan exp3 bersifat optional. for (exp1; exp2; exp3){ statement; atau. statement1; statement2;

LIST BERKAIT(LINKED LIST)

PENGENALAN BAHASA C. A. Struktur Kode Program dalam Bahasa C Secara garis besar, suatu kode program dalam bahasa C memiliki struktur umum seperti ini:

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

Single Linked List (1)

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Input/Output. Input/output Memformat keluaran Pengolahan karakter dan String

Transkripsi:

APPENDIX my_bin_khs.c # i n c l u d e < s t d i o. h > #include <string.h> #include <stdlib.h> char fname[]="transkrip.txt"; int loop = 1; int ukuran_htable = 100; struct htable char nim[12]; char nm_mhs[100]; char thn_ajar[20]; char kd_msuji[50]; char kd_puskom[50]; char nama_mtk[100]; char nilai[3]; char bintang; int sks; struct htable *root; struct htable *detail; ; typedef struct htable data; data *head[100],*kursor,*baru,*first; void input_data(); void input_hash_table(int index,int nim); void cetak_htable(); void mtk_ulang(); void insertion(int index); void cetak_insertion(int index); float hitung_nilai(char *nilai); int ubah_nim ( char * nim ); void menu(); void pilihan_1(char * nim); void pilihan_2(char * nim); void pilihan_3(char * nim); void pilihan_4(char * nim, char *tahun, char *kd_msuji); void pilihan_5(int angkatan); int main () input_data(); cetak_htable(); while(loop) menu();

return 0; int ubah_nim ( char * nim ) char angkatan[3], cnim[5]; int total_nim; angkatan[0] = nim[0]; angkatan[1] = nim[1]; angkatan[2] = '\0'; cnim[0] = nim[6]; cnim[1] = nim[7]; cnim[2] = nim[8]; cnim[3] = nim[9]; cnim[4] = '\0'; total_nim = atoi(angkatan) * 10000 + atoi(cnim); return total_nim; void input_data() char separator; int index, inim; FILE *fp; if(!(fp=fopen(fname,"r"))) printf("cannot open file '%s'!\n",fname); return; while (!feof(fp)) baru=(data *)malloc(sizeof(data)); fscanf(fp,"%[^ ]",baru->nim); fscanf(fp,"%[^ ]",baru->nm_mhs); fscanf(fp,"%[^ ]",baru->thn_ajar); fscanf(fp,"%[^ ]",baru->kd_msuji); fscanf(fp,"%[^ ]",baru->kd_puskom); fscanf(fp,"%[^ ]",baru->nama_mtk); fscanf(fp,"%[^ ]",baru->nilai); fscanf(fp,"%d",&baru->sks); fscanf(fp, "%[^\n]", &separator); baru->bintang = '*'; baru->root = NULL;

baru->detail = NULL; if(!feof(fp)) inim = ubah_nim( baru->nim ); index = inim % 100; input_hash_table(index, inim); fclose(fp); void mtk_ulang() float nilai_baru, nilai_kursor; nilai_baru = hitung_nilai(baru->nilai); nilai_kursor = hitung_nilai(kursor->nilai); if(strcmp(baru->kd_puskom,kursor->kd_puskom) == 0) if(nilai_kursor > nilai_baru) baru->bintang = '\0'; else kursor->bintang = '\0'; kursor=kursor->detail; void insertion(int index) data *bantu; float nilai_baru, nilai_kursor; nilai_baru = hitung_nilai(baru->nilai); bantu = kursor; cetak_insertion(index); nilai_kursor = hitung_nilai(kursor->nilai); if(nilai_baru > nilai_kursor) if(bantu == kursor) if(first!= NULL) first->root = baru; baru->root=kursor->root; baru->detail=kursor; cetak_insertion(index); if(kursor == head[index] ) head[index] = baru; kursor->root = NULL;

return; else bantu->detail=baru; baru->detail=kursor; cetak_insertion(index); return; if(bantu!= kursor) bantu=bantu->detail; kursor=kursor->detail; bantu->detail = baru; kursor = baru; cetak_insertion(index); void input_hash_table(int index,int nim) data *bantu; int inim; if(head[index] == NULL) head[index] = baru; else kursor = head[index]; first = NULL; inim = ubah_nim( kursor->nim ); while(kursor->root!= NULL && inim!= nim) first = kursor; kursor=kursor->root; inim = ubah_nim( kursor->nim ); if(inim == nim) bantu = kursor; mtk_ulang(); kursor = bantu; printf("...insertion...\n"); insertion(index); else kursor->root = baru;

void cetak_htable() data *daftar; int i; printf("\n===============hash table=====================\n"); for(i=0;i<100;i++) kursor = head[i]; printf("index %d\n ",i); printf("(%s) -> ",kursor->nim); printf("(%s,%s,%c) -> ",kursor->nama_mtk,kursor- >nilai,kursor->bintang); daftar = kursor->detail; while(daftar!= NULL) printf("(%s,%s,%c) -> ",daftar->nama_mtk,daftar- >nilai,daftar->bintang); daftar=daftar->detail; printf("\n \n "); kursor=kursor->root; void cetak_insertion(int index) data *daftar, *bantu; bantu = head[index]; while(bantu!= NULL) printf("(%s) -> ",bantu->nim); printf("(%s,%s,%c) -> ",bantu->nama_mtk,bantu- >nilai,bantu->bintang); daftar = bantu->detail; while(daftar!= NULL) printf("(%s,%s,%c) -> ",daftar->nama_mtk,daftar- >nilai,daftar->bintang); daftar=daftar->detail; printf("\n \n "); bantu=bantu->root; float hitung_nilai(char *nilai) float skor; if(strcmp(nilai,"a")==0) skor = 4; if(strcmp(nilai,"ab")==0) skor = 3.5; if(strcmp(nilai,"b")==0) skor = 3; if(strcmp(nilai,"bc")==0) skor = 2.5; if(strcmp(nilai,"c")==0) skor = 2; if(strcmp(nilai,"cd")==0) skor = 1.5; if(strcmp(nilai,"d")==0) skor = 1; if(strcmp(nilai,"de")==0) skor = 0.5; if(strcmp(nilai,"e")==0) skor = 0;

return skor; void menu() int nomer,angkatan; char nim[12]; char tahun[20]; char kd_msuji[50]; char kode[50]; char uji[50]; printf(" printf("1. Transkrip biasa (lap akademik) \n"); printf("2. Transkrip kapki \n"); printf("3. Daftar Matakuliah tiap mahasiswa\n"); printf("4. KHS\n"); printf("5. IPK rata - rata per angkatan\n"); printf("6. Keluar\n"); printf("nomer pilihan menu: "); scanf("%d",&nomer); switch(nomer) case 1 : printf("masukkan nim: "); scanf("%s",nim); scanf("%*c"); pilihan_1(nim); case 2 : printf("masukkan nim: "); scanf("%s",nim); scanf("%*c"); pilihan_2(nim); case 3 : printf("masukkan nim: "); scanf("%s",nim); scanf("%*c"); pilihan_3(nim); case 4 : printf("masukkan nim: "); scanf("%s",nim); scanf("%*c"); printf("tahun ajaran: "); scanf("%s",tahun); scanf("%*c"); printf("g1/g2: "); scanf("%s",kd_msuji); scanf("%*c"); pilihan_4(nim, tahun, kd_msuji); case 5 : printf("masukkan angkatan: "); scanf("%d",&angkatan); pilihan_5(angkatan); case 6 : loop = 0;

void pilihan_1(char * nim) int index, angkatan, no, ip, inim; float ipk, total_ip, total_sks; char skripsi[50]; no = 0; ip = 0; ipk = 0; total_ip = 0; total_sks = 0; inim = ubah_nim( nim ); index = inim % 100; kursor= head[index]; if(strcmp(kursor->nim,nim) == 0) kursor = kursor->root; if(strcmp(kursor->nim,nim)!= 0) return; strcpy(skripsi,""); printf(" %50s \n","hasil STUDI KUMULATIF"); printf("%-14s : %s\n","nim",nim); printf("nama Mahasiswa : %s\n",kursor->nm_mhs); printf(" %3s %-15s %-25s %-3s %-5s %5s \n","no","kode MATAKULIAH","NAMA MATAKULIAH","SKS","NILAI","BOBOT X SKS"); if(kursor->bintang == '*') no = no + 1; ip = hitung_nilai(kursor->nilai) * kursor->sks; total_ip = total_ip + ip; total_sks = total_sks + kursor->sks; printf(" %2d %-15s %-25s %-3d %-5s %10d \n",no,kursor->kd_puskom,kursor->nama_mtk,kursor->sks,kursor- >nilai,ip); kursor=kursor->detail; ipk = total_ip / total_sks;

printf(" %-48s %-11.0f %11.0f \n","jumlah",total_sks,total_ip); printf(" INDEX PRESTASI KUMULATIF : %-40.2f \n",ipk); printf(" JUDUL SKRIPSI / TA : %-40s \n",skripsi); void pilihan_2(char * nim) int index, angkatan, no, ip, inim; float ipk, total_ip, total_sks; char skripsi[50]; no = 0; ip = 0; ipk = 0; total_ip = 0; total_sks = 0; inim = ubah_nim( nim ); index = inim % 100; kursor= head[index]; if(strcmp(kursor->nim,nim) == 0) kursor = kursor->root; if(strcmp(kursor->nim,nim)!= 0) return; strcpy(skripsi,""); printf(" %50s \n","hasil STUDI KUMULATIF"); printf("%-14s : %s\n","nim",kursor->nim); printf("nama Mahasiswa : %s\n",kursor->nm_mhs); printf(" %3s %-15s %-25s %-3s %-5s %5s \n","no","kode MATAKULIAH","NAMA MATAKULIAH","SKS","NILAI","BOBOT X SKS"); if(kursor->bintang == '*' && total_sks < 90) no = no + 1; ip = hitung_nilai(kursor->nilai) * kursor->sks; total_ip = total_ip + ip;

total_sks = total_sks + kursor->sks; printf(" %2d %-15s %-25s %-3d %-5s %10d \n",no,kursor->kd_puskom,kursor->nama_mtk,kursor->sks,kursor- >nilai,ip); kursor=kursor->detail; ipk = total_ip / total_sks; printf(" %-48s %-11.0f %11.0f \n","jumlah",total_sks,total_ip); printf(" INDEX PRESTASI KUMULATIF : %-40.2f \n",ipk); printf(" JUDUL SKRIPSI / TA : %-40s \n",skripsi); void pilihan_3(char * nim) int index, angkatan, no, inim; float ipk; char nol[2],nol2[4]; "); "); no = 0; inim = ubah_nim( nim ); index = inim % 100; kursor= head[index]; if(strcmp(kursor->nim,nim) == 0) kursor = kursor->root; if(strcmp(kursor->nim,nim)!= 0) return; printf(" \n printf(" %35s \n","daftar MATA KULIAH"); printf(" \n printf("%-14s : %s\n","nim",kursor->nim); printf("nama Mahasiswa : %s\n",kursor->nm_mhs); printf(" \n "); printf(" %3s %-15s %-25s \n","no","kode MATAKULIAH","NAMA MATAKULIAH"); printf(" \n "); if(kursor->bintang == '*')

no = no + 1; printf(" %2d %-15s %-25s \n",no,kursor- >kd_puskom,kursor->nama_mtk); kursor=kursor->detail; printf(" \n "); void pilihan_4(char * nim, char *tahun, char *kd_msuji) data *kursor; int index, angkatan, no, ip, inim; float ipk, total_ip, total_sks; char nol[2],nol2[4]; no = 0; ip = 0; ipk = 0; total_ip = 0; total_sks = 0; inim = ubah_nim( nim ); index = inim % 100; kursor= head[index]; if(strcmp(kursor->nim,nim) == 0) kursor = kursor->root; if(strcmp(kursor->nim,nim)!= 0) return; printf(" %50s \n","kartu HASIL STUDI"); printf(" %44s \n","(khs)"); printf("%-14s : %s\n","nim",kursor->nim); printf("nama Mahasiswa : %s\n",kursor->nm_mhs); printf(" %3s %-15s %-25s %-3s %-5s %5s \n","no","kode MATAKULIAH","NAMA MATAKULIAH","SKS","NILAI","BOBOT X SKS"); if(strcmp(kursor->thn_ajar, tahun) == 0 && strcmp(kursor- >kd_msuji, kd_msuji) == 0) no = no + 1;

ip = hitung_nilai(kursor->nilai) * kursor->sks; total_ip = total_ip + ip; total_sks = total_sks + kursor->sks; printf(" %2d %-15s %-25s %-3d %-5s %10d \n",no,kursor->kd_puskom,kursor->nama_mtk,kursor->sks,kursor- >nilai,ip); kursor=kursor->detail; ipk = total_ip / total_sks; printf(" %-48s %-11.0f %11.0f \n","jumlah",total_sks,total_ip); printf(" INDEX PRESTASI: %-40.2f \n",ipk); void pilihan_5(int angkatan) data *kursor, *daftar; int i, no, no_angkatan, ip, index, inim; float ipk,ipk_rata2,total_ipk, total_ip, total_sks, total_mhs; no = 0; ip = 0; ipk = 0; total_ip = 0; total_sks = 0; total_ipk = 0; total_mhs = 0; ipk_rata2 = 0; \n"); printf("\t \tipk RATA-RATA ANGKATAN %d\n",angkatan); \n"); printf(" NO %-3s %-5s %10s %-17s IPK \n"," ","NIM"," ","NAMA"); \n"); angkatan = angkatan % 2000; for(i=0;i<ukuran_htable;i++) kursor = head[i]; inim = ubah_nim( kursor->nim ); no_angkatan = inim / 10000; if(no_angkatan == angkatan) daftar = kursor;

ipk = 0; total_ip = 0; total_sks = 0; >sks; while(daftar!= NULL) if(daftar->bintang == '*') ip = hitung_nilai(daftar->nilai) * daftar- total_ip = total_ip + ip; total_sks = total_sks + daftar->sks; daftar = daftar->detail; ipk = total_ip / total_sks; total_ipk = total_ipk + ipk; total_mhs = total_mhs + 1; no = no + 1; printf(" %2d %s %-28s %4.2f \n", no,kursor->nim,kursor->nm_mhs,ipk); printf(" \n"); kursor=kursor->root; ipk_rata2 = total_ipk / total_mhs; printf(" TOTAL IPK RATA - RATA : %4.2f \n", ipk_rata2); \n");