Advertisement
oke_google

Sorting and Searching (by Name)

Apr 30th, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.66 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. struct data_user{
  8.     char nama[50];
  9.     int umur;
  10. };
  11.  
  12. data_user user[100], temp;
  13.  
  14.  
  15. void input_data(int posisi){
  16.     cin.ignore();
  17.     cout<<"Masukan Nama = ";
  18.     cin.getline(user[posisi].nama, 50);
  19.     cout<<"Masukan Umur = ";
  20.     cin>>user[posisi].umur;
  21. }
  22.  
  23.  
  24. void sorting_name_asc(int posisi){
  25.     int huruf1, huruf2;
  26.     for(int a=0; a<posisi; a++){
  27.         for(int b=a+1; b<posisi; b++){
  28.  
  29.             huruf1 = int(user[a].nama[0]);
  30.             huruf2 = int(user[b].nama[0]);
  31.  
  32.             if(huruf1 < 97)
  33.                 huruf1 = huruf1 + 32;
  34.             if(huruf2 < 97)
  35.                 huruf2 = huruf2 + 32;
  36.  
  37.             if(huruf1 > huruf2 ){
  38.                     strcpy(temp.nama, user[a].nama);
  39.                     temp.umur = user[a].umur;
  40.  
  41.                     strcpy(user[a].nama, user[b].nama);
  42.                     user[a].umur = user[b].umur;
  43.  
  44.                     strcpy(user[b].nama, temp.nama);
  45.                     user[b].umur = temp.umur;
  46.             }
  47.             else if(huruf1 == huruf2 ){
  48.                 int arr = 0;
  49.                 while(true){
  50.  
  51.                 huruf1 = int(user[a].nama[arr]);
  52.                 huruf2 = int(user[b].nama[arr]);
  53.                 if(huruf1 < 97)
  54.                     huruf1 = huruf1 + 32;
  55.                 if(huruf2 < 97)
  56.                     huruf2 = huruf2 + 32;
  57.  
  58.                     if(huruf1 > huruf2){
  59.                         strcpy(temp.nama, user[a].nama);
  60.                         temp.umur = user[a].umur;
  61.  
  62.                         strcpy(user[a].nama, user[b].nama);
  63.                         user[a].umur = user[b].umur;
  64.  
  65.                         strcpy(user[b].nama, temp.nama);
  66.                         user[b].umur = temp.umur;
  67.                         break;
  68.                     }
  69.                     if(huruf1 < huruf2)
  70.                         break;
  71.                     arr++;
  72.                 }
  73.             }
  74.  
  75.             if(b == posisi-1){
  76.                 break;
  77.             }
  78.         }
  79.     }
  80. }
  81.  
  82. void sorting_name_desc(int posisi){
  83.     int huruf1, huruf2;
  84.     for(int a=0; a<posisi; a++){
  85.         for(int b=a+1; b<posisi; b++){
  86.  
  87.             huruf1 = int(user[a].nama[0]);
  88.             huruf2 = int(user[b].nama[0]);
  89.             if(huruf1 < 97)
  90.                 huruf1 = huruf1 + 32;
  91.             if(huruf2 < 97)
  92.                 huruf2 = huruf2 + 32;
  93.  
  94.             if(huruf1 < huruf2 ){
  95.                     strcpy(temp.nama, user[a].nama);
  96.                     temp.umur = user[a].umur;
  97.  
  98.                     strcpy(user[a].nama, user[b].nama);
  99.                     user[a].umur = user[b].umur;
  100.  
  101.                     strcpy(user[b].nama, temp.nama);
  102.                     user[b].umur = temp.umur;
  103.             }
  104.  
  105.             else if(huruf1 == huruf2){
  106.                 int arr = 0;
  107.                 while(true){
  108.                     huruf1 = int(user[a].nama[arr]);
  109.                     huruf2 = int(user[b].nama[arr]);
  110.                     if(huruf1 < 97)
  111.                         huruf1 = huruf1 + 32;
  112.                     if(huruf2 < 97)
  113.                         huruf2 = huruf2 + 32;
  114.  
  115.                     if(huruf1 < huruf2){
  116.                         strcpy(temp.nama, user[a].nama);
  117.                         temp.umur = user[a].umur;
  118.  
  119.                         strcpy(user[a].nama, user[b].nama);
  120.                         user[a].umur = user[b].umur;
  121.  
  122.                         strcpy(user[b].nama, temp.nama);
  123.                         user[b].umur = temp.umur;
  124.                         break;
  125.                     }
  126.                     if(huruf1 > huruf2)
  127.                         break;
  128.                     arr++;
  129.                 }
  130.             }
  131.         }
  132.     }
  133. }
  134.  
  135. void search_by_name(int posisi){
  136.     char nama[20];
  137.     bool cek, sub_cek;
  138.     int cari, sub_cari, huruf1, huruf2;
  139.     int ketemu = 0;
  140.     cin.ignore();
  141.     cout<<"Masukan Nama yang ingin Dicari : ";
  142.     cin.getline(nama, 20);
  143.     for(int x = 0; x<posisi; x++){
  144.         cek = true;
  145.         cari = 0;
  146.  
  147.         while(nama[cari]!='\0'){
  148.             huruf1 = int(user[x].nama[cari]);
  149.             huruf2 = int(nama[cari]);
  150.             if(huruf1 < 97)
  151.                 huruf1 = huruf1 + 32;
  152.             if(huruf2 < 97)
  153.                 huruf2 = huruf2 + 32;
  154.  
  155.             if(user[x].nama[cari] != nama[cari] || huruf1 != huruf2)
  156.                 cek = false;
  157.             cari++;
  158.         }
  159.  
  160.         if(!cek){
  161.             bool finded = false;
  162.             sub_cek = false;
  163.             cari = 0;
  164.             sub_cari = 0;
  165.  
  166.             huruf1 = int(user[x].nama[sub_cari]);
  167.             huruf2 = int(nama[cari]);
  168.  
  169.             if(huruf1 < 97)
  170.                 huruf1 = huruf1 + 32;
  171.             if(huruf2 < 97)
  172.                 huruf2 = huruf2 + 32;
  173.  
  174.             while(user[x].nama[sub_cari]!='\0'){
  175.                 huruf1 = int(user[x].nama[sub_cari]);
  176.                 huruf2 = int(nama[cari]);
  177.                 if(huruf1 < 97)
  178.                     huruf1 = huruf1 + 32;
  179.                 if(huruf2 < 97)
  180.                     huruf2 = huruf2 + 32;
  181.                 if(user[x].nama[sub_cari] == nama[cari] || huruf1 == huruf2){
  182.                     while(nama[cari]!='\0'){
  183.                         huruf1 = int(user[x].nama[sub_cari]);
  184.                         huruf2 = int(nama[cari]);
  185.                         if(huruf1 < 97)
  186.                             huruf1 = huruf1 + 32;
  187.                         if(huruf2 < 97)
  188.                             huruf2 = huruf2 + 32;
  189.  
  190.                         if(user[x].nama[sub_cari] != nama[cari] || huruf1 != huruf2){
  191.                             finded = false;
  192.                             break;
  193.                         }
  194.                         else
  195.                             finded = true;
  196.                         cari++;
  197.                         sub_cari++;
  198.                     }
  199.                     if(finded){
  200.                         sub_cek = true;
  201.                     }
  202.                 }
  203.                 if(!sub_cek)
  204.                     sub_cari++;
  205.                 else
  206.                     break;
  207.             }
  208.         }
  209.  
  210.         if(cek || sub_cek){
  211.             cout<<"Nama = "<<user[x].nama<<endl;
  212.             cout<<"Umur = "<<user[x].umur<<endl;
  213.             cout<<endl<<endl;
  214.             ketemu++;
  215.         }
  216.         if(ketemu == 0 && x == posisi){
  217.             cout<<"Data Tidak Ditemukan"<<endl;
  218.         }
  219.     }
  220. }
  221.  
  222. void view_data(int posisi){
  223.     for(int b = 0; b<posisi; b++){
  224.         cout<<"Nama = "<<user[b].nama<<endl;
  225.         cout<<"Umur = "<<user[b].umur<<endl;
  226.     }
  227. }
  228.  
  229. int main(){
  230.     int posisi = 0, pil;
  231.     bool ulang;
  232.     do{
  233.         ulang = true;
  234.         cout<<"1. Input The Data "<<endl;
  235.         cout<<"2. Ascending Sorting"<<endl;
  236.         cout<<"3. Descending Sorting"<<endl;
  237.         cout<<"4. View The Data"<<endl;
  238.         cout<<"5. Searching"<<endl;
  239.         cout<<"6. End of Program"<<endl;
  240.         cout<<"Masukan Pilihan Anda = ";
  241.         cin>>pil;
  242.         switch(pil){
  243.             case 1:
  244.                 input_data(posisi);
  245.                 posisi++;
  246.                 break;
  247.             case 2:
  248.                 sorting_name_asc(posisi);
  249.                 break;
  250.             case 3:
  251.                 sorting_name_desc(posisi);
  252.                 break;
  253.             case 4:
  254.                 view_data(posisi);
  255.                 break;
  256.             case 5:
  257.                 search_by_name(posisi);
  258.                 break;
  259.             case 6:
  260.                 ulang = false;
  261.                 break;
  262.             default:
  263.                 cout<<"Pilihan Tidak ada"<<endl;
  264.                 break;
  265.         }
  266.  
  267.         system("PAUSE");
  268.         system("CLS");
  269.     }while(ulang);
  270. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement