Advertisement
rizky_herucakra

binary search C++11

Apr 25th, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. void input_barang();
  9. void tampil_barang();
  10. void cari_barang();
  11.  
  12. struct barang_baru
  13. {
  14.     string id;
  15.     string nama_barang;
  16.     string harga;
  17.     string satuan;
  18.     string jml_stok;
  19.     string cari;
  20. };
  21.  
  22. vector<barang_baru> rs;
  23.  
  24. int main()
  25. {
  26.     int pilihan;
  27.     char menus;
  28.     do
  29.     {
  30.         cout << " |====================|\n";
  31.         cout << " | MENU PILIHAN |\n";
  32.         cout << " |====================|\n";
  33.         cout << " | |\n";
  34.         cout << " | 1. Input Barang |\n";
  35.         cout << " | |\n";
  36.         cout << " | 2. Tampil Barang |\n";
  37.         cout << " | |\n";
  38.         cout << " | 3. Cari Barang |\n";
  39.         cout << " |====================|\n";
  40.         cout << "\nMasukkan pilihan anda : "; cin >> pilihan;
  41.         switch (pilihan)
  42.         {
  43.         case 1:
  44.             input_barang();
  45.             break;
  46.         case 2:
  47.             tampil_barang();
  48.             break;
  49.         case 3:
  50.             cari_barang();
  51.             break;
  52.         default:
  53.             cout << "Menu Pilihan Tidak ada\n";
  54.            
  55.         }
  56.         cout << "\nCoba Lagi[Y/T] : "; cin >>menus;
  57.         menus = tolower(menus);
  58.     } while (menus != 't');
  59. }
  60. void input_barang()
  61. {
  62.     int x, y;
  63.     cout << "\n1. Input Barang\n\n";
  64.     cout << "Masukkan Berapa Data Yang akan diinput : "; cin >> x;
  65.     for (y = 0; y<x; y++)
  66.     {
  67.         barang_baru tmp;
  68.         cout << "ID Barang : "; cin >> tmp.id;
  69.         cout << "Nama Barang : "; cin >> tmp.nama_barang;
  70.         cout << "Harga : "; cin >> tmp.harga;
  71.         cout << "Satuan : "; cin >> tmp.satuan;
  72.         cout << "Jumlah Stok : "; cin >> tmp.jml_stok;
  73.         rs.push_back(tmp);
  74.     }
  75.  
  76.     sort(rs.begin(), rs.end(), [](barang_baru& a, barang_baru& b){
  77.         return a.id < b.id;
  78.     });
  79. }
  80. void tampil_barang()
  81. {
  82.     cout << "Outputnya ";
  83.     cout << "\nID \t Nama Barang \t\t Harga \t\t Satuan\t Jumlah Stok \n";
  84.     for (auto&& item : rs)
  85.     {
  86.         cout << "\n" << item.id << "\t" << item.nama_barang << "\t\t" << item.harga << "\t\t" << item.satuan << "\t\t" << item.jml_stok;
  87.     }
  88. }
  89.  
  90. void cari_barang(){
  91.     cout << "Masukkan id yang dicari : ";
  92.     string id;
  93.     cin >> id;
  94.     size_t max_idx  = rs.size();
  95.     size_t min_idx = 0;
  96.  
  97.     while (max_idx > min_idx){
  98.         size_t midpoint = min_idx + ( (max_idx - min_idx) / 2);
  99.         if (rs[midpoint].id < id){
  100.             min_idx = midpoint + 1;
  101.         }
  102.         else {
  103.             max_idx = midpoint;
  104.         }
  105.  
  106.     }
  107.  
  108.     if (min_idx < rs.size() && rs[min_idx].id == id){
  109.         auto item = rs[min_idx];
  110.         cout << "\nID \t Nama Barang \t\t Harga \t\t Satuan\t Jumlah Stok \n";
  111.         cout << "\n" << item.id << "\t" << item.nama_barang << "\t\t" << item.harga << "\t\t" << item.satuan << "\t\t" << item.jml_stok;
  112.     }
  113.     else {
  114.         cout << "Item not found\n";
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement