Kamis, 10 September 2015

Sorting Struct

Disini saya akan membuat sebuah program yang digunakan untuk menginputkan catatan waktu para pelari kemudian program akan mengurutkannya dari pelari yang paling cepat.

Pertama buatlah struct yang memiliki beberapa elemen diantaranya: nomor, nama, jam, menit, detik, jumlah waktu.


struct peserta {
  int no;
  char nama[20];
  int jam;
  int mnt;
  int dtk;
  int jml;
};


Kemudian inputkan data berupa jumlah pelari kemudian minta user untuk menginputkan elemen-elemen yang dimiliki oleh pelari kedalam struct.
int a,i,x,y,z;
("Masukkan jumlah peserta ");
scanf("%d",&x);
struct peserta pes[x], swap;
for(i=0; i < x;i++) {
  printf("No : ");
  scanf("%d",&pes[i].no);
  printf("Nama : ");
  scanf("%s",&pes[i].nama);
  printf("Jam : ");
  scanf("%d",&pes[i].jam);
  printf("Menit : ");
  scanf("%d",&pes[i].mnt);
  printf("Detik : ");
  scanf("%d",&pes[i].dtk);
  printf("-----------------------------\n");
  pes[i].jml = (pes[i].jam*3600)+(pes[i].mnt*60)+             (pes[i].dtk);
};

Kemudian program akan otomatis mengurutkan data para pelari sesuai dengan catatan waktu tercepat.

for(z=0; z<x-1; z++) {
  for(y=0; y<x-1; y++) {
    if(pes[y].jml > pes[y+1].jml) {
      swap = pes[y];
      pes[y] = pes[y+1];
      pes[y+1] = swap;
    }
  }
}
Terakhir hasil akan dikeluarkan secara urut dari pelari yang memiliki catatan waktu paling cepat.

for(a=0; a<x; a++) { 
printf("%d %s %d jam %d menit %d detik, total %d\n",pes[a].no,pes[a].nama,pes[a].jam,pes[a].mnt,pes[a].dtk,pes[a].jml);
}
Full code :
#include
#include
struct peserta {
int no;
char nama[20];
int jam;
int mnt;
int dtk;
int jml;
};

int main()
{
int a,i,x,y,z;
printf("Masukkan jumlah peserta ");
scanf("%d",&x);
struct peserta pes[x], swap;
for(i=0; i < x;i++) {
printf("No : ");
scanf("%d",&pes[i].no);
printf("Nama : ");
scanf("%s",&pes[i].nama);
printf("Jam : ");
scanf("%d",&pes[i].jam);
printf("Menit : ");
scanf("%d",&pes[i].mnt);
printf("Detik : ");
scanf("%d",&pes[i].dtk);
printf("-----------------------------\n");
pes[i].jml = (pes[i].jam*3600)+(pes[i].mnt*60)+(pes[i].dtk);
};
for(z=0; z swap = pes[y];
pes[y] = pes[y+1];
pes[y+1] = swap;
}
}
}
for(a=0; a printf("%d %s %d jam %d menit %d detik, total %d\n",pes[a].no,pes[a].nama,pes[a].jam,pes[a].mnt,pes[a].dtk,pes[a].jml);
}
}

1 komentar: