halo ^_^ saya blogger baru nih :D ok, to the point aja ya. Di sini saya ada project yang kebetulan merupakan Tugas Rancang dari matakuliah KBP (Konsep Bahasa Pemrograman). Di project ini, walau terlihat simple tapi pembuatan nya lebih dari seminggu (di hitung sama malasnya ahahahaha :v). ok", cukup intermezzo ny. nih, coding ny :D baca sampai habis dlu baru komen, soal nya saya juga baru belajar hahahha :D
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <sstream>
#include <iomanip>
///bagian atas ini merupakan library yang di gunakan agar fungsi" dapat berjalan sebagaimana mestinya ya anggaplah kalo bagian ini paling wajib di pake (ya iya lah, coding mana yang nda pke library :D)
using namespace std;
///klo ini hmmm, kalo nda d tambahin ntar insialisasi pada int main() nda bisa jalan.
typedef struct MK *pMK;
///typedef di sini digunakan untuk membuat variabel struct baru dan juga penambahan pointer untuk menyatakan kalau bagian ini butuh alokasi memori.
//int next;
struct tahun_ajaran
{
int tahun;
int semester;
};
struct MK
{
char nama_mk[99];
int sks;
char code[9];
tahun_ajaran ta;
pMK next;
}Q;
///dua bagian di atas, struct tahun_ajaran dan struct MK merupakan struct atau susunan yang akan di jalankan di program . di dalam nya terdapat inisialisasi nama variabel, tipe data dan juga penghubung antara struct tepat nya di bagian struct MK (tahun_ajaran ta <<<< bagian ini nih :D).
pMK head,tail;
///ok, dari variabel baru yang kita buat di atas kita buat lagi variabel yang di gunakan untuk menjalankan linked list. yaitu head dan tail (kepala dan ekor), yang mana head di gunakan sebagai permulaan atau awal dan ekor di gunakan sebagai badan atau juga bagian pelengkap suatu susunan linked list.
void ins(pMK *head,pMK *tail)
{
*head=NULL;
*tail=NULL;
}
///void ins isinya merupakan inisialisasi dari head dan tail yang ki deklarasikan dengan NULL(tidak berisi/masih kosongan :D)
int tambah_data(pMK *head, pMK *tail)
{
pMK baru;
baru = (pMK)malloc(sizeof(Q));
if(baru!=NULL)
{
printf("===========================\n");
printf("== Input Data Matakuliah ==\n");
printf("=========================================\n");
printf("== !! gunakan tanda '_' untuk spasi !! ==\n");
printf("=========================================\n");
printf("\nMasukan Nama Matakuliah : "); scanf("%s",&baru->nama_mk);
printf("Masukan Kode Mata Kuliah : "); scanf("%s",&baru->code);
printf("Masukan SKS Mata Kuliah : "); scanf("%d",&baru->sks);
printf("Masukan Tahun Kuliah : "); scanf("%d",&baru->ta.tahun);
printf("Masukan Semester : "); scanf("%d",&baru->ta.semester);
baru->next=NULL;
if(*head==NULL)
{
*head=baru;
*tail=baru;
}
else
{
(*tail)->next=baru;
*tail=baru;
}
printf("Penambahan data sukses, silahkan tekan tombol ENTER untuk kembali :3");
getch();
}
return 0;
}
///whoaaa, bagian ini nih mulai mumet. yeap, seperti nama void tambah data di gunakan untuk menambah data atau memasukan data melalui inputan user dan menaruhnya di memori. ok, di dalam juga ada inisialisasi
baru = (pMK)malloc(sizeof(Q)). apakah ini ? tenang kawan - kawan, ini di gunakan untuk meminta memori untuk kasih tempat buat taruh inputan user. memori naruhnya malloc atau memory allocation sesuai namanya berarti inputan user yang di taruh di tipe data yang di sediakan akan di letakan di bagian memori yang telah di alokasikan.
void tampil_data(pMK head)
{
pMK p; int i=1;
printf("=======================\n");
printf("== Daftar Matakuliah ==\n");
printf("=======================\n");
if (head!=NULL)
{
cout<<setw(5)<<left<<"No."<<setw(14)<<left<<"Nama_MK"<<setw(14)<<left<<"Kode_MK"<<setw(14)<<left<<"SKS_MK"<<setw(14)<<left<<"Tahun_Ajaran"<<setw(14)<<left<<"Semester"<<endl;
p=head;
while (p!=NULL)
{
cout<<setw(5)<<left<<i<<setw(14)<<left<<p->nama_mk<<setw(14)<<left<<p->code<<setw(14)<<left<<p->sks<<setw(14)<<left<<p->ta.tahun<<setw(14)<<left<<p->ta.semester<<endl;
i++;
p=p->next;
}
}
else {
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
}
///yeap, void tampil data berfungsi untuk menampilkan data yang telah di input user. jika user melakukan opsi 1 (d bagian int main) maka program akan berjalan di bagian if dan jika user langsung melakukan pilih 5(d bagian int main) maka program akan langsung masuk pada else. karena program berjalan mengecek if terlebih dahulu tetapi tidak menemukan inputan maka bagian if di lewati.
void sks_TT(pMK head) {
pMK p;
int max = 0; string namaMax = ""; string codeMax = "";
int min = 0; string namaMin = ""; string codeMin = "";
printf("====================================\n");
printf("== Data SKS Terbesar dan Terkecil ==\n");
printf("====================================\n");
if (head!=NULL)
{
p=head;
min = p->sks;
max = p->sks;
while (p!=NULL)
{
if (p->sks>=max){
max = p->sks;
namaMax = p->nama_mk;
codeMax = p->code;
}
if (p->sks<=min){
min = p->sks;
namaMin = p->nama_mk;
codeMin = p->code;
}
p=p->next;
}
printf("\n");
printf("SKS Terbesar adalah : %d\n", max);
printf("Dalam matakuliah %s dan yang bercode %s\n\n",namaMax.c_str(),codeMax.c_str());
printf("SKS Terkecil adalah : %d\n", min);
printf("Dalam matakuliah %s dan yang bercode %s\n",namaMin.c_str(),codeMin.c_str());
}
else {
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
getch();
}
///void sks_TT maksud nya ada terbesar dan terkecil. jadi, di dalam void ini akan menjalankan misi untuk melakukan pengecekan sks mana yang besar dan yang kecil. di dalam void ini ada while yaitu perulangan yang akan dilakukan terus sampai misi nya berhasil. di mana di dalam while ada if yaitu suatu pengkondisian jika data lebih besar atau lebih kecil sama dengan, maka program otomatis akan memilih. setelah selesai dengan proses yang berulang - ulang (untung komputer yang ngerjain huahahahaha #ketawajahat :D) maka output nya akan dilakukan oleh bagian printf. di dalamnya juga ada variabel yang di gunakan untuk memanggil data yang telah melakukan perjalan sampai bagian perulangan. oya, yang di cek di bagian ini ada sks (p->sks).
void tAt(pMK head)
{
pMK p;
int max = 0;
string nama = "", code = "";
printf("================================\n");
printf("== Data Tahun Ajaran Terbesar ==\n");
printf("================================\n");
if (head!=NULL)
{
p=head;
while (p!=NULL)
{
if (p->ta.tahun>=max)
{
max = p->ta.tahun;
nama = p->nama_mk;
code = p->code;
}
p=p->next;
}
printf("\nTahun Ajaran Terbesar adalah : %d\n", max);
printf("Dalam matakuliah %s dan yang bercode %s\n",nama.c_str(),code.c_str());
}
else {
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
getch();
}
///bagian ini kurang lebih sama seperti bagian void di atas. cuman, bagian ini mengambil tahun ajaran sebagai pengecekan. ya, penjelasannya sama seperti di atas XD TS malas jelasin ulang :P
void genap(pMK head)
{
pMK p; int i = 1;
printf("======================================\n");
printf("== Data Tahun Ajaran di Tahun Genap ==\n");
printf("======================================\n");
if(head != NULL)
{
p=head;
printf("\n");
while(p!= NULL)
{
if(p->ta.tahun%2==0)
{
printf("%d. Matakuliah %s \nPada tahun %d, dengan kode %s\n\n",i,p->nama_mk,p->ta.tahun,p->code);
i++;
}
p=p->next;
}
}
else {
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
getch();
}
///bagian ini menggunakan tahun ajaran sebagai bahan pengecekan. sesuai nama void nya, bagian ini mengecek tahun ajaran mana yang genap atap ganjil. di atas juga di lihat fungsi %2=0 yang berarti bilamana hasil sisa bagi bilangan sama dengan nol maka bilangan tersebut akan di nyatakan program sebagai genap dan yang ganjil yaaaa di biarin aja :P terus di cetak deh :D
int main(int argc, char** argv)
{
int pilih;
ins(&head,&tail);
menu :
system("cls");
printf("=====================\n");
printf("== Data Matakuliah ==\n");
printf("=====================\n");
printf("1. Tambahkan Data Matakuliah\n");
printf("2. SKS terkecil dan terbesar\n");
printf("3. Data matakuliah tahun ajaran terbesar\n");
printf("4. Daftar matakuliah ditahun genap\n");
printf("5. Daftar matakuliah\n");
printf("6. Keluar\n");
printf("Pilihan anda : ");
scanf("%d", &pilih);
switch(pilih)
{
case 1:
system("cls");
tambah_data(&head,&tail);
break;
case 2 :
system("cls");
sks_TT(head);
break;
case 3:
system("cls");
tAt(head);
break;
case 4:
system("cls");
genap(head);
break;
case 5:
system("cls");
tampil_data(head);
getch();
break;
case 6:
system("cls");
printf("terimakasih :3");
getche();
_exit(0);
break;
default:
printf("Maaf, Pilihan Tidak Tersedia");
getche();
break;
}
goto menu;
return (EXIT_SUCCESS);
}
///nah, bagian yang agan - agan pasti paling kuasai (termasuk saya :D). bagian ini berfungsi untuk memanggil void - void yang telah di buat di atas. TS nya bikin pke switch case klo pke if kepanjangan huahahahahaha :D nda osah di jelasin pasti paham hehehehee. ok, sekian dulu yang bisa di share oleh TS. kekurangan dan kelebihan TS mohon maaf (banyak kurang ny sih :P). cya :D
No comments:
Post a Comment