Minggu, 07 Juni 2015

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

Tidak ada komentar:

Posting Komentar

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