Advertisement
ajiscorp

Penerapan Buble Sort Pada Struct di C++

May 23rd, 2012
1,473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.13 KB | None | 0 0
  1. #include<iostream.h>
  2. #include<string.h>
  3.  
  4. int main()
  5. {
  6.     struct DataMhs
  7.     {
  8.         long int nim;
  9.         char nama[50];
  10.         int uts, uas, prak, na;
  11.     };
  12.     int menu, hasil, i, j, BykMhs;
  13.     DataMhs mahasiswa[50];
  14.     DataMhs temp;
  15.  
  16.     cout<<"Sorting"<<endl;
  17.     cout<<"Banyak mahasiswa : "; cin>>BykMhs;
  18.  
  19.     //input data
  20.     for(int a=0; a<BykMhs; a++)
  21.     {
  22.         cout<<"Nim : "; cin>>mahasiswa[a].nim;
  23.         cout<<"Nama : "; cin>>mahasiswa[a].nama;
  24.         cout<<"UTS : "; cin>>mahasiswa[a].uts;
  25.         cout<<"UAS : "; cin>>mahasiswa[a].uas;
  26.         cout<<"Praktek : "; cin>>mahasiswa[a].prak;
  27.         hasil = (0.25 * mahasiswa[a].uts) + (0.5 * mahasiswa[a].uas) + (0.25 * mahasiswa[a].prak);
  28.         mahasiswa[a].na=hasil;
  29.         cout<<endl;
  30.     }
  31.  
  32.     //data sebelum urut
  33.     cout<<"Data yang anda masukkan (belum urut)"<<endl;
  34.     for(int b=0; b<BykMhs; b++)
  35.     {
  36.         cout<<"Nim : "<<mahasiswa[b].nim<<endl
  37.              <<"Nama : "<<mahasiswa[b].nama<<endl
  38.              <<"UTS : "<<mahasiswa[b].uts<<endl
  39.              <<"UAS : "<<mahasiswa[b].uas<<endl
  40.              <<"Praktek : "<<mahasiswa[b].prak<<endl
  41.              <<"Nilai akhir : "<<mahasiswa[b].na<<endl<<endl;
  42.     }
  43.  
  44.     //menampilkan menu pilihan untuk sorting
  45.     cout<<endl<<"Menu pilihan sorting : "<<endl
  46.          <<"[1] Urut berdasarkan NIM"<<endl
  47.          <<"[2] Urut berdasarkan Nilai Akhir"<<endl
  48.          <<"Silahkan masukkan pilihan anda : "; cin>>menu;
  49.  
  50.     //sorting
  51.     if(menu==1)
  52.     {
  53.         //sorting (buble sort) berdasarkan nim
  54.         for(i=0; i<BykMhs-1; i++)
  55.         {
  56.             for(j=0; j<BykMhs-1-i; j++)
  57.             {
  58.                 if(mahasiswa[j].nim>mahasiswa[j+1].nim)
  59.                 {
  60.                     //tukar nim
  61.                     temp.nim=mahasiswa[j].nim;
  62.                     mahasiswa[j].nim=mahasiswa[j+1].nim;
  63.                     mahasiswa[j+1].nim=temp.nim;
  64.  
  65.  
  66.                     //tukar nama
  67.                     strcpy(temp.nama, mahasiswa[j].nama);
  68.                     strcpy(mahasiswa[j].nama, mahasiswa[j+1].nama);
  69.                     strcpy(mahasiswa[j+1].nama, temp.nama);
  70.  
  71.                     //tukar UTS
  72.                     temp.uts=mahasiswa[j].uts;
  73.                     mahasiswa[j].uts=mahasiswa[j+1].uts;
  74.                     mahasiswa[j+1].uts=temp.uts;
  75.  
  76.                     //tukar UAS
  77.                     temp.uas=mahasiswa[j].uas;
  78.                     mahasiswa[j].uas=mahasiswa[j+1].uas;
  79.                     mahasiswa[j+1].uas=temp.uas;
  80.  
  81.                     //tukar Praktek
  82.                     temp.prak=mahasiswa[j].prak;
  83.                     mahasiswa[j].prak=mahasiswa[j+1].prak;
  84.                     mahasiswa[j+1].prak=temp.prak;
  85.  
  86.                     //tukar nilai akhir
  87.                     temp.na=mahasiswa[j].na;
  88.                     mahasiswa[j].na=mahasiswa[j+1].na;
  89.                     mahasiswa[j+1].na=temp.na;
  90.                 }
  91.             }
  92.         }
  93.         //data setelah urut
  94.         cout<<"\nData telah urut"<<endl;
  95.         for(int c=0; c<BykMhs; c++)
  96.         {
  97.             cout<<"Nim : "<<mahasiswa[c].nim<<endl
  98.                  <<"Nama : "<<mahasiswa[c].nama<<endl
  99.                  <<"UTS : "<<mahasiswa[c].uts<<endl
  100.                  <<"UAS : "<<mahasiswa[c].uas<<endl
  101.                  <<"Praktek : "<<mahasiswa[c].prak<<endl
  102.                  <<"Nilai akhir : "<<mahasiswa[c].na<<endl<<endl;
  103.         }
  104.     }else if(menu==2)
  105.     {
  106.         //sorting (buble sort) berdasarkan nilai akhir
  107.         for(i=0; i<BykMhs-1; i++)
  108.         {
  109.             for(j=0; j<BykMhs-1-i; j++)
  110.             {
  111.                 if(mahasiswa[j].na>mahasiswa[j+1].na)
  112.                 {
  113.                     //tukar nim
  114.                     temp.nim=mahasiswa[j].nim;
  115.                     mahasiswa[j].nim=mahasiswa[j+1].nim;
  116.                     mahasiswa[j+1].nim=temp.nim;
  117.  
  118.  
  119.                     //tukar nama
  120.                     strcpy(temp.nama, mahasiswa[j].nama);
  121.                     strcpy(mahasiswa[j].nama, mahasiswa[j+1].nama);
  122.                     strcpy(mahasiswa[j+1].nama, temp.nama);
  123.  
  124.                     //tukar UTS
  125.                     temp.uts=mahasiswa[j].uts;
  126.                     mahasiswa[j].uts=mahasiswa[j+1].uts;
  127.                     mahasiswa[j+1].uts=temp.uts;
  128.  
  129.                     //tukar UAS
  130.                     temp.uas=mahasiswa[j].uas;
  131.                     mahasiswa[j].uas=mahasiswa[j+1].uas;
  132.                     mahasiswa[j+1].uas=temp.uas;
  133.  
  134.                     //tukar Praktek
  135.                     temp.prak=mahasiswa[j].prak;
  136.                     mahasiswa[j].prak=mahasiswa[j+1].prak;
  137.                     mahasiswa[j+1].prak=temp.prak;
  138.  
  139.                     //tukar nilai akhir
  140.                     temp.na=mahasiswa[j].na;
  141.                     mahasiswa[j].na=mahasiswa[j+1].na;
  142.                     mahasiswa[j+1].na=temp.na;
  143.                 }
  144.             }
  145.         }
  146.           //data setelah urut
  147.         cout<<"\nData telah urut"<<endl;
  148.         for(int c=0; c<BykMhs; c++)
  149.         {
  150.             cout<<"Nim : "<<mahasiswa[c].nim<<endl
  151.                  <<"Nama : "<<mahasiswa[c].nama<<endl
  152.                  <<"UTS : "<<mahasiswa[c].uts<<endl
  153.                  <<"UAS : "<<mahasiswa[c].uas<<endl
  154.                  <<"Praktek : "<<mahasiswa[c].prak<<endl
  155.                  <<"Nilai akhir : "<<mahasiswa[c].na<<endl<<endl;
  156.         }
  157.     }else
  158.     {
  159.         cout<<"Menu yang anda masukkan tidak valid"<<endl;
  160.     }
  161.  
  162.     return 0;
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement