Sabtu, September 05, 2015

Struct Swap



Terdapat kasus


Menghitung kecepatan dari pelari yang mengikuti perlombaan lari setelah melewati garis finish dengan data awal pelari berikut :

Nomor punggung
Nama
Jam
Menit
Detik
23
Okte
3
45
33
70
Cahya
1
30
38

Dengan data di atas maka buatlah program untuk mengurutkan dengan melihat jumlah waktu tercepat.
Jika program berjalan dengan benar maka hasilnya akan seperti di bawah ini yang menunjukkan waktu tercepatnya yang menunjukkan pelari cahya yang memiliki jumlah waktu yang paling cepat.

Nomor punggung
Nama
Jam
Menit
Detik
Jumlah waktu
70
Cahya
1
30
38
5438
23
Okte
3
45
33
13533

untuk bisa memecahkan kasus tersebut maka program yang  harus di buat mempergunakan beberapa cara yaitu:
  1.   Struct
Struct di pergunakan untuk memasukkan isi dari data yang di butuhkan dalam program seperti nama, nomer, jam, menit ,detik dan jumlah .

          2. Sorting
            Metode sorting di pergunakan untuk membandingkan data yang sudah terdapat dalam                         penyimpanan sementara.

dalam menghitung jumlah watu yang diperoleh oleh pelari tersebut maka kita harus mengkalkulasikan perhitungan tersebut kedalam detik agar terdapat kesamaan sehingga terdapat rumus jumlah = ( jam x 3600 ) + ( menit x 60 ) + ( detik  x 1 ) 

maka coding dalam program tersebut adalah  :

#include <stdio.h>
#include <stdlib.h>

struct tabel
{
    char nama[10];
    int nomer;
    int jam;
    int menit;
    int detik;
    int jumlah;
}data[20], swap;
int main()
{
    int a,i,jml,b,j;

    printf("masukkan jumlah pelari: ");
    scanf("%d",&jml);

    for(i=0;i<jml;i++)
    {
        printf("masukkan Nama ke-%d: ",i+1);
        scanf("%s",&data[i].nama);
        printf("masukkan nomer ke-%d: ",i+1);
        scanf("%d",&data[i].nomer);
        printf("masukkan jam ke-%d: ",i+1);
        scanf("%d",&data[i].jam);
        printf("masukkan menit ke-%d: ",i+1);
        scanf("%d",&data[i].menit);
        printf("masukkan detik ke-%d: ",i+1);
        scanf("%d",&data[i].detik);
        data[i].jumlah=(data[i].jam*3600+data[i].menit*60+data[i].detik*1);
        printf("\n______________________________________\n");
    };
    for(a=0;a<jml-1;a++)
    {
        for(b=0;b<jml-1;b++)
        {
            if (data[b].jumlah > data[b+1].jumlah) {
                swap = data[b];
                data[b] = data[b+1];
                data[b+1] = swap;
            }
        }
    }
      printf("Nama \t\tNomer \tjam \tmenit \tdetik \t jumlah \n");
    for(j=0;j<jml;j++)
    {
        printf("%s \t\t%d \t%d \t%d \t%d \t%d\n",data[j].nama,
               data[j].nomer,data[j].jam,data[j].menit,data[j].detik,data[j].jumlah);
    }
    printf("\n______________________________________\n");
}


program di atas setelah di running akan menunjukkan gambar seperti di bawah ini 


sebagai contoh jumlah terdapat 2 pelari 


masukkan data pelari ke satu dan kedua



jika data sudah inputkan semua maka hasil dari program adalah sebagai berikut





Selamat Mencoba :)

0 komentar:

Posting Komentar

  • Blogger news

  • Blogroll