Minggu, 07 Juni 2015

Download Structur Data

Data Structur Bahasa C : Download Direct

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;
}

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;
}

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;
}

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;
}

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;
}

Me

Foto saya
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