oke ini dia codingnya...
/* coding dibawah adalah library yang digunakan.*/
#include<conio.h>
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<sstream>
#include<iomanip>
/* selanjutnya library untuk menggunkan tipe data string dan lainya.*/
using namespace std;
/* ini untuk membuat variable struct Mata Kuliah dengan nama pMK*/
typedef struct MK *pMK;
/* selanjutnya ini pembuatan struct tahun_ajaran*/
struct tahun_ajaran
{
int tahun;
int semester;
};
/* selanjutnya ini pembuatan struct mata Kuliah, ini merupakan struct utamanya , nama Q adalah variable dari structnya dan untuk menghubungkan dengan struct tahun ajaran di dalam struc diberi inisialisasi tahun ajaran dengan nama ta.
Nah, Yang dimaksudkan dengan single linked list adalah karena disini pointer kita hanya memiliki satu list data, nah disini kan ada 2 struct maka struc-struct tersebut harus saling berhubungan sehingga menjadi satu list data saja, jika tidak berhubungan dan lebih dari satu list bukan termasuk single linked-list*/
struct MK
{
char nama_mk[99];
int sks;
char code[9];
tahun_ajaran ta;
pMK next;
}Q;
/* ini untuk inisialisasi penunujuk memorinya di struct MK dengan head dan tail.*/
pMK head,tail;
/* dan ini void ins untuk pengecekan data di struct MK dan mengeset head dan tail menjadi NULL*/
void ins(pMK *head,pMK *tail)
{
*head=NULL;
*tail=NULL;
}
/* nah,, disini Void untuk menambah data , dengan nama void tambah_data dnegan paramater pointer head
// dan tail di struct Mata Kuliah*/
int tambah_data(pMK *head, pMK *tail)
{
pMK baru; /*ini merupakan pembuatan variabel baru untuk menunujuk ke struct yang kita buat tadi */
baru = (pMK)malloc(sizeof(Q)); // malloc disini untuk pengalokasian memori dalam sistem
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;
}
/* dan berikut ini void unutuk menampilkan data dengan nama tampil_data dan parameternya adalah head di
// struct Mata Kuliah, jika user tidak mnginputkan data terlebih dahulu maka akan memunculkan Data Masih
// Kosong.*/
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;
}
}
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
}
/* dan ini void unutk menampilkan data SKS terbesar dan terkecil
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");
{
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());
}
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
getch();
}
/* dan ini void untuk menampilkan salah satu data tahun Ajaran terbesar
{
pMK p;
int max = 0;
string nama = "", code = "";
printf("================================\n");
printf("== Data Tahun Ajaran Terbesar ==\n");
printf("================================\n");
i
{
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());
}
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
getch();
}
/* ini untuk menampilkan semua data tahun ajaran genap
{
pMK p; int i = 1;
printf("======================================\n");
printf("== Data Tahun Ajaran di Tahun Genap ==\n");
printf("======================================\n");
{
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;
}
}
printf("Data Masih Kosong.\n");
}
printf("\nTekan Enter untuk kembali......");
getch();
}
/* nah disini merupakan void utama yaitu void int main, dsini berisi tampilan menu dari program dan setiap
// pemanggilan di setiap nomor dipanggil void-void diatas sesuai dengan menunya.
{
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);
{
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;
}
return (EXIT_SUCCESS);
}
Output :
1. Menu
2. Input Data
3. Data SKS Terbesar dan Terkecil
4. Data Tahun Ajaran Terbesar
5. Data Tahun Ajaran di Tahun Genap
6. Daftar Mata Kuliah
7. Exit
Tidak ada komentar:
Posting Komentar