Minggu, 07 Juni 2015
Code C : Single Link List
#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <string.h>
#include <time.h>
struct dtnilai{
char judul[20];
char id[10];
struct dtnilai *next;
};
struct dtnilai *ujung;
//////////////////////////////////INPUT DATA///////////////////////////////////
int input_data(){
struct dtnilai *tampung, *awal;
int j=0;char jawab[2];
while (1){
awal=(struct dtnilai*)malloc(sizeof(struct dtnilai));
fflush(stdin);
printf("Judul Buku :");gets(awal->judul);
printf("ID Buku :");gets(awal->id);
awal->next=NULL;
if(j==0){
ujung=awal;
tampung=ujung;
}else{
tampung->next=awal;
tampung=tampung->next;
}
printf("Ada data lagi (y/t) :");scanf("%s",&jawab);
if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0)){
j++;continue;
}else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
break;
}
}
//////////////////////////////////////////TAMPIL LIST/////////////////////////////
int tampil_list(){
struct dtnilai *tampil,*awal;
printf("Data Buku yang ada : \n");
printf("Judul Buku\t\tID Buku\n");
tampil=ujung;
while(tampil!=NULL){
printf("%s\t\t%s\n",tampil->judul, tampil->id);
tampil=tampil->next;
}
return 0;
}
///////////////////////////////////////HAPUS AKHIR/////////////////////////////
int hapus_akhir(){
struct dtnilai *hapus, *sblhapus;
hapus=ujung;
while(hapus->next!=NULL){
sblhapus=hapus;
hapus=hapus->next;
}
free(hapus);
sblhapus->next=NULL;
}
////////////////////////////////////SISIP AWAL//////////////////////////////////
int sisip_awal(){
struct dtnilai *tampung,*awal;
char jawab[2];
int j=0;
tampung=ujung;
while (1){
awal=(struct dtnilai*)malloc(sizeof(struct dtnilai));
fflush(stdin);
printf("Judul Buku :");gets(awal->judul);
printf("ID Buku :");gets(awal->id);
awal->next=tampung;
if(j==0||j!=0){
ujung=awal;
tampung=ujung;
}
printf("Ada data lagi (y/t) :");scanf("%s",&jawab);
if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0)){
j++;continue;
}else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
break;
}
}
////////////////////////////////////////////////HAPUS LIST TERDEPAN//////////////////////////////////////
int hapus_awal(){
struct dtnilai *hapus, *stlhapus;
hapus=ujung;
stlhapus=hapus->next;
ujung=stlhapus;
free(hapus);
}
///////////////////////////////////////////////HAPUS ELEMEN KE-N/////////////////////////////////////////
int hapus_n(){
struct dtnilai *hapus, *sblhapus;
int cari;;
fflush(stdin);
printf("Data yang akan dihapus ? (data ke-) :");scanf("%d",&cari);
hapus=ujung;
for(int i=1;i<cari;i++){
sblhapus=hapus;
hapus=hapus->next;
}
sblhapus->next=hapus->next;
free(hapus);
}
////////////////////////////////////////////////BADAN PROGRAM////////////////////////////////////////////
int main(){
int a;
char b[2];
ulang :
system("cls");
puts("--------------------------------------------------------------------------------");
puts(" STRUKTUR DATA ");
puts(" RIZKI TAUFIK ULIL A (2210131040) ");
puts(" 1 D4 TEKNIK KOMPUTER ");
puts(" POLITEKNIK ELEKTRONIKA NEGERI SURABAYA - 2014 ");
puts("================================================================================");
puts(" MENU ");
puts(" (1) input data (2) hapus akhir (3) sisip awal (4) hapus awal (5) hapus ke-n");
puts(" (6) tampil data (7) exit");
puts("================================================================================");
printf("Pilih menu :");scanf("%d",&a);
switch (a) {
case 1 :input_data();puts("");break;
case 2 :tampil_list();puts("");goto hapus;break;
case 3 :tampil_list();puts("");sisip_awal();puts("");break;
case 4 :tampil_list();puts("");hapus_awal();puts("");break;
case 5 :tampil_list();puts("");hapus_n();puts("");break;
case 6 :goto tampil;break;
case 7 :goto exit;break;
default :break;
}
goto ulang;
hapus :
puts("Apakah ingin menghapus data akhir ? (y/t)");fflush(stdin);scanf("%s",&b);
if((strcmp(b,"Y")==0)||(strcmp(b,"y")==0)){
hapus_akhir();
goto tampil;
}
tampil :
tampil_list();
puts("Apakah ingin mengolah data ? (y/t)");fflush(stdin);scanf("%s",&b);
if((strcmp(b,"Y")==0)||(strcmp(b,"y")==0)){
goto ulang;
}
exit:
puts(" Anda akan keluar dari program ");
puts(" Silakan pencet tombol enter pada keyboard");
getch();
return 0;
}
Code C : Single Link List
#include
<stdio.h>#include
<conio.h>#include
<malloc.h>#include
<string.h>#include
<time.h>struct
dtnilai{ char judul[20]; char id[10]; struct dtnilai *next;};struct
dtnilai *ujung;//////////////////////////////////INPUT
DATA///////////////////////////////////int
input_data(){ struct dtnilai *tampung, *awal; int j=0;char jawab[2]; while (1){ awal=(struct dtnilai*)malloc(sizeof(struct
dtnilai)); fflush(stdin); printf("Judul Buku :");gets(awal->judul); printf("ID Buku :");gets(awal->id); awal->next=NULL; if(j==0){ ujung=awal; tampung=ujung; }else{ tampung->next=awal; tampung=tampung->next; } printf("Ada data lagi (y/t)
:");scanf("%s",&jawab);
if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0)){ j++;continue; }else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0)) break; }}//////////////////////////////////////////TAMPIL
LIST/////////////////////////////int
tampil_list(){ struct dtnilai *tampil,*awal; printf("Data Buku yang ada : \n"); printf("Judul Buku\t\tID Buku\n"); tampil=ujung; while(tampil!=NULL){
printf("%s\t\t%s\n",tampil->judul, tampil->id); tampil=tampil->next; } return 0;}///////////////////////////////////////HAPUS
AKHIR/////////////////////////////int
hapus_akhir(){ struct dtnilai *hapus, *sblhapus; hapus=ujung; while(hapus->next!=NULL){ sblhapus=hapus; hapus=hapus->next; } free(hapus); sblhapus->next=NULL;}////////////////////////////////////SISIP
AWAL//////////////////////////////////int
sisip_awal(){ struct dtnilai *tampung,*awal; char jawab[2]; int j=0; tampung=ujung; while (1){ awal=(struct dtnilai*)malloc(sizeof(struct
dtnilai)); fflush(stdin); printf("Judul Buku :");gets(awal->judul); printf("ID Buku :");gets(awal->id); awal->next=tampung; if(j==0||j!=0){ ujung=awal; tampung=ujung; } printf("Ada data lagi (y/t)
:");scanf("%s",&jawab);
if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0)){ j++;continue; }else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0)) break; }}////////////////////////////////////////////////HAPUS
LIST TERDEPAN//////////////////////////////////////int
hapus_awal(){ struct dtnilai *hapus, *stlhapus; hapus=ujung; stlhapus=hapus->next; ujung=stlhapus; free(hapus);}///////////////////////////////////////////////HAPUS
ELEMEN KE-N/////////////////////////////////////////int
hapus_n(){ struct dtnilai *hapus, *sblhapus; int cari;; fflush(stdin); printf("Data yang akan dihapus ? (data
ke-) :");scanf("%d",&cari); hapus=ujung; for(int i=1;i<cari;i++){ sblhapus=hapus; hapus=hapus->next; } sblhapus->next=hapus->next; free(hapus);}////////////////////////////////////////////////BADAN
PROGRAM////////////////////////////////////////////int
main(){ int a; char b[2]; ulang : system("cls");
puts("--------------------------------------------------------------------------------"); puts(" STRUKTUR
DATA
"); puts(" RIZKI TAUFIK ULIL A
(2210131040)
"); puts(" 1 D4 TEKNIK
KOMPUTER
"); puts(" POLITEKNIK ELEKTRONIKA NEGERI
SURABAYA - 2014 ");
puts("================================================================================"); puts(" MENU "); puts(" (1) input data (2) hapus akhir (3) sisip awal (4) hapus awal (5) hapus ke-n"); puts(" (6) tampil data (7) exit");
puts("================================================================================"); printf("Pilih menu
:");scanf("%d",&a); switch (a) { case 1
:input_data();puts("");break; case 2
:tampil_list();puts("");goto hapus;break; case 3
:tampil_list();puts("");sisip_awal();puts("");break; case 4
:tampil_list();puts("");hapus_awal();puts("");break; case 5
:tampil_list();puts("");hapus_n();puts("");break; case 6
:goto tampil;break; case 7
:goto exit;break; default :break; } goto ulang; hapus : puts("Apakah ingin menghapus data akhir
? (y/t)");fflush(stdin);scanf("%s",&b); if((strcmp(b,"Y")==0)||(strcmp(b,"y")==0)){ hapus_akhir(); goto tampil; } tampil : tampil_list(); puts("Apakah ingin mengolah data ?
(y/t)");fflush(stdin);scanf("%s",&b);
if((strcmp(b,"Y")==0)||(strcmp(b,"y")==0)){ goto ulang; } exit: puts(" Anda akan keluar dari
program "); puts(" Silakan pencet tombol enter
pada keyboard"); getch(); return 0;}
Code C : Single link list
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>
struct dtnilai{
char nrp[12],nama[20],alamat[30];
float ip[5];
struct dtnilai *next;
};
struct dtnilai *ujung;
//////////////////////////////////INPUT DATA///////////////////////////////////
int input_data(){
struct dtnilai *tampung, *awal;
int j=0;char jawab[2];
while (1){
awal=(struct dtnilai*)malloc(sizeof(struct dtnilai));
fflush(stdin);
printf("NRP :");gets(awal->nrp);
printf("NAMA :");gets(awal->nama);
printf("ALAMAT :");gets(awal->alamat);
printf("IP :");scanf("%f",&awal->ip);
awal->next=NULL;
if(j==0){
ujung=awal;
tampung=ujung;
}else{
tampung->next=awal;
tampung=tampung->next;
}
printf("Ada data lagi (y/t) :");scanf("%s",&jawab);
if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0)){
j++;continue;
}else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
break;
}
}
//////////////////////////////////////////TAMPIL LIST/////////////////////////////
int tampil_list(){
struct dtnilai *tampil,*awal;
printf("\tNRP\t\tNAMA\t\tALAMAT\t\tIP\n");
tampil=ujung;
while(tampil!=NULL){
printf("%s\t\t%s\t\%s\t\t%1.2f\n",tampil->nrp, tampil->nama,tampil->alamat,*tampil->ip);
tampil=tampil->next;
}
return 0;
}
///////////////////////////////////////HAPUS AKHIR/////////////////////////////
int hapus_akhir(){
struct dtnilai *hapus, *sblhapus;
hapus=ujung;
while(hapus->next!=NULL){
sblhapus=hapus;
hapus=hapus->next;
}
free(hapus);
sblhapus->next=NULL;
}
////////////////////////////////////SISIP AWAL//////////////////////////////////
int sisip_awal(){
struct dtnilai *tampung,*awal;
char jawab[2];
int j=0;
tampung=ujung;
while (1){
awal=(struct dtnilai*)malloc(sizeof(struct dtnilai));
fflush(stdin);
printf("NRP :");gets(awal->nrp);
printf("NAMA :");gets(awal->nama);
printf("ALAMAT :");gets(awal->alamat);
printf("IP :");scanf("%f",&awal->ip);
awal->next=tampung;
if(j==0||j!=0){
ujung=awal;
tampung=ujung;
}
printf("Ada data lagi (y/t) :");scanf("%s",&jawab);
if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0)){
j++;continue;
}else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
break;
}
}
////////////////////////////////////////////////HAPUS LIST TERDEPAN//////////////////////////////////////
int hapus_awal(){
struct dtnilai *hapus, *stlhapus;
hapus=ujung;
stlhapus=hapus->next;
ujung=stlhapus;
free(hapus);
}
///////////////////////////////////////////////HAPUS ELEMEN KE-N/////////////////////////////////////////
int hapus_n(){
struct dtnilai *hapus, *sblhapus;
int cari;;
fflush(stdin);
printf("Data yang akan dihapus ? (data ke-) :");scanf("%d",&cari);
hapus=ujung;
for(int i=1;i<cari;i++){
sblhapus=hapus;
hapus=hapus->next;
}
sblhapus->next=hapus->next;
free(hapus);
}
/////////////////////////////////////////////HITUNG RERATA///////////////////////////////////////////////
int jumlah(){
struct dtnilai *hitung;
float hasil=0;
hitung=ujung;
while(hitung!=NULL){
hitung=hitung->next;
hasil=hasil+*hitung->ip;
}
return(hasil);
}
//////////////////////////////////////////////HITUNG NILAI///////////////////////////////////////////////
int banyak_data(){
struct dtnilai *hitung;
float n=0;
hitung=ujung;
while(hitung!=NULL){
hitung=hitung->next;
n++;
}
return(n);
}
////////////////////////////////////////////////BADAN PROGRAM////////////////////////////////////////////
int main(){
int a;
char b[2];
ulang :
puts("--------------------------------------------------------------------------------");
puts(" STRUKTUR DATA ");
puts(" RIZKI TAUFIK ULIL A (2210131040) ");
puts(" 1 D4 TEKNIK KOMPUTER ");
puts(" POLITEKNIK ELEKTRONIKA NEGERI SURABAYA - 2014 ");
puts("================================================================================");
puts(" MENU ");
puts(" (1) input data (2) hapus akhir (3) sisip awal (4) hapus awal (5) hapus ke-n");
puts(" (6) tampil data (7) rata-rata (8) exit");
puts("================================================================================");
printf("Pilih menu :");scanf("%d",&a);
switch (a) {
case 1 :input_data();puts("");break;
case 2 :tampil_list();puts("");goto hapus;break;
case 3 :tampil_list();puts("");sisip_awal();puts("");break;
case 4 :tampil_list();puts("");hapus_awal();puts("");break;
case 5 :tampil_list();puts("");hapus_n();puts("");break;
case 6 :goto tampil;break;
case 7 :goto rata2;break;
case 8 :goto exit;break;
default :break;
}
goto ulang;
rata2 :
printf("Rata- rata IP dari data adalah %1.2f",jumlah()/banyak_data());
goto tampil;
hapus :
puts("Apakah ingin menghapus data akhir ? (y/t)");fflush(stdin);scanf("%s",&b);
if((strcmp(b,"Y")==0)||(strcmp(b,"y")==0)){
hapus_akhir();
goto tampil;
}
tampil :
tampil_list();
puts("Apakah ingin mengolah data ? (y/t)");fflush(stdin);scanf("%s",&b);
if((strcmp(b,"Y")==0)||(strcmp(b,"y")==0)){
goto ulang;
}
exit:
puts(" Anda akan keluar dari program ");
puts(" Silakan pencet tombol enter pada keyboard");
getch();
return 0;
}
#include<conio.h>
#include<malloc.h>
#include<string.h>
struct dtnilai{
char nrp[12],nama[20],alamat[30];
float ip[5];
struct dtnilai *next;
};
struct dtnilai *ujung;
//////////////////////////////////INPUT DATA///////////////////////////////////
int input_data(){
struct dtnilai *tampung, *awal;
int j=0;char jawab[2];
while (1){
awal=(struct dtnilai*)malloc(sizeof(struct dtnilai));
fflush(stdin);
printf("NRP :");gets(awal->nrp);
printf("NAMA :");gets(awal->nama);
printf("ALAMAT :");gets(awal->alamat);
printf("IP :");scanf("%f",&awal->ip);
awal->next=NULL;
if(j==0){
ujung=awal;
tampung=ujung;
}else{
tampung->next=awal;
tampung=tampung->next;
}
printf("Ada data lagi (y/t) :");scanf("%s",&jawab);
if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0)){
j++;continue;
}else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
break;
}
}
//////////////////////////////////////////TAMPIL LIST/////////////////////////////
int tampil_list(){
struct dtnilai *tampil,*awal;
printf("\tNRP\t\tNAMA\t\tALAMAT\t\tIP\n");
tampil=ujung;
while(tampil!=NULL){
printf("%s\t\t%s\t\%s\t\t%1.2f\n",tampil->nrp, tampil->nama,tampil->alamat,*tampil->ip);
tampil=tampil->next;
}
return 0;
}
///////////////////////////////////////HAPUS AKHIR/////////////////////////////
int hapus_akhir(){
struct dtnilai *hapus, *sblhapus;
hapus=ujung;
while(hapus->next!=NULL){
sblhapus=hapus;
hapus=hapus->next;
}
free(hapus);
sblhapus->next=NULL;
}
////////////////////////////////////SISIP AWAL//////////////////////////////////
int sisip_awal(){
struct dtnilai *tampung,*awal;
char jawab[2];
int j=0;
tampung=ujung;
while (1){
awal=(struct dtnilai*)malloc(sizeof(struct dtnilai));
fflush(stdin);
printf("NRP :");gets(awal->nrp);
printf("NAMA :");gets(awal->nama);
printf("ALAMAT :");gets(awal->alamat);
printf("IP :");scanf("%f",&awal->ip);
awal->next=tampung;
if(j==0||j!=0){
ujung=awal;
tampung=ujung;
}
printf("Ada data lagi (y/t) :");scanf("%s",&jawab);
if((strcmp(jawab,"Y")==0)||(strcmp(jawab,"y")==0)){
j++;continue;
}else if((strcmp(jawab,"T")==0)||(strcmp(jawab,"t")==0))
break;
}
}
////////////////////////////////////////////////HAPUS LIST TERDEPAN//////////////////////////////////////
int hapus_awal(){
struct dtnilai *hapus, *stlhapus;
hapus=ujung;
stlhapus=hapus->next;
ujung=stlhapus;
free(hapus);
}
///////////////////////////////////////////////HAPUS ELEMEN KE-N/////////////////////////////////////////
int hapus_n(){
struct dtnilai *hapus, *sblhapus;
int cari;;
fflush(stdin);
printf("Data yang akan dihapus ? (data ke-) :");scanf("%d",&cari);
hapus=ujung;
for(int i=1;i<cari;i++){
sblhapus=hapus;
hapus=hapus->next;
}
sblhapus->next=hapus->next;
free(hapus);
}
/////////////////////////////////////////////HITUNG RERATA///////////////////////////////////////////////
int jumlah(){
struct dtnilai *hitung;
float hasil=0;
hitung=ujung;
while(hitung!=NULL){
hitung=hitung->next;
hasil=hasil+*hitung->ip;
}
return(hasil);
}
//////////////////////////////////////////////HITUNG NILAI///////////////////////////////////////////////
int banyak_data(){
struct dtnilai *hitung;
float n=0;
hitung=ujung;
while(hitung!=NULL){
hitung=hitung->next;
n++;
}
return(n);
}
////////////////////////////////////////////////BADAN PROGRAM////////////////////////////////////////////
int main(){
int a;
char b[2];
ulang :
puts("--------------------------------------------------------------------------------");
puts(" STRUKTUR DATA ");
puts(" RIZKI TAUFIK ULIL A (2210131040) ");
puts(" 1 D4 TEKNIK KOMPUTER ");
puts(" POLITEKNIK ELEKTRONIKA NEGERI SURABAYA - 2014 ");
puts("================================================================================");
puts(" MENU ");
puts(" (1) input data (2) hapus akhir (3) sisip awal (4) hapus awal (5) hapus ke-n");
puts(" (6) tampil data (7) rata-rata (8) exit");
puts("================================================================================");
printf("Pilih menu :");scanf("%d",&a);
switch (a) {
case 1 :input_data();puts("");break;
case 2 :tampil_list();puts("");goto hapus;break;
case 3 :tampil_list();puts("");sisip_awal();puts("");break;
case 4 :tampil_list();puts("");hapus_awal();puts("");break;
case 5 :tampil_list();puts("");hapus_n();puts("");break;
case 6 :goto tampil;break;
case 7 :goto rata2;break;
case 8 :goto exit;break;
default :break;
}
goto ulang;
rata2 :
printf("Rata- rata IP dari data adalah %1.2f",jumlah()/banyak_data());
goto tampil;
hapus :
puts("Apakah ingin menghapus data akhir ? (y/t)");fflush(stdin);scanf("%s",&b);
if((strcmp(b,"Y")==0)||(strcmp(b,"y")==0)){
hapus_akhir();
goto tampil;
}
tampil :
tampil_list();
puts("Apakah ingin mengolah data ? (y/t)");fflush(stdin);scanf("%s",&b);
if((strcmp(b,"Y")==0)||(strcmp(b,"y")==0)){
goto ulang;
}
exit:
puts(" Anda akan keluar dari program ");
puts(" Silakan pencet tombol enter pada keyboard");
getch();
return 0;
}
Code C : Sequantial and Binary (SEARCHING)
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define max 100
int p,q;
int data[max];
int sequensialsearch(int x){
int i=0;
bool ketemu=false;
while((!ketemu)&&(i<max)){
if(data[i]==x)
ketemu=true;
else{
i++;p++;
}
}
if(ketemu)
return i+1;
else
return -1;
}
void tukar(int *a, int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void quicksort(int l, int r){
int i,j,x;
x=data[(l+r)/2];
i=l;
j=r;
while(i<=j){
while(data[i]<x)
i++;
while(data[j]>x)
j--;
if(i<=j){
tukar(&data[i],&data[j]);
i++;j--;
}
}
if(l<j)
quicksort(l,j);
if(i<r)
quicksort(i,r);
}
int binarysearch(int x){
int l=0,r=max-1,m;
bool ketemu=false;
while((l<=r)&&(!ketemu)){
m=(l+r)/2;
if(data[m]==x)
ketemu=true;
else if(x<data[m])
r=m-1;
else
l=m+1;
q++;
}
if(ketemu)
return m;
else
return -1;
}
int main(){
int i;
printf("\nData :");
for(i=0;i<max;i++){
data[i]=rand()/1000+1;
printf("%d ",data[i]);
}
int kunci;
printf("\nKunci : ");
scanf("%d",&kunci);
quicksort(0,max-1);
int ketemu1=sequensialsearch(kunci);
int ketemu=binarysearch(kunci);
printf("Perbandingan pada sequensial dan binary adalah %d banding %d",p,q);
getch();
return 0;
}
#include<conio.h>
#include<stdlib.h>
#define max 100
int p,q;
int data[max];
int sequensialsearch(int x){
int i=0;
bool ketemu=false;
while((!ketemu)&&(i<max)){
if(data[i]==x)
ketemu=true;
else{
i++;p++;
}
}
if(ketemu)
return i+1;
else
return -1;
}
void tukar(int *a, int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void quicksort(int l, int r){
int i,j,x;
x=data[(l+r)/2];
i=l;
j=r;
while(i<=j){
while(data[i]<x)
i++;
while(data[j]>x)
j--;
if(i<=j){
tukar(&data[i],&data[j]);
i++;j--;
}
}
if(l<j)
quicksort(l,j);
if(i<r)
quicksort(i,r);
}
int binarysearch(int x){
int l=0,r=max-1,m;
bool ketemu=false;
while((l<=r)&&(!ketemu)){
m=(l+r)/2;
if(data[m]==x)
ketemu=true;
else if(x<data[m])
r=m-1;
else
l=m+1;
q++;
}
if(ketemu)
return m;
else
return -1;
}
int main(){
int i;
printf("\nData :");
for(i=0;i<max;i++){
data[i]=rand()/1000+1;
printf("%d ",data[i]);
}
int kunci;
printf("\nKunci : ");
scanf("%d",&kunci);
quicksort(0,max-1);
int ketemu1=sequensialsearch(kunci);
int ketemu=binarysearch(kunci);
printf("Perbandingan pada sequensial dan binary adalah %d banding %d",p,q);
getch();
return 0;
}
Code C ; (Straigh/Binary)Insertion and Selection (SORTING)
#include <stdio.h>
#include <conio.h>
#include <string.h>
typedef struct{
int nip;
char nama[15];
}dtpegawai;
dtpegawai data[20];
int a=0;
void tambah_data(){
char jawab[2];
while(1){
fflush(stdin);
printf("NIP : ");scanf("%d",&data[a].nip);
fflush(stdin);
printf("Nama : ");gets(data[a].nama);
fflush(stdin);
printf("Ada data lagi (y/t):");scanf("%s",&jawab);
if(((strcmp(jawab,"Y"))==0)||((strcmp(jawab,"y"))==0)){
a++;continue;
}else if (((strcmp(jawab,"T"))==0)||((strcmp(jawab,"t"))==0))
break;
}
}
void tampil(int v){
int i;
puts(" NIP NAMA");
if(v==1){
for (i=0;i<=a;i++){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}else{
for (i=a;i>=0;i--){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}
}
int straightinsertsort_nip(){
int i,j;
dtpegawai tamp;
for(i=1;i<a+1;i++){
tamp=data[i];
j=i-1;
while(tamp.nip<data[j].nip){
data[j+1]=data[j];
j--;
}
data[j+1]=tamp;
}
}
void straightinsertsort_nama(){
int i,j,k,l1,l2;char kar1[15],kar2[15];
dtpegawai tamp;
for(i=1;i<a+1;i++){
k=0;
tamp=data[i];
j=i-1;
while(tamp.nama[k]==data[j].nama[k]){
k++;
}
while(tamp.nama[k]<data[j].nama[k]){
data[j+1]=data[j];
j--;
}
data[j+1]=tamp;;
}
}
void binaryinsertsort_nip(){
int i,j,l,r,m,x;
dtpegawai tamp;
for(i=1;i<a+1;i++){
tamp=data[i];
l=0;
r=i-1;
while(l<=r){
m=(l+r)/2;
if(tamp.nip<data[m].nip)
r=m-1;
else
l=m+1;
}
for(j=i-1; j>=l;j--)
data[j+1]=data[j];
data[l]=tamp;
}
}
void binaryinsertsort_nama(){
int i,j,l,r,m,x,k;
dtpegawai tamp;
for(i=1;i<a+1;i++){
tamp=data[i];
l=0;
r=i-1;
while(l<=r){
m=(l+r)/2;
while(tamp.nama[k]==data[m].nama[k]){
k++;
}
if(tamp.nama[k]<data[m].nama[k])
r=m-1;
else
l=m+1;
}
for(j=i-1; j>=l;j--)
data[j+1]=data[j];
data[l]=tamp;
}
}
int selectionsort_nip(){
int i,j,k;
dtpegawai tamp;
for(i=0;i<a;i++){
k=i;
for(j=i+1;j<a+1;j++)
if(data[k].nip>data[j].nip)
k=j;
tamp=data[i];
data[i]=data[k];
data[k]=tamp;
}
}
void selectionsort_nama(){
int i,j,k,m,kar1,kar2;
dtpegawai tamp;
for(i=0;i<a;i++){
m=0;
k=i;
for(j=i+1;j<a;j++){
kar1=data[k].nama[m];kar2=data[j].nama[m];
while(data[k].nama[m]==data[j].nama[m]){
m++;kar1=data[k].nama[m];kar2=data[j].nama[m];
}
if(kar1>kar2)
k=j;
tamp=data[i];
data[i]=data[k];
data[k]=tamp;
}
}
}
int main(){
int metode,pb,z;
ulang :
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PROGRAM PENGURUTAN DATA PEGAWAI");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts("Masukkan data pegawai : ");
tambah_data();
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PILIH METODE PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. Straighinsertionsort");
puts(" 2. Binaryinsertsort");
puts(" 3. Selectionsort");
printf("Masukkan pilihan metode : ");scanf("%d",&metode);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN BERDASARKAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. NIP");
puts(" 2. Nama Pegawai");
printf("Masukkan pilihan pengurutan : ");scanf("%d",&pb);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN SECARA");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. Ascending");
puts(" 2. Descending");
printf("Masukkan pilihan : ");scanf("%d",&z);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" HASIL PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
if(metode==1&&pb==1) straightinsertsort_nip();
if(metode==1&&pb==2) straightinsertsort_nama();
if(metode==2&&pb==1) binaryinsertsort_nip();
if(metode==2&&pb==2) binaryinsertsort_nama();
if(metode==3&&pb==1) selectionsort_nip();
if(metode==3&&pb==1) selectionsort_nama();
tampil(z);
getch();
return 0;
}
#include <conio.h>
#include <string.h>
typedef struct{
int nip;
char nama[15];
}dtpegawai;
dtpegawai data[20];
int a=0;
void tambah_data(){
char jawab[2];
while(1){
fflush(stdin);
printf("NIP : ");scanf("%d",&data[a].nip);
fflush(stdin);
printf("Nama : ");gets(data[a].nama);
fflush(stdin);
printf("Ada data lagi (y/t):");scanf("%s",&jawab);
if(((strcmp(jawab,"Y"))==0)||((strcmp(jawab,"y"))==0)){
a++;continue;
}else if (((strcmp(jawab,"T"))==0)||((strcmp(jawab,"t"))==0))
break;
}
}
void tampil(int v){
int i;
puts(" NIP NAMA");
if(v==1){
for (i=0;i<=a;i++){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}else{
for (i=a;i>=0;i--){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}
}
int straightinsertsort_nip(){
int i,j;
dtpegawai tamp;
for(i=1;i<a+1;i++){
tamp=data[i];
j=i-1;
while(tamp.nip<data[j].nip){
data[j+1]=data[j];
j--;
}
data[j+1]=tamp;
}
}
void straightinsertsort_nama(){
int i,j,k,l1,l2;char kar1[15],kar2[15];
dtpegawai tamp;
for(i=1;i<a+1;i++){
k=0;
tamp=data[i];
j=i-1;
while(tamp.nama[k]==data[j].nama[k]){
k++;
}
while(tamp.nama[k]<data[j].nama[k]){
data[j+1]=data[j];
j--;
}
data[j+1]=tamp;;
}
}
void binaryinsertsort_nip(){
int i,j,l,r,m,x;
dtpegawai tamp;
for(i=1;i<a+1;i++){
tamp=data[i];
l=0;
r=i-1;
while(l<=r){
m=(l+r)/2;
if(tamp.nip<data[m].nip)
r=m-1;
else
l=m+1;
}
for(j=i-1; j>=l;j--)
data[j+1]=data[j];
data[l]=tamp;
}
}
void binaryinsertsort_nama(){
int i,j,l,r,m,x,k;
dtpegawai tamp;
for(i=1;i<a+1;i++){
tamp=data[i];
l=0;
r=i-1;
while(l<=r){
m=(l+r)/2;
while(tamp.nama[k]==data[m].nama[k]){
k++;
}
if(tamp.nama[k]<data[m].nama[k])
r=m-1;
else
l=m+1;
}
for(j=i-1; j>=l;j--)
data[j+1]=data[j];
data[l]=tamp;
}
}
int selectionsort_nip(){
int i,j,k;
dtpegawai tamp;
for(i=0;i<a;i++){
k=i;
for(j=i+1;j<a+1;j++)
if(data[k].nip>data[j].nip)
k=j;
tamp=data[i];
data[i]=data[k];
data[k]=tamp;
}
}
void selectionsort_nama(){
int i,j,k,m,kar1,kar2;
dtpegawai tamp;
for(i=0;i<a;i++){
m=0;
k=i;
for(j=i+1;j<a;j++){
kar1=data[k].nama[m];kar2=data[j].nama[m];
while(data[k].nama[m]==data[j].nama[m]){
m++;kar1=data[k].nama[m];kar2=data[j].nama[m];
}
if(kar1>kar2)
k=j;
tamp=data[i];
data[i]=data[k];
data[k]=tamp;
}
}
}
int main(){
int metode,pb,z;
ulang :
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PROGRAM PENGURUTAN DATA PEGAWAI");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts("Masukkan data pegawai : ");
tambah_data();
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PILIH METODE PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. Straighinsertionsort");
puts(" 2. Binaryinsertsort");
puts(" 3. Selectionsort");
printf("Masukkan pilihan metode : ");scanf("%d",&metode);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN BERDASARKAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. NIP");
puts(" 2. Nama Pegawai");
printf("Masukkan pilihan pengurutan : ");scanf("%d",&pb);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN SECARA");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. Ascending");
puts(" 2. Descending");
printf("Masukkan pilihan : ");scanf("%d",&z);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" HASIL PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
if(metode==1&&pb==1) straightinsertsort_nip();
if(metode==1&&pb==2) straightinsertsort_nama();
if(metode==2&&pb==1) binaryinsertsort_nip();
if(metode==2&&pb==2) binaryinsertsort_nama();
if(metode==3&&pb==1) selectionsort_nip();
if(metode==3&&pb==1) selectionsort_nama();
tampil(z);
getch();
return 0;
}
Code C : Quick and Marge (SORTING)
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define max 10
int data[max];
typedef struct{
int nip;
char nama[15];
}dtpegawai;
dtpegawai data[20];
int a=0;
void tambah_data(){
char jawab[2];
while(1){
fflush(stdin);
printf("NIP : ");scanf("%d",&data[a].nip);
fflush(stdin);
printf("Nama : ");gets(data[a].nama);
fflush(stdin);
printf("Ada data lagi (y/t):");scanf("%s",&jawab);
if(((strcmp(jawab,"Y"))==0)||((strcmp(jawab,"y"))==0)){
a++;continue;
}else if (((strcmp(jawab,"T"))==0)||((strcmp(jawab,"t"))==0))
break;
}
}
void tampil(int v){
int i;
puts(" NIP NAMA");
if(v==1){
for (i=0;i<=a;i++){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}else{
for (i=a;i>=0;i--){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}
}
void quicksort_nip(int L,int R){
int i,j,x;
struct dtpegawai tamp,a,b;
x=data[(L+R)/2];
i=L;
j=R;
while(i<=j){
while(data[i]<x)
i++;
while(data[j]>x)
j--;
if(i<=j){
a=data[i];b=data[j];
tamp=a;
a=b;
b=tamp;
i++;j--;;
}
}
if(L<j){
quicksort_nip(L,j);
}
if(i<R){
quicksort_nip(i,R);
}
}
void quicksort_nama(int L,int R){
int i,j,x;
struct dtpegawai tamp,a,b;
x=data[(L+R)/2];
i=L;
j=R;
while(i<=j){
while(data[i]<x)
i++;
while(data[j]>x)
j--;
if(i<=j){
a=data[i];b=data[j];
tamp=a;
a=b;
b=tamp;
i++;j--;;
}
}
if(L<j){
quicksort_nama(L,j);
}
if(i<R){
quicksort_nama(i,R);
}
}
int temp[max];
void merge(int data[], int temp[], int kiri, int tengah, int kanan){
int i,left_end,num_elements,tmp_pos;
left_end=tengah-1;
tmp_pos=kiri;
num_elements=kanan-kiri+1;
while((kiri<=left_end)&&(tengah<=kanan)){
if(data[kiri]<=data[tengah]){
temp[tmp_pos]=data[kiri];
tmp_pos=tmp_pos+1;
kiri=kiri+1;
}else{
temp[tmp_pos]=data[tengah];
tmp_pos=tmp_pos+1;
tengah=tengah+1;
}
}
while(kiri<=left_end){
temp[tmp_pos]=data[kiri];
kiri=kiri+1;
tmp_pos=tmp_pos+1;
}
while(tengah<=kanan){
temp[tmp_pos]=data[tengah];
tengah=tengah+1;
tmp_pos=tmp_pos+1;
}
for(i=0;i<=num_elements;i++){
data[kanan]=temp[kanan];
kanan=kanan-1;
}
}
void m_sort(int data[],int temp[], int kiri, int kanan){
int tengah;
if (kanan>kiri){
tengah=(kanan+kiri)/2;
m_sort(data, temp, kiri, tengah);
m_sort(data, temp, tengah+1, kanan);
merge(data, temp, kiri, tengah+1, kanan);
}
}
void mergesort(int data[], int temp[], int array_size){
m_sort(data, temp, 0, array_size-1);
}
int main(){
int metode,pb,z;
ulang :
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PROGRAM PENGURUTAN DATA PEGAWAI");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts("Masukkan data pegawai : ");
tambah_data();
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PILIH METODE PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. QuickSort");
puts(" 2. MergeSort");
printf("Masukkan pilihan metode : ");scanf("%d",&metode);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN BERDASARKAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. NIP");
puts(" 2. Nama Pegawai");
printf("Masukkan pilihan pengurutan : ");scanf("%d",&pb);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN SECARA");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. Ascending");
puts(" 2. Descending");
printf("Masukkan pilihan : ");scanf("%d",&z);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" HASIL PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
if(metode==1&&pb==1) quicksort_nip();
if(metode==1&&pb==2) quicksort_nama();
if(metode==2&&pb==1) mergesort_nip();
if(metode==2&&pb==2) mergesort_nama();
tampil(z);
getch();
return 0;
}
#include <conio.h>
#include <stdlib.h>
#define max 10
int data[max];
typedef struct{
int nip;
char nama[15];
}dtpegawai;
dtpegawai data[20];
int a=0;
void tambah_data(){
char jawab[2];
while(1){
fflush(stdin);
printf("NIP : ");scanf("%d",&data[a].nip);
fflush(stdin);
printf("Nama : ");gets(data[a].nama);
fflush(stdin);
printf("Ada data lagi (y/t):");scanf("%s",&jawab);
if(((strcmp(jawab,"Y"))==0)||((strcmp(jawab,"y"))==0)){
a++;continue;
}else if (((strcmp(jawab,"T"))==0)||((strcmp(jawab,"t"))==0))
break;
}
}
void tampil(int v){
int i;
puts(" NIP NAMA");
if(v==1){
for (i=0;i<=a;i++){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}else{
for (i=a;i>=0;i--){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}
}
void quicksort_nip(int L,int R){
int i,j,x;
struct dtpegawai tamp,a,b;
x=data[(L+R)/2];
i=L;
j=R;
while(i<=j){
while(data[i]<x)
i++;
while(data[j]>x)
j--;
if(i<=j){
a=data[i];b=data[j];
tamp=a;
a=b;
b=tamp;
i++;j--;;
}
}
if(L<j){
quicksort_nip(L,j);
}
if(i<R){
quicksort_nip(i,R);
}
}
void quicksort_nama(int L,int R){
int i,j,x;
struct dtpegawai tamp,a,b;
x=data[(L+R)/2];
i=L;
j=R;
while(i<=j){
while(data[i]<x)
i++;
while(data[j]>x)
j--;
if(i<=j){
a=data[i];b=data[j];
tamp=a;
a=b;
b=tamp;
i++;j--;;
}
}
if(L<j){
quicksort_nama(L,j);
}
if(i<R){
quicksort_nama(i,R);
}
}
int temp[max];
void merge(int data[], int temp[], int kiri, int tengah, int kanan){
int i,left_end,num_elements,tmp_pos;
left_end=tengah-1;
tmp_pos=kiri;
num_elements=kanan-kiri+1;
while((kiri<=left_end)&&(tengah<=kanan)){
if(data[kiri]<=data[tengah]){
temp[tmp_pos]=data[kiri];
tmp_pos=tmp_pos+1;
kiri=kiri+1;
}else{
temp[tmp_pos]=data[tengah];
tmp_pos=tmp_pos+1;
tengah=tengah+1;
}
}
while(kiri<=left_end){
temp[tmp_pos]=data[kiri];
kiri=kiri+1;
tmp_pos=tmp_pos+1;
}
while(tengah<=kanan){
temp[tmp_pos]=data[tengah];
tengah=tengah+1;
tmp_pos=tmp_pos+1;
}
for(i=0;i<=num_elements;i++){
data[kanan]=temp[kanan];
kanan=kanan-1;
}
}
void m_sort(int data[],int temp[], int kiri, int kanan){
int tengah;
if (kanan>kiri){
tengah=(kanan+kiri)/2;
m_sort(data, temp, kiri, tengah);
m_sort(data, temp, tengah+1, kanan);
merge(data, temp, kiri, tengah+1, kanan);
}
}
void mergesort(int data[], int temp[], int array_size){
m_sort(data, temp, 0, array_size-1);
}
int main(){
int metode,pb,z;
ulang :
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PROGRAM PENGURUTAN DATA PEGAWAI");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts("Masukkan data pegawai : ");
tambah_data();
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PILIH METODE PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. QuickSort");
puts(" 2. MergeSort");
printf("Masukkan pilihan metode : ");scanf("%d",&metode);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN BERDASARKAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. NIP");
puts(" 2. Nama Pegawai");
printf("Masukkan pilihan pengurutan : ");scanf("%d",&pb);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN SECARA");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. Ascending");
puts(" 2. Descending");
printf("Masukkan pilihan : ");scanf("%d",&z);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" HASIL PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
if(metode==1&&pb==1) quicksort_nip();
if(metode==1&&pb==2) quicksort_nama();
if(metode==2&&pb==1) mergesort_nip();
if(metode==2&&pb==2) mergesort_nama();
tampil(z);
getch();
return 0;
}
Code C : Bubble and Shell (SORTING)
#include <stdio.h>
#include <conio.h>
#include <string.h>
typedef struct{
int nip;
char nama[15];
}dtpegawai;
dtpegawai data[20];
int a=0;
void tambah_data(){
char jawab[2];
while(1){
fflush(stdin);
printf("NIP : ");scanf("%d",&data[a].nip);
fflush(stdin);
printf("Nama : ");gets(data[a].nama);
fflush(stdin);
printf("Ada data lagi (y/t):");scanf("%s",&jawab);
if(((strcmp(jawab,"Y"))==0)||((strcmp(jawab,"y"))==0)){
a++;continue;
}else if (((strcmp(jawab,"T"))==0)||((strcmp(jawab,"t"))==0))
break;
}
}
void tampil(int v){
int i;
puts(" NIP NAMA");
if(v==1){
for (i=0;i<=a;i++){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}else{
for (i=a;i>=0;i--){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}
}
void bubblesort_nip(){
int i,j;
dtpegawai tamp;
for(i=1;i<a;i++){
for(j=a;j>=i;j--){
if(data[j-1].nip>data[j].nip){
tamp=data[j-1];
data[j-1]=data[j];
data[j]=tamp;
}
}
}
}
void bubblesort_nama(){
int i,j,k,kar1,kar2;
dtpegawai tamp;
for(i=0;i<a-1;i++){
for(j=i+1;j<a;j++){
k=0;
kar1=data[i].nama[k];
kar2=data[j].nama[k];
while(kar1==kar2){
k++;
kar1=data[j-1].nama[k];
kar2=data[j].nama[k];
}
if(kar1>kar2){
tamp=data[i];
data[i]=data[j];
data[j]=tamp;
}
}
}
}
void shellsort_nip(){
int jarak, i,j;
dtpegawai tamp;
bool sudah;
jarak= a+1;
while(jarak>1){
jarak=jarak/2;
sudah=false;
while(!sudah){
sudah=true;
for(j=0;j<(a+1)-jarak;j++){
i=j+jarak;
if(data[j].nip>data[i].nip){
tamp=data[j];
data[j]=data[i];
data[i]=tamp;
sudah=false;
}
}
}
}
}
void shellsort_nama(){
int jarak, i,j,k=0;
bool sudah;
jarak= a+1;
while(jarak>1){
jarak=jarak/2;
sudah=false;
while(!sudah){
sudah=true;
for(j=0;j<(a+1)-jarak;j++){
i=j+jarak;
while(data[j].nama[k]==data[i].nama[k])
k++;
if(data[j].nama[k]>data[i].nama[k]){
tukar(&data[j],&data[i]);
sudah=false;
}
}
}
}
}
int main(){
int metode,pb,z;
ulang :
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PROGRAM PENGURUTAN DATA PEGAWAI");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts("Masukkan data pegawai : ");
tambah_data();
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PILIH METODE PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. Bubblesort");
puts(" 2. Shellsort");
printf("Masukkan pilihan metode : ");scanf("%d",&metode);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN BERDASARKAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. NIP");
puts(" 2. Nama Pegawai");
printf("Masukkan pilihan pengurutan : ");scanf("%d",&pb);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN SECARA");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. Ascending");
puts(" 2. Descending");
printf("Masukkan pilihan : ");scanf("%d",&z);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" HASIL PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
if(metode==1&&pb==1) bubblesort_nip();
if(metode==1&&pb==2) bubblesort_nama();
if(metode==2&&pb==1) bubblesort_nip();
if(metode==2&&pb==2) bubblesort_nama();
tampil(z);
getch();
return 0;
}
#include <conio.h>
#include <string.h>
typedef struct{
int nip;
char nama[15];
}dtpegawai;
dtpegawai data[20];
int a=0;
void tambah_data(){
char jawab[2];
while(1){
fflush(stdin);
printf("NIP : ");scanf("%d",&data[a].nip);
fflush(stdin);
printf("Nama : ");gets(data[a].nama);
fflush(stdin);
printf("Ada data lagi (y/t):");scanf("%s",&jawab);
if(((strcmp(jawab,"Y"))==0)||((strcmp(jawab,"y"))==0)){
a++;continue;
}else if (((strcmp(jawab,"T"))==0)||((strcmp(jawab,"t"))==0))
break;
}
}
void tampil(int v){
int i;
puts(" NIP NAMA");
if(v==1){
for (i=0;i<=a;i++){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}else{
for (i=a;i>=0;i--){
printf(" %d\t\t%s\n",data[i].nip,data[i].nama);
}
}
}
void bubblesort_nip(){
int i,j;
dtpegawai tamp;
for(i=1;i<a;i++){
for(j=a;j>=i;j--){
if(data[j-1].nip>data[j].nip){
tamp=data[j-1];
data[j-1]=data[j];
data[j]=tamp;
}
}
}
}
void bubblesort_nama(){
int i,j,k,kar1,kar2;
dtpegawai tamp;
for(i=0;i<a-1;i++){
for(j=i+1;j<a;j++){
k=0;
kar1=data[i].nama[k];
kar2=data[j].nama[k];
while(kar1==kar2){
k++;
kar1=data[j-1].nama[k];
kar2=data[j].nama[k];
}
if(kar1>kar2){
tamp=data[i];
data[i]=data[j];
data[j]=tamp;
}
}
}
}
void shellsort_nip(){
int jarak, i,j;
dtpegawai tamp;
bool sudah;
jarak= a+1;
while(jarak>1){
jarak=jarak/2;
sudah=false;
while(!sudah){
sudah=true;
for(j=0;j<(a+1)-jarak;j++){
i=j+jarak;
if(data[j].nip>data[i].nip){
tamp=data[j];
data[j]=data[i];
data[i]=tamp;
sudah=false;
}
}
}
}
}
void shellsort_nama(){
int jarak, i,j,k=0;
bool sudah;
jarak= a+1;
while(jarak>1){
jarak=jarak/2;
sudah=false;
while(!sudah){
sudah=true;
for(j=0;j<(a+1)-jarak;j++){
i=j+jarak;
while(data[j].nama[k]==data[i].nama[k])
k++;
if(data[j].nama[k]>data[i].nama[k]){
tukar(&data[j],&data[i]);
sudah=false;
}
}
}
}
}
int main(){
int metode,pb,z;
ulang :
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PROGRAM PENGURUTAN DATA PEGAWAI");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts("Masukkan data pegawai : ");
tambah_data();
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PILIH METODE PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. Bubblesort");
puts(" 2. Shellsort");
printf("Masukkan pilihan metode : ");scanf("%d",&metode);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN BERDASARKAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. NIP");
puts(" 2. Nama Pegawai");
printf("Masukkan pilihan pengurutan : ");scanf("%d",&pb);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" PENGURUTAN SECARA");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" 1. Ascending");
puts(" 2. Descending");
printf("Masukkan pilihan : ");scanf("%d",&z);
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
puts(" HASIL PENGURUTAN");
puts("+++++++++++++++++++++++++++++++++++++++++++++++++++++++");
if(metode==1&&pb==1) bubblesort_nip();
if(metode==1&&pb==2) bubblesort_nama();
if(metode==2&&pb==1) bubblesort_nip();
if(metode==2&&pb==2) bubblesort_nama();
tampil(z);
getch();
return 0;
}
Langganan:
Postingan (Atom)
Arsip Blog
-
▼
2015
(12)
-
▼
Juni
(10)
- Download Structur Data
- Code C : Single Link List
- Code C : Single Link List
- Code C : Single link list
- Code C : Sequantial and Binary (SEARCHING)
- Code C ; (Straigh/Binary)Insertion and Selection (...
- Code C : Quick and Marge (SORTING)
- Code C : Bubble and Shell (SORTING)
- Code C : Progressive Oferflow
- Code C : batu kertas gunting
-
▼
Juni
(10)
Me
- Achmad Rahman Mawardi
- I'm 18 year old I'm ugly I'm lazy I do what I want I'm poor I want to learn and I want make money