#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;
}
Langganan:
Posting Komentar (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
Tidak ada komentar:
Posting Komentar