Bagosep

Quick Sort and Sequential Search (LIKE SQL) By Name

May 8th, 2017
86
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <windows.h>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. struct produk{
  10.     int laki_laki = 56500;
  11.     int perempuan = 76100;
  12.     int jumlah_kain=0;
  13.     int biaya_tambahan;
  14.     int kain_lebih = 0;
  15.     int total_meter = 0;
  16.     int total=0;
  17.     int total_tambahan=0;
  18.     char nama[20];
  19.     char jenis_baju[15];
  20.     char kualitas[20];
  21. };
  22.  
  23. int top = 0;
  24. produk data[20];
  25. bool cek;
  26.  
  27. void input(){
  28.     cin.ignore();
  29.     cout<<"Masukan Nama pembeli = ";cin.getline(data[top].nama, 20);
  30.     cout<<"Masukan Jenis baju = ";cin.getline(data[top].jenis_baju, 15);
  31.  
  32.     if(strcmp(data[top].jenis_baju, "laki-laki")==0){
  33.         cout<<"Masukan Kualitas kain = ";cin.getline(data[top].kualitas, 20);
  34.         if(strcmp(data[top].kualitas, "super")==0){
  35.             cout<<"\nMasukan Jumlah meter kain yang anda beli = ";cin>>data[top].jumlah_kain;
  36.             if(data[top].jumlah_kain >= 1){
  37.                 if(data[top].jumlah_kain > 2){
  38.                     cout<<"\nAnda membeli jumlah kain lebih dari standart kain laki - laki";
  39.                     cout<<"\nAnda dikenakan biaya tambahan = ";cin>>data[top].biaya_tambahan;
  40.                     data[top].total_tambahan = ((data[top].jumlah_kain - 2)* 2)* data[top].biaya_tambahan;
  41.                 }
  42.                 data[top].total_meter = (data[top].jumlah_kain) * 40000;
  43.             }
  44.             data[top].total = data[top].laki_laki + data[top].total_tambahan + data[top].total_meter;
  45.         }
  46.         else if(strcmp(data[top].kualitas, "bagus")==0){
  47.             cout<<"\nMasukan Jumlah meter kain yang anda beli = ";cin>>data[top].jumlah_kain;
  48.             if(data[top].jumlah_kain >= 1){
  49.                 if(data[top].jumlah_kain > 2){
  50.                     cout<<"\nAnda membeli jumlah kain lebih dari standart kain laki - laki";
  51.                     cout<<"\nAnda dikenakan biaya tambahan = ";cin>>data[top].biaya_tambahan;
  52.                     data[top].total_tambahan = ((data[top].jumlah_kain -2)*2)* data[top].biaya_tambahan;
  53.                 }
  54.                 data[top].total_meter = (data[top].jumlah_kain) * 30000;
  55.             }
  56.             data[top].total = data[top].laki_laki + data[top].total_tambahan + data[top].total_meter;
  57.         }
  58.         else if(strcmp(data[top].kualitas, "biasa")==0){
  59.             cout<<"\nMasukan Jumlah meter kain yang anda beli = ";cin>>data[top].jumlah_kain;
  60.             if(data[top].jumlah_kain >= 1){
  61.                 if(data[top].jumlah_kain > 2){
  62.                     cout<<"\nAnda membeli jumlah kain lebih dari standart kain laki - laki";
  63.                     cout<<"\nAnda dikenakan biaya tambahan = ";cin>>data[top].biaya_tambahan;
  64.                     data[top].total_tambahan = ((data[top].jumlah_kain - 2) * 2)* data[top].biaya_tambahan;
  65.                 }
  66.                 data[top].total_meter = (data[top].jumlah_kain) * 25000;
  67.             }
  68.             data[top].total = data[top].laki_laki + data[top].total_tambahan + data[top].total_meter;
  69.         }
  70.     }
  71.  
  72.     else if(strcmp(data[top].jenis_baju, "perempuan")==0){
  73.         cout<<"Masukan Kualitas kain = ";cin.getline(data[top].kualitas, 20);
  74.         if(strcmp(data[top].kualitas, "super")==0){
  75.             cout<<"\nMasukan Jumlah meter kain yang anda beli = ";cin>>data[top].jumlah_kain;
  76.             if(data[top].jumlah_kain >= 1){
  77.                 if(data[top].jumlah_kain > 3){
  78.                     cout<<"\nAnda membeli jumlah kain lebih dari standart kain perempuan";
  79.                     cout<<"\nAnda dikenakan biaya tambahan = ";cin>>data[top].biaya_tambahan;
  80.                     data[top].total_tambahan = ((data[top].jumlah_kain - 2)* 2)* data[top].biaya_tambahan;
  81.                 }
  82.                 data[top].total_meter = (data[top].jumlah_kain) * 40000;
  83.             }
  84.             data[top].total = data[top].perempuan + data[top].total_tambahan + data[top].total_meter;
  85.         }
  86.         else if(strcmp(data[top].kualitas, "bagus")==0){
  87.             cout<<"\nMasukan Jumlah meter kain yang anda beli = ";cin>>data[top].jumlah_kain;
  88.             if(data[top].jumlah_kain >= 1){
  89.                 if(data[top].jumlah_kain > 3){
  90.                     cout<<"\nAnda membeli jumlah kain lebih dari standart kain perempuan";
  91.                     cout<<"\nAnda dikenakan biaya tambahan = ";cin>>data[top].biaya_tambahan;
  92.                     data[top].total_tambahan = ((data[top].jumlah_kain -2)*2)* data[top].biaya_tambahan;
  93.                 }
  94.                 data[top].total_meter = (data[top].jumlah_kain) * 30000;
  95.             }
  96.             data[top].total = data[top].perempuan + data[top].total_tambahan + data[top].total_meter;
  97.         }
  98.         else if(strcmp(data[top].kualitas, "biasa")==0){
  99.             cout<<"\nMasukan Jumlah meter kain yang anda beli = ";cin>>data[top].jumlah_kain;
  100.             if(data[top].jumlah_kain >= 1){
  101.                 if(data[top].jumlah_kain > 3){
  102.                     cout<<"\nAnda membeli jumlah kain lebih dari standart kain perempuan";
  103.                     cout<<"\nAnda dikenakan biaya tambahan = ";cin>>data[top].biaya_tambahan;
  104.                     data[top].total_tambahan = ((data[top].jumlah_kain - 2) * 2)* data[top].biaya_tambahan;
  105.                 }
  106.                 data[top].total_meter = (data[top].jumlah_kain) * 25000;
  107.             }
  108.             data[top].total = data[top].perempuan + data[top].total_tambahan + data[top].total_meter;
  109.         }
  110.     }
  111.     top++;
  112. }
  113.  
  114. void quickSort(int kiri, int kanan){
  115.     int i = kiri, j = kanan, huruf1, huruf2;
  116.     produk simpan;
  117.     int tengah = (kiri + kanan) / 2;
  118.  
  119.  
  120.     while(data[i].nama[0] < data[tengah].nama[0]){
  121.         i++;
  122.     }
  123.  
  124.     while(data[j].nama[0] > data[tengah].nama[0]){
  125.         j--;
  126.     }
  127.  
  128.     if(j != tengah && i != j){
  129.         if(data[j].nama[0] == data[tengah].nama[0]){
  130.         int arr = 0;
  131.         bool cek;
  132.  
  133.         while(data[tengah].nama[arr] != '\0'){
  134.             cek = false;
  135.             while(data[j].nama[arr] > data[tengah].nama[arr]){
  136.                 j--;
  137.                 arr = 0;
  138.                 cek = true;
  139.             }
  140.             if(cek)
  141.                 break;
  142.  
  143.             arr++;
  144.             }
  145.         }
  146.     }
  147.  
  148.     if(i != tengah && j != i){
  149.         if(data[i].nama[0] == data[tengah].nama[0]){
  150.         int arr = 0;
  151.         bool cek;
  152.  
  153.         while(data[tengah].nama[arr] != '\0'){
  154.             cek = false;
  155.             while(data[i].nama[arr] < data[tengah].nama[arr]){
  156.                 i++;
  157.                 arr = 0;
  158.                 cek = true;
  159.             }
  160.             if(cek)
  161.                 break;
  162.  
  163.             arr++;
  164.             }
  165.         }
  166.     }
  167.  
  168.  
  169.     if(i <= j){
  170.         simpan = data[i];
  171.         data[i] = data[j];
  172.         data[j] = simpan;
  173.         i++;
  174.         j--;
  175.  
  176.     }
  177.     if(kiri<j){
  178.         quickSort(kiri, j);
  179.     }
  180.     if(i < kanan){
  181.         quickSort(i, kanan);
  182.     }
  183. }
  184.  
  185. void cari(){
  186.     char nama[20];
  187.     bool  sub_cek;
  188.     int cari, sub_cari, huruf1, huruf2;
  189.     int ketemu = 0;
  190.     cin.ignore();
  191.     cout<<"Masukan Nama yang ingin Dicari : ";
  192.     cin.getline(nama, 20);
  193.     for(int x = 0; x<top; x++){
  194.         cari = 0;
  195.  
  196.             bool finded = false;
  197.             sub_cek = false;
  198.             cari = 0;
  199.             sub_cari = 0;
  200.  
  201.             huruf1 = int(data[x].nama[sub_cari]);
  202.             huruf2 = int(nama[cari]);
  203.  
  204.             if(huruf1 < 97)
  205.                 huruf1 = huruf1 + 32;
  206.             if(huruf2 < 97)
  207.                 huruf2 = huruf2 + 32;
  208.  
  209.             while(data[x].nama[sub_cari]!='\0'){
  210.                 huruf1 = int(data[x].nama[sub_cari]);
  211.                 huruf2 = int(nama[cari]);
  212.                 if(huruf1 < 97)
  213.                     huruf1 = huruf1 + 32;
  214.                 if(huruf2 < 97)
  215.                     huruf2 = huruf2 + 32;
  216.                 if(data[x].nama[sub_cari] == nama[cari] || huruf1 == huruf2){
  217.                     while(nama[cari]!='\0'){
  218.                         huruf1 = int(data[x].nama[sub_cari]);
  219.                         huruf2 = int(nama[cari]);
  220.                         if(huruf1 < 97)
  221.                             huruf1 = huruf1 + 32;
  222.                         if(huruf2 < 97)
  223.                             huruf2 = huruf2 + 32;
  224.  
  225.                         if(data[x].nama[sub_cari] != nama[cari] || huruf1 != huruf2){
  226.                             finded = false;
  227.                             break;
  228.                         }
  229.                         else
  230.                             finded = true;
  231.                         cari++;
  232.                         sub_cari++;
  233.                     }
  234.                     if(finded){
  235.                         sub_cek = true;
  236.                     }
  237.                 }
  238.                 if(!sub_cek)
  239.                     sub_cari++;
  240.                 else
  241.                     break;
  242.             }
  243.  
  244.         if(sub_cek){
  245.             cout<<"\nNama Pembeli = "<<data[x].nama;
  246.             cout<<"\nJenis Baju = "<<data[x].jenis_baju;
  247.             cout<<"\nKualitas = "<<data[x].kualitas;
  248.             cout<<"\nJenis Kain = "<<data[x].jumlah_kain;
  249.             cout<<"\nBiaya Tambahan = "<<data[x].biaya_tambahan;
  250.             cout<<"\nTotal = "<<data[x].total;
  251.             cout<<endl<<endl;
  252.             ketemu++;
  253.         }
  254.         if(ketemu == 0 && x == top-1){
  255.             cout<<"Data Tidak Ditemukan"<<endl;
  256.         }
  257.     }
  258. }
  259.  
  260. void tampil(){
  261.     for(int i=0; i<top; i++){
  262.         cout<<"\nNama Pembeli = "<<data[i].nama;
  263.         cout<<"\nJenis Baju = "<<data[i].jenis_baju;
  264.         cout<<"\nKualitas = "<<data[i].kualitas;
  265.         cout<<"\nJenis Kain = "<<data[i].jumlah_kain;
  266.         cout<<"\nBiaya Tambahan = "<<data[i].biaya_tambahan;
  267.         cout<<"\nTotal = "<<data[i].total;
  268.         cout<<endl;
  269.     }
  270.     cout<<endl;
  271. }
  272.  
  273.  
  274. int main()
  275. {
  276.     bool cek = false;
  277.     int menu;
  278.     char ulang;
  279.     do{
  280.     cout<<"\nMenu";
  281.     cout<<"\n1. Input";
  282.     cout<<"\n2. Sorting";
  283.     cout<<"\n3. Cari";
  284.     cout<<"\n4. View";
  285.     cout<<"\nPilihan anda = ";cin>>menu;
  286.     switch(menu){
  287.     case 1:
  288.         input();
  289.         break;
  290.     case 2:
  291.     quickSort(0, top-1);
  292.         break;
  293.     case 3:
  294.         cari();
  295.         break;
  296.     case 4:
  297.         tampil();
  298.         break;
  299.     }
  300.     cout<<"\n\nUlang = ";cin>>ulang;
  301.     system("cls");
  302.     }while(ulang=='y');
  303.     return 0;
  304. }
RAW Paste Data