Advertisement
sonprao

Bài nộp thực hành OOP

Sep 25th, 2019
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.58 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define FOR(i,a,b) for(i=a;i<=b;i++)
  4. #define FOD(i,a,b) for(i=a;i>=b;i--)
  5. int n;
  6. /*
  7. █▀▀▄░░░░░░░░░░░▄▀▀█
  8. ░█░░░▀▄░▄▄▄▄▄░▄▀░░░█
  9. ░░▀▄░░░▀░░░░░▀░░░▄▀
  10. ░░░░▌░▄▄░░░▄▄░▐▀▀
  11. ░░░▐░░█▄░░░▄█░░▌▄▄▀▀▀▀█
  12. ░░░▌▄▄▀▀░▄░▀▀▄▄▐░░░░░░█
  13. ▄▀▀▐▀▀░▄▄▄▄▄░▀▀▌▄▄▄░░░█
  14. █░░░▀▄░█░░░█░▄▀░░░░█▀▀▀
  15. ░▀▄░░▀░░▀▀▀░░▀░░░▄█▀
  16. ░░░█░░░░░░░░░░░▄▀▄░▀▄
  17. ░░░█░░░░░░░░░▄▀█░░█░░█
  18. ░░░█░░░░░░░░░░░█▄█░░▄▀
  19. ░░░█░░░░░░░░░░░████▀
  20. ░░░▀▄▄▀▀▄▄▀▀▄▄▄█▀
  21. https://codeforces.com/profile/minhson
  22. */
  23. bool Greater(int a, int b)
  24. {
  25.     return (a>b);
  26. }
  27. bool Lesser(int a, int b)
  28. {
  29.     return (a<b);
  30. }
  31. void input(int *a, int n)
  32. {
  33.     int i;
  34.     for(i=0;i<=n-1;i++)
  35.     {
  36.     cout<<"a["<<i<<"]=";
  37.     cin>>*(a+i);
  38.     }
  39.     return;
  40. }
  41. void output(int *a, int n)
  42. {
  43.     int i;
  44.     for(i=0;i<=n-1;i++) cout<<*(a+i)<<" ";
  45.     cout<<endl;
  46.     return;
  47. }
  48. void Insert(int *a, int *n)
  49. {
  50.     int k,val,i;
  51.     cout<<"Moi ban nhap vi tri can chen ";
  52.     cin>>k;
  53.     cout<<"Moi ban nhap gia tri can chen ";
  54.     cin>>val;
  55.     for(i=*n;i>=k-1;i--)
  56.         *(a+i+1)=*(a+i);
  57.     *(a+k-1)=val;
  58.     (*n)++;
  59.     output(a,*n);
  60.     return;
  61. }
  62. void del(int *a, int *n)
  63. {
  64.     int i,k;
  65.     cout<<"Moi ban nhap vi tri can xoa ";
  66.     cin>>k;
  67.     for(i=k-1;i<=(*n)-2;i++)
  68.     *(a+i)=*(a+i+1);
  69.     delete((a+*n-1));
  70.     (*n)--;
  71.     output(a,*n);
  72.     return;
  73. }
  74. void SWAP(int *a, int *b)
  75. {
  76.     int x=*a;
  77.     *a=*b;
  78.     *b=x;
  79. }
  80. void Mergesort(int *a, int l, int r ,int *b, bool (*cmp)(int,int))
  81. {
  82.     int i,j,k,m;
  83.     if (r!=l)
  84.     {
  85.         m=(r+l)/2;
  86.         Mergesort(a,l,m,b,cmp); // chia mảng cần xét thành 2 phần rồi Mergesort từng phần//
  87.         Mergesort(a,m+1,r,b,cmp);
  88.         for(i=m; i>=l;i--) *(b+i)=*(a+i);
  89.         for(j=m+1;j<=r;j++) *(b+r+m+1-j)=*(a+j);
  90.         // sau khi chạy xong 2 vòng for , mảng phụ B sẽ bao gồm 2 phần (l->m) và (m+1->r) , 1 phần tăng, 1 phần giảm
  91.         i++;
  92.         j--;
  93.         //Sau đây là phần Merge, gộp 2 phần của mảng B lại thành Mảng A
  94.         for(k=l;k<=r;k++) //
  95.          if (cmp(*(b+i),*(b+j)))
  96.             {*(a+k)=*(b+i); i++;}
  97.             else
  98.             {*(a+k)=*(b+j); j--;}
  99.     }
  100.     return;
  101. }
  102. int LinearSearch(int *a, int n, int val)
  103. {
  104.     int i;
  105.     for(i=0;i<=n-1;i++)
  106.     if (a[i]==val) { cout<<"a["<<i<<"]="<<*(a+i)<<endl; return 1;}
  107.     cout<<"Khong tim thay gia tri "<<val<<" trong mang"<<endl;
  108.     return 0;
  109. }
  110. void update(int *a, int n)
  111. {
  112.     int k, val;
  113.     cin >> k;
  114.     cin >> val;
  115.     *(a + k) = val;
  116.     output(a,n);
  117. }
  118. int main(){
  119.     cout<<"Moi ban nhap so phan tu cua mang: ";
  120.     cin>>n;
  121.     int *a,*b,k,val;
  122.     a=new int [n];
  123.     b=new int [n];
  124.     input(a,n);
  125.     cout<<endl;
  126.     cout<<"Moi ban nhap gia tri can tim ";
  127.     cin>>val;
  128.     cout<<endl;
  129.     LinearSearch(a,n,val);
  130.     cout<<endl;
  131.     cout<<"Mang sau khi sap xep Mergesort ";
  132.     Mergesort(a,0,n-1,b,Lesser);
  133.     output(a,n);
  134.     cout<<endl;
  135.     Insert(a,&n);
  136.     cout<<endl;
  137.     del(a,&n);
  138.     return 0;
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement